Skip to content

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

Issues Detected

The checker identified that all language packs are missing some recently added strings:

  1. Common UI Strings (moved to strings_common.xml):

    • app_list, cancel_button, delete_button, send_button, reset_button
    • ok_button, error_title, request, time
    • logcat, no_logs, success, status, etc.
  2. USSD Strings (in strings_ussd.xml):

    • enter_ussd_code
    • invalid_ussd_code
  3. SMS Strings (naming migration):

    • Old: enter_number, enter_content
    • New: enter_reply_number, enter_reply_content
    • Some language packs still use old naming
  4. 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:

  1. Review Missing Strings Report:

    bash
    python .github/scripts/check_translations.py
  2. Translate Missing Strings:

    • Focus on strings_common.xml (20 strings)
    • Add missing USSD translations
    • Update SMS string naming if needed
  3. Verify Completeness:

    • Re-run checker after adding translations
    • Ensure 100% completeness for your language

For Developers:

  1. Use Categorized Files:

    • Add new strings to appropriate category file
    • Follow naming conventions in STRING_RESOURCES.md
    • Run checker before committing
  2. 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

  1. Better Organization: Easier to find and maintain strings
  2. Easier Translation: Translators can focus on specific features
  3. Reduced Conflicts: Less merge conflicts in git
  4. Better CI/CD: Automated completeness checking
  5. Clear Documentation: Comprehensive guides for contributors

Migration Complete! ✅

The language pack structure has been successfully modernized. All existing translations are preserved and properly categorized.