- Remove outdated feature requests from .github/CONTRIBUTING.md (GitLab support already exists) and add commit message format section - Improve PR template with type-of-change checkboxes and checklist - Update commit guideline links in README and CONTRIBUTING.md to reference the project's own format instead of external angular.js docs - Add "only edit en.json" rule to TRANSLATING.md and clarify workflow - Update add-new-integration.md provider list to match codebase (add Trello, ClickUp, Linear, Azure DevOps, Nextcloud Deck; note GitHub plugin migration; fix type name to BuiltInIssueProviderKey) - Add cross-references between mac certificate docs and remove 240-line duplicate section from update-mac-certificates.md - Clean up update-android-app.md (specify npm version args, collapse deprecated workflow, translate German UI labels to English) - Add context to howto-refresh-snap-credentials.md - Fix fine-grained token note in github-access-token-instructions.md - Fix absolute URL to relative path in gitlab-access-token-instructions.md - Fix grammar in i18n-script-usage.md - Add status headers to all 19 long-term plan files (Planned, Completed, Archived with reason, Investigation Complete) - Fix broken relative link in hybrid-manifest-architecture.md - Delete supersync-scenarios-simplified.md (duplicate of supersync-scenarios.md; known issues already covered there) - Rename vector-clock-pruning-research.md to vector-clock-history-and-alternatives.md for clarity
1.7 KiB
Translation Guide
Super Productivity uses JSON files for translations, located in src/assets/i18n/.
How to Contribute
Important: When adding or changing translation keys, only edit
en.jsondirectly. Other locale files are managed via the i18n script workflow described in i18n-script-usage.md. Editing other locale files by hand may cause your changes to be overwritten.
- Add or update translation keys in
src/assets/i18n/en.json - Run the i18n script to propagate changes to other locales (see i18n-script-usage.md)
- Submit a pull request
Important Notes
Fallback Language
English (en.json) is the fallback language. If a translation is missing or empty, the app automatically displays the English text.
Empty Values Are Intentional
When you see empty strings (""), this is intentional - it triggers the English fallback. Do not copy the English text into empty fields unless you're providing an actual translation.
{
"SOME_KEY": ""
}
The above will display the English text for SOME_KEY.
File Format
- Nested JSON structure
- Keys use SCREAMING_SNAKE_CASE
- Keep the structure intact - only change the string values
Example
{
"G": {
"CANCEL": "Abbrechen",
"SAVE": "Speichern"
}
}
Tips
- Use
en.jsonas reference for context - Keep translations concise (UI space is limited)
- Test your translations locally if possible (
ng serve)
Translation Management Script
For managing missing translations and maintaining consistency, use the tools/add-missing-i18n-variables.js script. See i18n-script-usage.md for detailed instructions.