Internationalization and Crowdin
August 13, 2026 · View on GitHub
AiOverviewControl is localized with runtime JSON bundles loaded by AiOverviewControlI18n.qml.
Runtime files
i18n/en.json— source language and fallback bundle.i18n/pt_BR.json— Portuguese (Brazil).i18n/zh_CN.json— Chinese Simplified.i18n/es_ES.json— Spanish.i18n/de_DE.json— German.AiOverviewControlI18n.qml— loads the selected bundle and falls back to English per key.qmldir— registers the i18n singleton for QML.
The UI language is stored in the plugin settings key languageOverride:
autofollowsQt.locale().name.en_USforces English.pt_BRforces Portuguese (Brazil).zh_CNforces Chinese Simplified.es_ESforces Spanish.de_DEforces German.
Crowdin project setup
Project URL: https://pt.crowdin.com/project/aioverviewcontrol
Required Crowdin language setup:
- Source language: English (
en). - Target languages:
- Portuguese, Brazil (
pt-BR). - Chinese Simplified (
zh-CN). - Spanish (
es-ES). - German (
de-DE).
- Portuguese, Brazil (
Do not add English as a target language; English is the source file.
Crowdin CLI
The repository config is .github/crowdin.yml.
Validate config:
crowdin config lint --config .github/crowdin.yml
crowdin config sources --config .github/crowdin.yml
Upload source strings:
crowdin upload sources --config .github/crowdin.yml
Upload local translations after adding the target languages in Crowdin:
crowdin upload translations --language pt-BR --config .github/crowdin.yml
crowdin upload translations --language zh-CN --config .github/crowdin.yml
crowdin upload translations --language es-ES --config .github/crowdin.yml
crowdin upload translations --language de --config .github/crowdin.yml
Download translations:
crowdin download --config .github/crowdin.yml
If Crowdin downloads an unexpected locale file, fix the project languages before committing it. The shipped locale files are en.json, pt_BR.json, zh_CN.json, es_ES.json, and de_DE.json.
GitHub integration
Recommended Crowdin GitHub integration settings:
- Source files:
/i18n/en.json. - Translation files:
/i18n/%locale_with_underscore%.json. - Translation PR branch:
l10n_main. - Commit translation updates to Pull Requests, not directly to
main. - Enable "Skip untranslated strings" only if you want missing keys to fall back to English locally. The plugin is safe either way because
AiOverviewControlI18n.qmlfalls back per key.
CI validates:
plugin.jsonJSON syntax and semantic version format.- Every
i18n/*.jsonfile for JSON syntax. - Exact translation key parity against
i18n/en.json. .github/crowdin.ymlwith the checksum-verified Crowdin CLI as an offline hard gate; remote source/translation checks also run whenCROWDIN_API_TOKENis available.- All four QML files with an installed Qt5
qmllinthard gate.