Implement localisation for main menu options (menu-ui-handler) & add french locale

This commit is contained in:
Edralo 2024-04-25 19:38:33 +02:00 committed by Samuel H
parent daba4e9482
commit 4cfae4703c
6 changed files with 116 additions and 13 deletions

View File

@ -0,0 +1,23 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const menuUiHandler: SimpleTranslationEntries = {
"GAME_SETTINGS": 'Game Settings',
"ACHIEVEMENTS": "Achievements",
"STATS": "Stats",
"VOUCHERS": "Vouchers",
"EGG_LIST": "Egg List",
"EGG_GACHA": "Egg Gacha",
"MANAGE_DATA": "Manage Data",
"COMMUNITY": "Community",
"RETURN_TO_TITLE": "Return To Title",
"LOG_OUT": "Log Out",
"slot": "Slot {{slotNumber}}",
"importSession": "Import Session",
"importSlotSelect": "Select a slot to import to.",
"exportSession": "Export Session",
"exportSlotSelect": "Select a slot to export from.",
"importData": "Import Data",
"exportData": "Export Data",
"cancel": "Cancel",
"losingProgressionWarning": "You will lose any progress since the beginning of the battle. Proceed?"
} as const;

View File

@ -0,0 +1,23 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const menuUiHandler: SimpleTranslationEntries = {
"GAME_SETTINGS": 'Game Settings',
"ACHIEVEMENTS": "Achievements",
"STATS": "Stats",
"VOUCHERS": "Vouchers",
"EGG_LIST": "Egg List",
"EGG_GACHA": "Egg Gacha",
"MANAGE_DATA": "Manage Data",
"COMMUNITY": "Community",
"RETURN_TO_TITLE": "Return To Title",
"LOG_OUT": "Log Out",
"slot": "Slot {{slotNumber}}",
"importSession": "Import Session",
"importSlotSelect": "Select a slot to import to.",
"exportSession": "Export Session",
"exportSlotSelect": "Select a slot to export from.",
"importData": "Import Data",
"exportData": "Export Data",
"cancel": "Cancel",
"losingProgressionWarning": "You will lose any progress since the beginning of the battle. Proceed?"
} as const;

View File

@ -0,0 +1,23 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const menuUiHandler: SimpleTranslationEntries = {
"GAME_SETTINGS": 'Options',
"ACHIEVEMENTS": "Succès",
"STATS": "Statistiques",
"VOUCHERS": "Coupons",
"EGG_LIST": "Liste des œufs",
"EGG_GACHA": "Gacha-œufs",
"MANAGE_DATA": "Gestion données",
"COMMUNITY": "Communauté",
"RETURN_TO_TITLE": "Écran titre",
"LOG_OUT": "Se déconnecter",
"slot": "Emplacement {{slotNumber}}",
"importSession": "Importer session",
"importSlotSelect": "Sélectionnez l'emplacement depuis lequel importer.",
"exportSession": "Exporter session",
"exportSlotSelect": "Sélectionnez l'emplacement vers lequel exporter.",
"importData": "Importer données",
"exportData": "Exporter données",
"cancel": "Retour",
"losingProgressionWarning": "Vous allez perdre votre progression depuis le début du combat. Continuer?"
} as const;

View File

@ -0,0 +1,23 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const menuUiHandler: SimpleTranslationEntries = {
"GAME_SETTINGS": 'Game Settings',
"ACHIEVEMENTS": "Achievements",
"STATS": "Stats",
"VOUCHERS": "Vouchers",
"EGG_LIST": "Egg List",
"EGG_GACHA": "Egg Gacha",
"MANAGE_DATA": "Manage Data",
"COMMUNITY": "Community",
"RETURN_TO_TITLE": "Return To Title",
"LOG_OUT": "Log Out",
"slot": "Slot {{slotNumber}}",
"importSession": "Import Session",
"importSlotSelect": "Select a slot to import to.",
"exportSession": "Export Session",
"exportSlotSelect": "Select a slot to export from.",
"importData": "Import Data",
"exportData": "Export Data",
"cancel": "Cancel",
"losingProgressionWarning": "You will lose any progress since the beginning of the battle. Proceed?"
} as const;

View File

