[i18n] Change i18n keys to be camel case Part 4 (#6290)

* change run-history

* change menu

* change settings

* change splash texts

* Change trainer classes

* change trainer names

* Change trainer titles

* fix trainer config comments and `setTitle()`

* change challenges

* update challenge 2

* change pokedex ui handler

* Update locales submodule
This commit is contained in:
fabske0 2025-08-19 22:17:23 +02:00 committed by GitHub
parent dd03887d05
commit effa45228e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 59 additions and 61 deletions

@ -1 +1 @@
Subproject commit 17b353bd5752b7ce5c9e7051a17ec310e0b99c1e Subproject commit 813e5a34739100efd5936bc8a63301dfe451ff8d

View File

@ -674,10 +674,10 @@ export class SingleGenerationChallenge extends Challenge {
getDescription(overrideValue: number = this.value): string { getDescription(overrideValue: number = this.value): string {
if (overrideValue === 0) { if (overrideValue === 0) {
return i18next.t("challenges:singleGeneration.desc_default"); return i18next.t("challenges:singleGeneration.descDefault");
} }
return i18next.t("challenges:singleGeneration.desc", { return i18next.t("challenges:singleGeneration.desc", {
gen: i18next.t(`challenges:singleGeneration.gen_${overrideValue}`), gen: i18next.t(`challenges:singleGeneration.gen.${overrideValue}`),
}); });
} }
@ -758,7 +758,7 @@ export class SingleTypeChallenge extends Challenge {
getDescription(overrideValue: number = this.value): string { getDescription(overrideValue: number = this.value): string {
const type = i18next.t(`pokemonInfo:type.${toCamelCase(PokemonType[overrideValue - 1])}`); const type = i18next.t(`pokemonInfo:type.${toCamelCase(PokemonType[overrideValue - 1])}`);
const typeColor = `[color=${TypeColor[PokemonType[overrideValue - 1]]}][shadow=${TypeShadow[PokemonType[this.value - 1]]}]${type}[/shadow][/color]`; const typeColor = `[color=${TypeColor[PokemonType[overrideValue - 1]]}][shadow=${TypeShadow[PokemonType[this.value - 1]]}]${type}[/shadow][/color]`;
const defaultDesc = i18next.t("challenges:singleType.desc_default"); const defaultDesc = i18next.t("challenges:singleType.descDefault");
const typeDesc = i18next.t("challenges:singleType.desc", { const typeDesc = i18next.t("challenges:singleType.desc", {
type: typeColor, type: typeColor,
}); });

View File

@ -514,7 +514,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = MysteryEncounterBuilde
function getTrainerConfigForWave(waveIndex: number) { function getTrainerConfigForWave(waveIndex: number) {
// Bug type superfan trainer config // Bug type superfan trainer config
const config = trainerConfigs[TrainerType.BUG_TYPE_SUPERFAN].clone(); const config = trainerConfigs[TrainerType.BUG_TYPE_SUPERFAN].clone();
config.name = i18next.t("trainerNames:bug_type_superfan"); config.name = i18next.t("trainerNames:bugTypeSuperfan");
let pool3Copy = POOL_3_POKEMON.slice(0); let pool3Copy = POOL_3_POKEMON.slice(0);
pool3Copy = randSeedShuffle(pool3Copy); pool3Copy = randSeedShuffle(pool3Copy);

View File

@ -33,7 +33,7 @@ import i18next from "i18next";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/theExpertPokemonBreeder"; const namespace = "mysteryEncounters/theExpertPokemonBreeder";
const trainerNameKey = "trainerNames:expert_pokemon_breeder"; const trainerNameKey = "trainerNames:expertPokemonBreeder";
const FIRST_STAGE_EVOLUTION_WAVE = 45; const FIRST_STAGE_EVOLUTION_WAVE = 45;
const SECOND_STAGE_EVOLUTION_WAVE = 60; const SECOND_STAGE_EVOLUTION_WAVE = 60;

View File

@ -100,7 +100,7 @@ const commonSplashMessages = [
"liveWoChienReaction", "liveWoChienReaction",
"itsAFeatureNotABug", "itsAFeatureNotABug",
"theEggsAreNotForEating", "theEggsAreNotForEating",
"7.8outOf10TooManyWaterBiomes", "tooManyWaterBiomes",
"butNothingHappened", "butNothingHappened",
"thePowerOfScienceIsAmazing", "thePowerOfScienceIsAmazing",
"freeToPlay", "freeToPlay",
@ -152,7 +152,7 @@ const commonSplashMessages = [
"insertTextHere", "insertTextHere",
"endingEndlessNotFound", "endingEndlessNotFound",
"iLikeMyEggsVouchered", "iLikeMyEggsVouchered",
"YOU", "you",
"noAddedSugar", "noAddedSugar",
"notSponsored", "notSponsored",
"notRated", "notRated",

View File

@ -43,7 +43,7 @@ import type {
} from "#types/trainer-funcs"; } from "#types/trainer-funcs";
import { coerceArray, isNullOrUndefined, randSeedInt, randSeedIntRange, randSeedItem } from "#utils/common"; import { coerceArray, isNullOrUndefined, randSeedInt, randSeedIntRange, randSeedItem } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { toSnakeCase, toTitleCase } from "#utils/strings"; import { toCamelCase, toTitleCase } from "#utils/strings";
import i18next from "i18next"; import i18next from "i18next";
/** Minimum BST for Pokemon generated onto the Elite Four's teams */ /** Minimum BST for Pokemon generated onto the Elite Four's teams */
@ -193,8 +193,7 @@ export class TrainerConfig {
initI18n(); initI18n();
} }
// Make the title lowercase and replace spaces with underscores title = toCamelCase(title);
title = title.toLowerCase().replace(/\s/g, "_");
// Get the title from the i18n file // Get the title from the i18n file
this.title = i18next.t(`titles:${title}`); this.title = i18next.t(`titles:${title}`);
@ -288,7 +287,7 @@ export class TrainerConfig {
initI18n(); initI18n();
} }
// Set the localized name for the female rival. // Set the localized name for the female rival.
this.nameFemale = i18next.t("trainerNames:rival_female"); this.nameFemale = i18next.t("trainerNames:rivalFemale");
} else { } else {
// Otherwise, assign the provided female name. // Otherwise, assign the provided female name.
this.nameFemale = nameFemale!; // TODO: is this bang correct? this.nameFemale = nameFemale!; // TODO: is this bang correct?
@ -365,8 +364,7 @@ export class TrainerConfig {
initI18n(); initI18n();
} }
// Make the title lowercase and replace spaces with underscores titleDouble = toCamelCase(titleDouble);
titleDouble = titleDouble.toLowerCase().replace(/\s/g, "_");
// Get the title from the i18n file // Get the title from the i18n file
this.titleDouble = i18next.t(`titles:${titleDouble}`); this.titleDouble = i18next.t(`titles:${titleDouble}`);
@ -552,7 +550,7 @@ export class TrainerConfig {
this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(coerceArray(speciesPool))); this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(coerceArray(speciesPool)));
}); });
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); const nameForCall = toCamelCase(this.name);
this.name = i18next.t(`trainerNames:${nameForCall}`); this.name = i18next.t(`trainerNames:${nameForCall}`);
this.setHasVoucher(false); this.setHasVoucher(false);
this.setTitle(title); this.setTitle(title);
@ -577,7 +575,7 @@ export class TrainerConfig {
this.setPartyTemplates(trainerPartyTemplates.ELITE_FOUR); this.setPartyTemplates(trainerPartyTemplates.ELITE_FOUR);
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); const nameForCall = toCamelCase(this.name);
this.name = i18next.t(`trainerNames:${nameForCall}`); this.name = i18next.t(`trainerNames:${nameForCall}`);
this.setMoneyMultiplier(2); this.setMoneyMultiplier(2);
this.setBoss(); this.setBoss();
@ -618,7 +616,7 @@ export class TrainerConfig {
this.setSpeciesFilter(p => p.isOfType(specialtyType)); this.setSpeciesFilter(p => p.isOfType(specialtyType));
this.setSpecialtyType(specialtyType); this.setSpecialtyType(specialtyType);
} }
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); const nameForCall = toCamelCase(this.name);
this.name = i18next.t(`trainerNames:${nameForCall}`); this.name = i18next.t(`trainerNames:${nameForCall}`);
this.setTitle(title); this.setTitle(title);
this.setMoneyMultiplier(2.5); this.setMoneyMultiplier(2.5);
@ -665,14 +663,14 @@ export class TrainerConfig {
this.setSpeciesFilter(p => p.isOfType(specialtyType)); this.setSpeciesFilter(p => p.isOfType(specialtyType));
this.setSpecialtyType(specialtyType); this.setSpecialtyType(specialtyType);
// Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. // Localize the trainer's name by converting it to camel case.
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); const nameForCall = toCamelCase(this.name);
this.name = i18next.t(`trainerNames:${nameForCall}`); this.name = i18next.t(`trainerNames:${nameForCall}`);
// Set the title to "gym_leader". (this is the key in the i18n file) // Set the title to "gymLeader". (this is the key in the i18n file)
this.setTitle("gym_leader"); this.setTitle("gymLeader");
if (!isMale) { if (!isMale) {
this.setTitle("gym_leader_female"); this.setTitle("gymLeaderFemale");
} }
// Configure various properties for the Gym Leader. // Configure various properties for the Gym Leader.
@ -726,14 +724,14 @@ export class TrainerConfig {
this.setSpeciesFilter(p => p.baseTotal >= ELITE_FOUR_MINIMUM_BST); this.setSpeciesFilter(p => p.baseTotal >= ELITE_FOUR_MINIMUM_BST);
} }
// Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. // Localize the trainer's name by converting it to camel case.
const nameForCall = toSnakeCase(this.name); const nameForCall = toCamelCase(this.name);
this.name = i18next.t(`trainerNames:${nameForCall}`); this.name = i18next.t(`trainerNames:${nameForCall}`);
// Set the title to "elite_four". (this is the key in the i18n file) // Set the title to "elite_four". (this is the key in the i18n file)
this.setTitle("elite_four"); this.setTitle("eliteFour");
if (!isMale) { if (!isMale) {
this.setTitle("elite_four_female"); this.setTitle("eliteFourFemale");
} }
// Configure various properties for the Elite Four member. // Configure various properties for the Elite Four member.
@ -763,14 +761,14 @@ export class TrainerConfig {
// Set the party templates for the Champion. // Set the party templates for the Champion.
this.setPartyTemplates(trainerPartyTemplates.CHAMPION); this.setPartyTemplates(trainerPartyTemplates.CHAMPION);
// Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. // Localize the trainer's name by converting it to camel case.
const nameForCall = this.name.toLowerCase().replace(/\s/g, "_"); const nameForCall = toCamelCase(this.name);
this.name = i18next.t(`trainerNames:${nameForCall}`); this.name = i18next.t(`trainerNames:${nameForCall}`);
// Set the title to "champion". (this is the key in the i18n file) // Set the title to "champion". (this is the key in the i18n file)
this.setTitle("champion"); this.setTitle("champion");
if (!isMale) { if (!isMale) {
this.setTitle("champion_female"); this.setTitle("championFemale");
} }
// Configure various properties for the Champion. // Configure various properties for the Champion.
@ -794,7 +792,7 @@ export class TrainerConfig {
if (!getIsInitialized()) { if (!getIsInitialized()) {
initI18n(); initI18n();
} }
this.name = i18next.t(`trainerNames:${name.toLowerCase().replace(/\s/g, "_")}`); this.name = i18next.t(`trainerNames:${toCamelCase(name)}`);
return this; return this;
} }
@ -830,9 +828,9 @@ export class TrainerConfig {
initI18n(); initI18n();
} }
// Check if the female version exists in the i18n file // Check if the female version exists in the i18n file
if (i18next.exists(`trainerClasses:${this.name.toLowerCase()}`)) { if (i18next.exists(`trainerClasses:${toCamelCase(this.name)}Female`)) {
// If it does, return // If it does, return
return ret + "_female"; return ret + "Female";
} }
} }
} }

