Overview
Wonderous implements Flutter’s official localization system with support for English and Simplified Chinese. The app uses ARB (Application Resource Bundle) files and code generation to provide type-safe, compile-time verified translations.Supported Locales
Wonderous currently supports two locales (lib/l10n/app_localizations.dart:93):
- English (
en) - Default locale - Simplified Chinese (
zh) - Secondary locale
Configuration
l10n.yaml
The localization system is configured inl10n.yaml:1-3:
- Look for ARB files in
lib/l10n/ - Use
app_en.arbas the template - Generate
app_localizations.dartwith all translations
pubspec.yaml
Localization is enabled inpubspec.yaml:14-15,86:
LocaleLogic Class
TheLocaleLogic class (lib/logic/locale_logic.dart:6) manages locale selection and loading:
Initialization
Runtime Locale Switching
The app supports dynamic locale changes without restart (lib/logic/locale_logic.dart:29):
AppLocalizations
The generatedAppLocalizations class provides:
Static Properties
Accessing Translations
Translations are accessed via the global$strings instance:
Parameterized Translations
Some strings accept parameters (lib/l10n/app_localizations.dart:111,153,159):
Integration with MaterialApp
Set up localization in your app root:Locale-Aware Typography
Fonts automatically adapt to the current locale (lib/styles/styles.dart:57-95):
- English quotes use the elegant Cinzel font
- Chinese quotes use the traditional MaShanZheng calligraphy font
- Automatic fallback to the first available font if locale not found
Translation Files Structure
Translations are organized in ARB files:lib/l10n/app_en.arb- English translations (template)lib/l10n/app_zh.arb- Chinese translations
lib/l10n/app_localizations.dart- Base classlib/l10n/app_localizations_en.dart- English implementationlib/l10n/app_localizations_zh.dart- Chinese implementation
Adding New Translations
Step 1: Add to Template ARB
Editlib/l10n/app_en.arb:
Step 2: Add Translations
Editlib/l10n/app_zh.arb:
Step 3: Regenerate
Run Flutter’s code generation:Step 4: Use the Translation
Locale Switcher UI
Wonderous provides a locale switcher control (lib/ui/common/controls/locale_switcher.dart):
System Locale Detection
The app automatically detects the system locale on first launch (lib/logic/locale_logic.dart:16):
Debug Locale Override
For testing, you can force a specific locale (lib/logic/locale_logic.dart:18-20):
Best Practices
1. Use Semantic Keys
Choose descriptive keys that indicate context:2. Provide Descriptions
Always add descriptions to help translators:3. Handle Plurals
For strings with plurals, use ICU message syntax:4. Keep Context in Mind
Remember that word order and grammar vary between languages. Use placeholders instead of string concatenation:Translation Coverage
Wonderous includes translations for:- App navigation and UI controls
- All 8 wonder names and descriptions
- Artifact browser and details
- Timeline and events
- Collection and discovery messages
- Accessibility labels
- Error messages
- Help text