Language Pack Update Summary
Date: January 5, 2026
Actions Completed
1. ✅ String Resource Files Split
All language packs have been split from a single strings.xml into 12 categorized files:
values-{locale}/
├── strings.xml # Base config (2 strings)
├── strings_battery.xml # Battery monitoring (11 strings)
├── strings_telegram.xml # Telegram API + commands (26 strings)
├── strings_sms.xml # SMS management (42 strings)
├── strings_call.xml # Call notifications (6 strings)
├── strings_ussd.xml # USSD codes (4 strings)
├── strings_network.xml # Network settings (12 strings)
├── strings_cc.xml # Carbon Copy (6 strings)
├── strings_notification.xml # Notification listener (5 strings)
├── strings_scanner.xml # QR scanner (16 strings)
├── strings_privacy_about.xml # Privacy & About (16 strings)
└── strings_common.xml # Common UI (20 strings)Total Expected Strings: ~170 strings across all files
2. ✅ Language Packs Processed
All 9 language packs have been split:
- ✅ values-zh-rCN (Simplified Chinese)
- ✅ values-zh-rTW (Traditional Chinese)
- ✅ values-zh-rHK (Hong Kong Chinese)
- ✅ values-yue-rCN (Cantonese - China)
- ✅ values-yue-rHK (Cantonese - Hong Kong)
- ✅ values-ja-rJP (Japanese)
- ✅ values-es-rES (Spanish)
- ✅ values-ru (Russian)
- ✅ values-vi (Vietnamese)
3. ✅ Translation Checker Updated
The translation checker has been upgraded to:
- Check all 12 categorized files (instead of just one)
- Merge additional reference files (strings_chat.xml, strings_sms_manage.xml)
- Report per-file missing/extra strings
- Detect missing files in language packs
- Generate detailed reports
4. ✅ Tools Created
Two new Python scripts:
.github/scripts/split_language_packs.py
- Automatically splits monolithic strings.xml into 12 categorized files
- Categorizes 170+ strings based on feature area
- Reports uncategorized strings
- Can be re-run safely (overwrites existing files)
.github/scripts/check_translations.py (Updated)
- Multi-file translation completeness checking
- File-level and string-level reporting
- Merges additional reference files automatically
- CI/CD ready with exit codes
5. ✅ Documentation Updated
- STRING_RESOURCES.md: New comprehensive guide on string resource organization
- TRANSLATION_CHECKER.md: Updated with multi-file checking instructions
- project.instructions.md: Added String Resources Organization section
- VitePress config: Added STRING_RESOURCES.md to documentation nav
Translation Completeness Status
Current State (All Languages):
- Categorized: 163/170 strings (95.9%)
- Missing Common: ~7 strings (button labels, USSD prompts)
- Missing in all language packs:
enter_ussd_code(2 translations needed)invalid_ussd_code(2 translations needed)- Some common UI strings moved from main strings.xml
- Missing in all language packs:
Issues Detected
The checker identified that all language packs are missing some recently added strings:
Common UI Strings (moved to strings_common.xml):
app_list,cancel_button,delete_button,send_button,reset_buttonok_button,error_title,request,timelogcat,no_logs,success,status, etc.
USSD Strings (in strings_ussd.xml):
enter_ussd_codeinvalid_ussd_code
SMS Strings (naming migration):
- Old:
enter_number,enter_content - New:
enter_reply_number,enter_reply_content - Some language packs still use old naming
- Old:
SMS Management Strings (newly added):
listsms_command,sms_list_header,sms_from,sms_to, etc.- These are new features, translations needed
Next Steps
For Translators:
Review Missing Strings Report:
bashpython .github/scripts/check_translations.pyTranslate Missing Strings:
- Focus on
strings_common.xml(20 strings) - Add missing USSD translations
- Update SMS string naming if needed
- Focus on
Verify Completeness:
- Re-run checker after adding translations
- Ensure 100% completeness for your language
For Developers:
Use Categorized Files:
- Add new strings to appropriate category file
- Follow naming conventions in STRING_RESOURCES.md
- Run checker before committing
CI Integration:
- Translation checker will run on PRs
- PRs with incomplete translations will fail
- Helps maintain translation quality
Files Modified
Scripts:
.github/scripts/check_translations.py(Updated).github/scripts/split_language_packs.py(New)
Documentation:
docs/docs/STRING_RESOURCES.md(New)docs/docs/TRANSLATION_CHECKER.md(Updated)docs/docs/instructions/project.instructions.md(Updated)docs/.vitepress/config.mts(Updated)
Language Packs (All Updated):
app/language_pack/values-*/strings.xml(Split into 12 files each)- Each language pack now has 12 XML files + template.xml
Reference Files (English):
app/src/main/res/values/strings.xml(Simplified to 2 strings)app/src/main/res/values/strings_*.xml(11 new category files)
Benefits
- Better Organization: Easier to find and maintain strings
- Easier Translation: Translators can focus on specific features
- Reduced Conflicts: Less merge conflicts in git
- Better CI/CD: Automated completeness checking
- Clear Documentation: Comprehensive guides for contributors
Migration Complete! ✅
The language pack structure has been successfully modernized. All existing translations are preserved and properly categorized.