View File

@ -23,7 +23,7 @@ import {
} from "#trainers/trainer-party-template"; } from "#trainers/trainer-party-template";
import { randSeedInt, randSeedItem, randSeedWeightedItem } from "#utils/common"; import { randSeedInt, randSeedItem, randSeedWeightedItem } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { toSnakeCase } from "#utils/strings"; import { toCamelCase } from "#utils/strings";
import i18next from "i18next"; import i18next from "i18next";
export class Trainer extends Phaser.GameObjects.Container { export class Trainer extends Phaser.GameObjects.Container {
@ -170,7 +170,7 @@ export class Trainer extends Phaser.GameObjects.Container {
const evilTeamTitles = ["grunt"]; const evilTeamTitles = ["grunt"];
if (this.name === "" && evilTeamTitles.some(t => name.toLocaleLowerCase().includes(t))) { if (this.name === "" && evilTeamTitles.some(t => name.toLocaleLowerCase().includes(t))) {
// This is a evil team grunt so we localize it by only using the "name" as the title // This is a evil team grunt so we localize it by only using the "name" as the title
title = i18next.t(`trainerClasses:${toSnakeCase(name)}`); title = i18next.t(`trainerClasses:${toCamelCase(name)}`);
console.log("Localized grunt name: " + title); console.log("Localized grunt name: " + title);
// Since grunts are not named we can just return the title // Since grunts are not named we can just return the title
return title; return title;
@ -187,7 +187,7 @@ export class Trainer extends Phaser.GameObjects.Container {
} }
// Get the localized trainer class name from the i18n file and set it as the title. // Get the localized trainer class name from the i18n file and set it as the title.
// This is used for trainer class names, not titles like "Elite Four, Champion, etc." // This is used for trainer class names, not titles like "Elite Four, Champion, etc."
title = i18next.t(`trainerClasses:${toSnakeCase(name)}`); title = i18next.t(`trainerClasses:${toCamelCase(name)}`);
} }
// If no specific trainer slot is set. // If no specific trainer slot is set.
@ -208,7 +208,7 @@ export class Trainer extends Phaser.GameObjects.Container {
if (this.config.titleDouble && this.variant === TrainerVariant.DOUBLE && !this.config.doubleOnly) { if (this.config.titleDouble && this.variant === TrainerVariant.DOUBLE && !this.config.doubleOnly) {
title = this.config.titleDouble; title = this.config.titleDouble;
name = i18next.t(`trainerNames:${toSnakeCase(this.config.nameDouble)}`); name = i18next.t(`trainerNames:${toCamelCase(this.config.nameDouble)}`);
} }
console.log(title ? `${title} ${name}` : name); console.log(title ? `${title} ${name}` : name);

View File

@ -197,35 +197,35 @@ export const Setting: Array<Setting> = [
options: [ options: [
{ {
value: "1", value: "1",
label: i18next.t("settings:gameSpeed1x"), label: i18next.t("settings:gameSpeed100x"),
}, },
{ {
value: "1.25", value: "1.25",
label: i18next.t("settings:gameSpeed1_25x"), label: i18next.t("settings:gameSpeed125x"),
}, },
{ {
value: "1.5", value: "1.5",
label: i18next.t("settings:gameSpeed1_5x"), label: i18next.t("settings:gameSpeed150x"),
}, },
{ {
value: "2", value: "2",
label: i18next.t("settings:gameSpeed2x"), label: i18next.t("settings:gameSpeed200x"),
}, },
{ {
value: "2.5", value: "2.5",
label: i18next.t("settings:gameSpeed2_5x"), label: i18next.t("settings:gameSpeed250x"),
}, },
{ {
value: "3", value: "3",
label: i18next.t("settings:gameSpeed3x"), label: i18next.t("settings:gameSpeed300x"),
}, },
{ {
value: "4", value: "4",
label: i18next.t("settings:gameSpeed4x"), label: i18next.t("settings:gameSpeed400x"),
}, },
{ {
value: "5", value: "5",
label: i18next.t("settings:gameSpeed5x"), label: i18next.t("settings:gameSpeed500x"),
}, },
], ],
default: 3, default: 3,
@ -566,7 +566,7 @@ export const Setting: Array<Setting> = [
}, },
{ {
value: "Back", value: "Back",
label: i18next.t("settings:timeOfDay_back"), label: i18next.t("settings:timeOfDayBack"),
}, },
], ],
default: 0, default: 0,

View File

@ -308,8 +308,8 @@ export class GameStatsUiHandler extends UiHandler {
private getUsername(): string { private getUsername(): string {
const usernameReplacement = const usernameReplacement =
globalScene.gameData.gender === PlayerGender.FEMALE globalScene.gameData.gender === PlayerGender.FEMALE
? i18next.t("trainerNames:player_f") ? i18next.t("trainerNames:playerF")
: i18next.t("trainerNames:player_m"); : i18next.t("trainerNames:playerM");
const displayName = !globalScene.hideUsername const displayName = !globalScene.hideUsername
? (loggedInUser?.username ?? i18next.t("common:guest")) ? (loggedInUser?.username ?? i18next.t("common:guest"))

View File

@ -640,7 +640,7 @@ export class PokedexPageUiHandler extends MessageUiHandler {
this.optionSelectText = addBBCodeTextObject( this.optionSelectText = addBBCodeTextObject(
0, 0,
0, 0,
this.menuOptions.map(o => `${i18next.t(`pokedexUiHandler:${MenuOptions[o]}`)}`).join("\n"), this.menuOptions.map(o => `${i18next.t(`pokedexUiHandler:${toCamelCase(`menu${MenuOptions[o]}`)}`)}`).join("\n"),
TextStyle.WINDOW, TextStyle.WINDOW,
{ maxLines: this.menuOptions.length, lineSpacing: 12 }, { maxLines: this.menuOptions.length, lineSpacing: 12 },
); );
@ -757,7 +757,7 @@ export class PokedexPageUiHandler extends MessageUiHandler {
return this.menuOptions return this.menuOptions
.map(o => { .map(o => {
const label = `${i18next.t(`pokedexUiHandler:${MenuOptions[o]}`)}`; const label = i18next.t(`pokedexUiHandler:${toCamelCase(`menu${MenuOptions[o]}`)}`);
const isDark = const isDark =
!isSeen || !isSeen ||
(!isStarterCaught && (o === MenuOptions.TOGGLE_IVS || o === MenuOptions.NATURES)) || (!isStarterCaught && (o === MenuOptions.TOGGLE_IVS || o === MenuOptions.NATURES)) ||

View File

@ -5,7 +5,7 @@ import type { ModalConfig } from "./modal-ui-handler";
export class RenameRunFormUiHandler extends FormModalUiHandler { export class RenameRunFormUiHandler extends FormModalUiHandler {
getModalTitle(_config?: ModalConfig): string { getModalTitle(_config?: ModalConfig): string {
return i18next.t("menu:renamerun"); return i18next.t("menu:renameRun");
} }
getWidth(_config?: ModalConfig): number { getWidth(_config?: ModalConfig): number {

View File

@ -337,7 +337,7 @@ class RunEntryContainer extends Phaser.GameObjects.Container {
// Because of the interesting mechanics behind rival names, the rival name and title have to be retrieved differently // Because of the interesting mechanics behind rival names, the rival name and title have to be retrieved differently
const RIVAL_TRAINER_ID_THRESHOLD = 375; const RIVAL_TRAINER_ID_THRESHOLD = 375;
if (data.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) { if (data.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) {
const rivalName = tObj.variant === TrainerVariant.FEMALE ? "trainerNames:rival_female" : "trainerNames:rival"; const rivalName = tObj.variant === TrainerVariant.FEMALE ? "trainerNames:rivalFemale" : "trainerNames:rival";
const gameOutcomeLabel = addTextObject( const gameOutcomeLabel = addTextObject(
8, 8,
5, 5,

View File

@ -337,7 +337,7 @@ export class RunInfoUiHandler extends UiHandler {
if (this.runInfo.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) { if (this.runInfo.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) {
trainerName = trainerName =
trainerObj.variant === TrainerVariant.FEMALE trainerObj.variant === TrainerVariant.FEMALE
? i18next.t("trainerNames:rival_female") ? i18next.t("trainerNames:rivalFemale")
: i18next.t("trainerNames:rival"); : i18next.t("trainerNames:rival");
} else { } else {
trainerName = trainerObj.getName(0, true); trainerName = trainerObj.getName(0, true);
@ -805,7 +805,7 @@ export class RunInfoUiHandler extends UiHandler {
const spdef = i18next.t("pokemonInfo:stat.spdefShortened") + ": " + pStats[4]; const spdef = i18next.t("pokemonInfo:stat.spdefShortened") + ": " + pStats[4];
const speedLabel = const speedLabel =
currentLanguage === "es-ES" || currentLanguage === "pt_BR" currentLanguage === "es-ES" || currentLanguage === "pt_BR"
? i18next.t("runHistory:SPDshortened") ? i18next.t("runHistory:spdShortened")
: i18next.t("pokemonInfo:stat.spdShortened"); : i18next.t("pokemonInfo:stat.spdShortened");
const speed = speedLabel + ": " + pStats[5]; const speed = speedLabel + ": " + pStats[5];
// Column 1: HP Atk Def // Column 1: HP Atk Def

View File

@ -808,8 +808,8 @@ export class SummaryUiHandler extends UiHandler {
globalScene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE; globalScene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE;
const usernameReplacement = const usernameReplacement =
globalScene.gameData.gender === PlayerGender.FEMALE globalScene.gameData.gender === PlayerGender.FEMALE
? i18next.t("trainerNames:player_f") ? i18next.t("trainerNames:playerF")
: i18next.t("trainerNames:player_m"); : i18next.t("trainerNames:playerM");
// TODO: should add field for original trainer name to Pokemon object, to support gift/traded Pokemon from MEs // TODO: should add field for original trainer name to Pokemon object, to support gift/traded Pokemon from MEs
const trainerText = addBBCodeTextObject( const trainerText = addBBCodeTextObject(

View File

@ -122,8 +122,8 @@ export class TitleUiHandler extends OptionSelectUiHandler {
genderSplash(): void { genderSplash(): void {
if (this.splashMessage === "splashMessages:aprilFools.helloKyleAmber") { if (this.splashMessage === "splashMessages:aprilFools.helloKyleAmber") {
globalScene.gameData.gender === PlayerGender.MALE globalScene.gameData.gender === PlayerGender.MALE
? this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:player_m") })) ? this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:playerM") }))
: this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:player_f") })); : this.splashMessageText.setText(i18next.t(this.splashMessage, { name: i18next.t("trainerNames:playerF") }));
} }
} }

View File

@ -70,7 +70,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
text: `${namespace}:intro`, text: `${namespace}:intro`,
}, },
{ {
speaker: "trainerNames:expert_pokemon_breeder", speaker: "trainerNames:expertPokemonBreeder",
text: `${namespace}:introDialogue`, text: `${namespace}:introDialogue`,
}, },
]); ]);
@ -123,7 +123,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
buttonTooltip: expect.any(String), // Varies based on pokemon buttonTooltip: expect.any(String), // Varies based on pokemon
selected: [ selected: [
{ {
speaker: "trainerNames:expert_pokemon_breeder", speaker: "trainerNames:expertPokemonBreeder",
text: `${namespace}:option.selected`, text: `${namespace}:option.selected`,
}, },
], ],
@ -208,7 +208,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
buttonTooltip: expect.any(String), // Varies based on pokemon buttonTooltip: expect.any(String), // Varies based on pokemon
selected: [ selected: [
{ {
speaker: "trainerNames:expert_pokemon_breeder", speaker: "trainerNames:expertPokemonBreeder",
text: `${namespace}:option.selected`, text: `${namespace}:option.selected`,
}, },
], ],
@ -290,7 +290,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => {
buttonTooltip: expect.any(String), // Varies based on pokemon buttonTooltip: expect.any(String), // Varies based on pokemon
selected: [ selected: [
{ {
speaker: "trainerNames:expert_pokemon_breeder", speaker: "trainerNames:expertPokemonBreeder",
text: `${namespace}:option.selected`, text: `${namespace}:option.selected`,
}, },
], ],