This commit is contained in:
Adrian 2024-08-19 19:13:06 -04:00
parent ae2ab120dc
commit edd0643fb1
2 changed files with 78 additions and 138 deletions

View File

@ -79,6 +79,67 @@ export interface Setting {
isHidden?: () => boolean
}
type LanguageType = {
key:string|`${string}-${string}`;
label:string;
handler?:()=>{};
value?:string;
};
const languages: Array<LanguageType> = [
{
key:"en",
label: "English",
},
{
key:"es",
label: "Español",
},
{
key:"it",
label: "Italiano",
},
{
key:"fr",
label: "Français",
},
{
key:"de",
label: "Deutsch",
},
{
key:"pt-BR",
label: "Português (BR)",
},
{
key:"zh-CN",
label: "简体中文",
},
{
key:"zh-TW",
label: "繁體中文",
},
{
key:"ko",
label: "한국어",
},
{
key:"ko-KR",
label: "한국어",
},
{
key:"ja",
label: "日本語",
},
// {
// key:"ca-ES",
// label: "Català",
// },
];
// default is English
const currentLanguage = languages.find((locale) => i18next.resolvedLanguage! === locale.key)?.label ?? "English";
/**
* Setting Keys for existing settings
* to be used when trying to find or update Settings
@ -296,9 +357,12 @@ export const Setting: Array<Setting> = [
key: SettingKeys.Language,
label: i18next.t("settings:language"),
options: [
/**
* Update to current language or return default value.
*/
{
value: "English",
label: "English"
value: currentLanguage,
label: currentLanguage
},
{
value: "Change",
@ -764,56 +828,17 @@ export function setSetting(scene: BattleScene, setting: string, value: integer):
}
};
scene.ui.setOverlayMode(Mode.OPTION_SELECT, {
options: [
{
label: "English",
handler: () => changeLocaleHandler("en")
},
{
label: "Español",
handler: () => changeLocaleHandler("es")
},
{
label: "Italiano",
handler: () => changeLocaleHandler("it")
},
{
label: "Français",
handler: () => changeLocaleHandler("fr")
},
{
label: "Deutsch",
handler: () => changeLocaleHandler("de")
},
{
label: "Português (BR)",
handler: () => changeLocaleHandler("pt-BR")
},
{
label: "简体中文",
handler: () => changeLocaleHandler("zh-CN")
},
{
label: "繁體中文",
handler: () => changeLocaleHandler("zh-TW")
},
{
label: "한국어",
handler: () => changeLocaleHandler("ko")
},
{
label: "日本語",
handler: () => changeLocaleHandler("ja")
},
// {
// label: "Català",
// handler: () => changeLocaleHandler("ca-ES")
// },
{
label: i18next.t("settings:back"),
handler: () => cancelHandler()
options: [...languages.filter((locale,i,a) => {
// Remove language active and sames labels
if (currentLanguage !== locale.label && a.findIndex((t) => t.label === locale.label) === i) {
locale.handler = () => changeLocaleHandler(locale.key);
return locale;
}
],
}),
{
label: i18next.t("settings:back"),
handler: () => cancelHandler(),
}],
maxOptions: 7
});
return false;

View File

@ -2,11 +2,11 @@ import BattleScene from "../../battle-scene";
import { Mode } from "../ui";
"#app/inputs-controller.js";
import AbstractSettingsUiHandler from "./abstract-settings-ui-handler";
import { SettingKeys, SettingType } from "#app/system/settings/settings";
import { SettingType } from "#app/system/settings/settings";
export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler {
/**
* Creates an instance of SettingsGamepadUiHandler.
* Creates an instance of SettingsDisplayUiHandler.
*
* @param scene - The BattleScene instance.
* @param mode - The UI mode, optional.
@ -14,91 +14,6 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler
constructor(scene: BattleScene, mode: Mode | null = null) {
super(scene, SettingType.DISPLAY, mode);
this.title = "Display";
/**
* Update to current language from default value.
* - default value is 'English'
*/
const languageIndex = this.settings.findIndex(s => s.key === SettingKeys.Language);
if (languageIndex >= 0) {
const currentLocale = localStorage.getItem("prLang");
switch (currentLocale) {
case "en":
this.settings[languageIndex].options[0] = {
value: "English",
label: "English",
};
break;
case "es":
this.settings[languageIndex].options[0] = {
value: "Español",
label: "Español",
};
break;
case "it":
this.settings[languageIndex].options[0] = {
value: "Italiano",
label: "Italiano",
};
break;
case "fr":
this.settings[languageIndex].options[0] = {
value: "Français",
label: "Français",
};
break;
case "de":
this.settings[languageIndex].options[0] = {
value: "Deutsch",
label: "Deutsch",
};
break;
case "pt-BR":
this.settings[languageIndex].options[0] = {
value: "Português (BR)",
label: "Português (BR)",
};
break;
case "zh-CN":
this.settings[languageIndex].options[0] = {
value: "简体中文",
label: "简体中文",
};
break;
case "zh-TW":
this.settings[languageIndex].options[0] = {
value: "繁體中文",
label: "繁體中文",
};
break;
case "ko":
case "ko-KR":
this.settings[languageIndex].options[0] = {
value: "한국어",
label: "한국어",
};
break;
case "ja":
this.settings[languageIndex].options[0] = {
value: "日本語",
label: "日本語",
};
break;
case "ca-ES":
this.settings[languageIndex].options[0] = {
value: "Català",
label: "Català",
};
break;
default:
this.settings[languageIndex].options[0] = {
value: "English",
label: "English",
};
break;
}
}
this.localStorageKey = "settings";
}
}