diff --git a/resources/lang/pt_BR.json b/resources/lang/pt-BR.json similarity index 99% rename from resources/lang/pt_BR.json rename to resources/lang/pt-BR.json index f058409fc..c615438e6 100644 --- a/resources/lang/pt_BR.json +++ b/resources/lang/pt-BR.json @@ -167,7 +167,7 @@ "en": "Brazilian Portuguese", "native": "Português brasileiro", "svg": "br", - "lang_code": "pt_BR" + "lang_code": "pt-BR" }, "game_mode": { "ffa": "Free for All", diff --git a/resources/lang/sv_SE.json b/resources/lang/sv-SE.json similarity index 99% rename from resources/lang/sv_SE.json rename to resources/lang/sv-SE.json index 4415ccc85..0c50034c5 100644 --- a/resources/lang/sv_SE.json +++ b/resources/lang/sv-SE.json @@ -3,7 +3,7 @@ "en": "Swedish", "native": "Svenska", "svg": "se", - "lang_code": "sv_SE" + "lang_code": "sv-SE" }, "common": { "close": "Stäng" diff --git a/resources/lang/zh_CN.json b/resources/lang/zh-CN.json similarity index 99% rename from resources/lang/zh_CN.json rename to resources/lang/zh-CN.json index 700a910e9..becaf5649 100644 --- a/resources/lang/zh_CN.json +++ b/resources/lang/zh-CN.json @@ -3,7 +3,7 @@ "en": "Chinese Simplified", "native": "简体中文", "svg": "cn", - "lang_code": "zh_CN" + "lang_code": "zh-CN" }, "common": { "close": "关闭" diff --git a/src/client/LangSelector.ts b/src/client/LangSelector.ts index 783ecdced..d65f3c4d1 100644 --- a/src/client/LangSelector.ts +++ b/src/client/LangSelector.ts @@ -21,14 +21,14 @@ import ja from "../../resources/lang/ja.json"; import ko from "../../resources/lang/ko.json"; import nl from "../../resources/lang/nl.json"; import pl from "../../resources/lang/pl.json"; -import pt_BR from "../../resources/lang/pt_BR.json"; +import pt_BR from "../../resources/lang/pt-BR.json"; import ru from "../../resources/lang/ru.json"; import sh from "../../resources/lang/sh.json"; -import sv_SE from "../../resources/lang/sv_SE.json"; +import sv_SE from "../../resources/lang/sv-SE.json"; import tp from "../../resources/lang/tp.json"; import tr from "../../resources/lang/tr.json"; import uk from "../../resources/lang/uk.json"; -import zh_CN from "../../resources/lang/zh_CN.json"; +import zh_CN from "../../resources/lang/zh-CN.json"; @customElement("lang-selector") export class LangSelector extends LitElement { @@ -55,7 +55,7 @@ export class LangSelector extends LitElement { ja, nl, pl, - pt_BR, + "pt-BR": pt_BR, ru, sh, tr, @@ -65,8 +65,8 @@ export class LangSelector extends LitElement { he, da, fi, - sv_SE, - zh_CN, + "sv-SE": sv_SE, + "zh-CN": zh_CN, ko, gl, }; @@ -93,8 +93,16 @@ export class LangSelector extends LitElement { private getClosestSupportedLang(lang: string): string { if (!lang) return "en"; if (lang in this.languageMap) return lang; - const base = lang.split("-")[0]; - if (base in this.languageMap) return base; + + const base = lang.slice(0, 2); + const candidates = Object.keys(this.languageMap).filter((key) => + key.startsWith(base), + ); + if (candidates.length > 0) { + candidates.sort((a, b) => b.length - a.length); // More specific first + return candidates[0]; + } + return "en"; }