Fix Russian character captions and NPC locale cache #4

Merged
sindoring merged 1 commits from fix/ruru-labels-and-npc-cache into main 2026-10-10 19:22:48 +03:00
Owner

Russian character selection displays literal numbered placeholders, and character creation uses English race/class names even when its descriptions are translated. Resolve display names from the selected ChrRaces/ChrClasses DBCs and use the existing numbered-argument formatter for roster rows and deletion prompts.

Creature caches were always written and accepted as enUS. Write the selected client locale into the header and reject caches from another language, allowing the server to answer fresh NPC-name queries.

Reference: the supplied ruRU pack has CHARACTER_SELECT_INFO ordered as class then level, and its DBC name slots contain the Russian labels. The deployed server has 9,755 Russian NPC names; existing local caches contain 101 English-only NPC records. The reported quest giver is Guard Thomas (261), starting quest 37; its Russian name exists in the deployed database.

Validation: ten targeted Windows checks passed against the supplied archives with data required and no skips. All automated land gates passed: formatting, clippy, tests with and without installed data, player-build tests, documentation and enforcers. The 31 optional addon-corpus tests skip because the vanilla addon/Quiver corpus is unavailable. Tests cover real ruRU roster rows including ghosts, Human/Warrior and Tauren/Druid creation headers, changing class-button labels, deletion text without deleting, English fallback, and cache rejection across enUS/ruRU. Windows only. The release client booted against the staged production ruRU archive chain, loaded 431 glue strings and four font faces, and remained running for 20 seconds without a panic or character-name fallback warning. No unattended game login was performed because this checkout has no declared probe account.

Russian character selection displays literal numbered placeholders, and character creation uses English race/class names even when its descriptions are translated. Resolve display names from the selected ChrRaces/ChrClasses DBCs and use the existing numbered-argument formatter for roster rows and deletion prompts. Creature caches were always written and accepted as enUS. Write the selected client locale into the header and reject caches from another language, allowing the server to answer fresh NPC-name queries. Reference: the supplied ruRU pack has CHARACTER_SELECT_INFO ordered as class then level, and its DBC name slots contain the Russian labels. The deployed server has 9,755 Russian NPC names; existing local caches contain 101 English-only NPC records. The reported quest giver is Guard Thomas (261), starting quest 37; its Russian name exists in the deployed database. Validation: ten targeted Windows checks passed against the supplied archives with data required and no skips. All automated land gates passed: formatting, clippy, tests with and without installed data, player-build tests, documentation and enforcers. The 31 optional addon-corpus tests skip because the vanilla addon/Quiver corpus is unavailable. Tests cover real ruRU roster rows including ghosts, Human/Warrior and Tauren/Druid creation headers, changing class-button labels, deletion text without deleting, English fallback, and cache rejection across enUS/ruRU. Windows only. The release client booted against the staged production ruRU archive chain, loaded 431 glue strings and four font faces, and remained running for 20 seconds without a panic or character-name fallback warning. No unattended game login was performed because this checkout has no declared probe account.
sindoring added 1 commit 2026-10-10 17:40:22 +03:00
Resolve race/class display names from the selected 1.12 DBCs. Use the existing numbered-argument formatter for character selection and deletion, matching the supplied ruRU GlueStrings templates. Reject persisted creature names from a different client locale instead of always accepting enUS.

Verified on Windows: real-pack race/class names, live and ghost roster texts, two creation selections and changing class labels, deletion text without deletion, Cyrillic fonts and FrameXML/options, cross-locale NPC cache rejection and preservation of live player/pet names. Ten focused checks passed with data required and no skips. Full land gates are running. No game login: this checkout declares no probe account.
sindoring marked the pull request as ready for review 2026-10-10 19:22:35 +03:00
sindoring merged commit ac0a4fbc47 into main 2026-10-10 19:22:48 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sindoring/moonwell-client-core#4