@ -4,6 +4,11 @@ import { menu as esMenu } from '../locales/es/menu';
import { menu as itMenu } from '../locales/it/menu'; import { menu as itMenu } from '../locales/it/menu';
import { menu as frMenu } from '../locales/fr/menu'; import { menu as frMenu } from '../locales/fr/menu';
import { menuUiHandler as enMenuUiHandler } from '../locales/en/menu-ui-handler.js';
import { menuUiHandler as esMenuUiHandler } from '../locales/es/menu-ui-handler.js';
import { menuUiHandler as frMenuUiHandler } from '../locales/fr/menu-ui-handler.js';
import { menuUiHandler as itMenuUiHandler } from '../locales/it/menu-ui-handler.js';
import { move as enMove } from '../locales/en/move'; import { move as enMove } from '../locales/en/move';
import { move as esMove } from '../locales/es/move'; import { move as esMove } from '../locales/es/move';
import { move as frMove } from '../locales/fr/move'; import { move as frMove } from '../locales/fr/move';
@ -86,6 +91,7 @@ export function initI18n(): void {
resources: { resources: {
en: { en: {
menu: enMenu, menu: enMenu,
menuUiHandler: enMenuUiHandler,
move: enMove, move: enMove,
ability: enAbility, ability: enAbility,
pokeball: enPokeball, pokeball: enPokeball,
@ -95,6 +101,7 @@ export function initI18n(): void {
}, },
es: { es: {
menu: esMenu, menu: esMenu,
menuUiHandler: esMenuUiHandler,
move: esMove, move: esMove,
ability: esAbility, ability: esAbility,
pokeball: esPokeball, pokeball: esPokeball,
@ -104,6 +111,7 @@ export function initI18n(): void {
}, },
fr: { fr: {
menu: frMenu, menu: frMenu,
menuUiHandler: frMenuUiHandler,
move: frMove, move: frMove,
ability: frAbility, ability: frAbility,
pokeball: frPokeball, pokeball: frPokeball,
@ -113,6 +121,7 @@ export function initI18n(): void {
}, },
it: { it: {
menu: itMenu, menu: itMenu,
menuUiHandler: itMenuUiHandler,
pokemonStat: itPokemonStat, pokemonStat: itPokemonStat,
}, },
}, },
@ -124,6 +133,7 @@ declare module 'i18next' {
interface CustomTypeOptions { interface CustomTypeOptions {
resources: { resources: {
menu: typeof enMenu; menu: typeof enMenu;
menuUiHandler: typeof enMenuUiHandler;
move: typeof enMove; move: typeof enMove;
ability: typeof enAbility; ability: typeof enAbility;
pokeball: typeof enPokeball; pokeball: typeof enPokeball;

View File

@ -8,6 +8,7 @@ import { GameDataType } from "../system/game-data";
import { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui-handler"; import { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui-handler";
import { Tutorial, handleTutorial } from "../tutorial"; import { Tutorial, handleTutorial } from "../tutorial";
import { updateUserInfo } from "../account"; import { updateUserInfo } from "../account";
import i18next from '../plugins/i18n';
export enum MenuOptions { export enum MenuOptions {
GAME_SETTINGS, GAME_SETTINGS,
@ -62,7 +63,7 @@ export default class MenuUiHandler extends MessageUiHandler {
this.menuContainer.add(this.menuBg); this.menuContainer.add(this.menuBg);
this.optionSelectText = addTextObject(this.scene, 0, 0, this.menuOptions.map(o => Utils.toReadableString(MenuOptions[o])).join('\n'), TextStyle.WINDOW, { maxLines: this.menuOptions.length }); this.optionSelectText = addTextObject(this.scene, 0, 0, this.menuOptions.map(o => `${i18next.t(`menuUiHandler:${MenuOptions[o]}`)}`).join('\n'), TextStyle.WINDOW, { maxLines: this.menuOptions.length });
this.optionSelectText.setPositionRelative(this.menuBg, 14, 6); this.optionSelectText.setPositionRelative(this.menuBg, 14, 6);
this.optionSelectText.setLineSpacing(12); this.optionSelectText.setLineSpacing(12);
this.menuContainer.add(this.optionSelectText); this.menuContainer.add(this.optionSelectText);
@ -94,7 +95,7 @@ export default class MenuUiHandler extends MessageUiHandler {
const config: OptionSelectConfig = { const config: OptionSelectConfig = {
options: new Array(3).fill(null).map((_, i) => i).filter(slotFilter).map(i => { options: new Array(3).fill(null).map((_, i) => i).filter(slotFilter).map(i => {
return { return {
label: `Slot ${i + 1}`, label: i18next.t('menuUiHandler:slot', {slotNumber: i+1}),
handler: () => { handler: () => {
callback(i); callback(i);
ui.revertMode(); ui.revertMode();
@ -103,7 +104,7 @@ export default class MenuUiHandler extends MessageUiHandler {
} }
}; };
}).concat([{ }).concat([{
label: 'Cancel', label: i18next.t('menuUiHandler:cancel'),
handler: () => { handler: () => {
ui.revertMode(); ui.revertMode();
ui.showText(null, 0); ui.showText(null, 0);
@ -118,16 +119,16 @@ export default class MenuUiHandler extends MessageUiHandler {
if (Utils.isLocal) { if (Utils.isLocal) {
manageDataOptions.push({ manageDataOptions.push({
label: 'Import Session', label: i18next.t("menuUiHandler:importSession"),
handler: () => { handler: () => {
confirmSlot('Select a slot to import to.', () => true, slotId => this.scene.gameData.importData(GameDataType.SESSION, slotId)); confirmSlot(i18next.t("menuUiHandler:importSlotSelect"), () => true, slotId => this.scene.gameData.importData(GameDataType.SESSION, slotId));
return true; return true;
}, },
keepOpen: true keepOpen: true
}); });
} }
manageDataOptions.push({ manageDataOptions.push({
label: 'Export Session', label: i18next.t("menuUiHandler:exportSession"),
handler: () => { handler: () => {
const dataSlots: integer[] = []; const dataSlots: integer[] = [];
Promise.all( Promise.all(
@ -138,7 +139,7 @@ export default class MenuUiHandler extends MessageUiHandler {
dataSlots.push(slotId); dataSlots.push(slotId);
}) })
})).then(() => { })).then(() => {
confirmSlot('Select a slot to export from.', confirmSlot(i18next.t("menuUiHandler:exportSlotSelect"),
i => dataSlots.indexOf(i) > -1, i => dataSlots.indexOf(i) > -1,
slotId => this.scene.gameData.tryExportData(GameDataType.SESSION, slotId)); slotId => this.scene.gameData.tryExportData(GameDataType.SESSION, slotId));
}); });
@ -148,7 +149,7 @@ export default class MenuUiHandler extends MessageUiHandler {
}); });
if (Utils.isLocal) { if (Utils.isLocal) {
manageDataOptions.push({ manageDataOptions.push({
label: 'Import Data', label: i18next.t("menuUiHandler:importData"),
handler: () => { handler: () => {
this.scene.gameData.importData(GameDataType.SYSTEM); this.scene.gameData.importData(GameDataType.SYSTEM);
return true; return true;
@ -158,7 +159,7 @@ export default class MenuUiHandler extends MessageUiHandler {
} }
manageDataOptions.push( manageDataOptions.push(
{ {
label: 'Export Data', label: i18next.t("menuUiHandler:exportData"),
handler: () => { handler: () => {
this.scene.gameData.tryExportData(GameDataType.SYSTEM); this.scene.gameData.tryExportData(GameDataType.SYSTEM);
return true; return true;
@ -166,7 +167,7 @@ export default class MenuUiHandler extends MessageUiHandler {
keepOpen: true keepOpen: true
}, },
{ {
label: 'Cancel', label: i18next.t('menuUiHandler:cancel'),
handler: () => { handler: () => {
this.scene.ui.revertMode(); this.scene.ui.revertMode();
return true; return true;
@ -205,7 +206,7 @@ export default class MenuUiHandler extends MessageUiHandler {
keepOpen: true keepOpen: true
}, },
{ {
label: 'Cancel', label: i18next.t('menuUiHandler:cancel'),
handler: () => { handler: () => {
this.scene.ui.revertMode(); this.scene.ui.revertMode();
return true; return true;
@ -295,7 +296,7 @@ export default class MenuUiHandler extends MessageUiHandler {
case MenuOptions.RETURN_TO_TITLE: case MenuOptions.RETURN_TO_TITLE:
if (this.scene.currentBattle) { if (this.scene.currentBattle) {
success = true; success = true;
ui.showText('You will lose any progress since the beginning of the battle. Proceed?', null, () => { ui.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => {
ui.setOverlayMode(Mode.CONFIRM, () => this.scene.reset(true), () => { ui.setOverlayMode(Mode.CONFIRM, () => this.scene.reset(true), () => {
ui.revertMode(); ui.revertMode();
ui.showText(null, 0); ui.showText(null, 0);
@ -315,7 +316,7 @@ export default class MenuUiHandler extends MessageUiHandler {
}); });
}; };
if (this.scene.currentBattle) { if (this.scene.currentBattle) {
ui.showText('You will lose any progress since the beginning of the battle. Proceed?', null, () => { ui.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => {
ui.setOverlayMode(Mode.CONFIRM, doLogout, () => { ui.setOverlayMode(Mode.CONFIRM, doLogout, () => {
ui.revertMode(); ui.revertMode();
ui.showText(null, 0); ui.showText(null, 0);