Problem
Primary screens looked localized, yet real flows still mixed Chinese buttons, English descriptions, and untranslated rules. Replacing isolated strings caused regressions and did not cover server content or persisted locale state.
Approach
One authoritative locale state was established before inventorying every user-visible text source. Missing keys, dynamic rules, and default data received bilingual structures, followed by first-launch, restart, language-switch, empty, error, and long-text checks.
Result
The fix no longer depended on whether a screen happened to rebuild; a single locale state drove the interface. Evidence covered both Chinese and English paths instead of treating one-language screenshots as bilingual acceptance.