Translate new or untranslated i18n strings from English core.json to all other locale files, maintaining consistency with each language's existing translations.
Automatically translate new or untranslated strings from the English core.json to all other locale files, maintaining consistency with each language's existing translations.
all: process all languagesde_DE, ja, bg): process only that languagereport: only show what's missing/untranslated, don't translatesrc/renderer/locales/en/core.jsonsrc/renderer/locales/ except en/core.json (flat key-value JSON, no nesting)src/renderer/locales/en/core.json (the English source).src/renderer/locales/ to discover target languages.core.json and compare against English:
Language | Missing | Untranslated | Orphan
----------|---------|--------------|-------
de_DE | 3 | 1 | 0
ja | 3 | 5 | 0
...
report, stop here. Otherwise, ask the user for confirmation before proceeding (unless --yes was passed).These keys are expected to have the same value as English in many/all languages. Do NOT flag them as untranslated:
"-", "/")"TagSpaces", "Mapique")"Ok", "Email", "Kanban")For each language that needs translations:
core.json for that language.For each language, translate all missing and untranslated keys:
en/core.json — it is read-only for this skill.{{variables}} exactly — template placeholders like {{fileName}}, {{version}}, {{count}} must appear in the translation unchanged. Do not translate, reorder, or remove them.<br>, <b>, </b>, <a> etc. must remain intact.core.json with:
en/core.json (this keeps diffs clean and structure consistent).en/core.json).node -e "JSON.parse(require('fs').readFileSync('path'))" or equivalent).Language | Added | Updated | Removed | Status
----------|-------|---------|---------|-------
de_DE | 3 | 1 | 0 | OK
ja | 3 | 5 | 0 | OK
...
core.json| Case | Handling |
|---|---|
| Value same as English but intentional | Use the skip-list; also check if 5+ other languages have the same value |
New language directory with empty/missing core.json | Generate a complete translation from scratch |
| Key has only whitespace or empty string in target | Treat as untranslated |
English value contains line breaks (\n) | Preserve line breaks in translation |
| English value is very long (100+ chars) | Translate fully, do not truncate |