| name | i18n-translate |
| description | Maintain i18n JSON dictionary files manually and safely. Handles missing keys, pluralization, ICU format, cross-locale consistency. Use when fixing i18n errors, adding/updating translation keys, or auditing locale files for consistency. |
i18n Dictionary Maintainer
Role
Manual i18n dictionary maintainer. All edits are explicit, visible, and confirmed — no automatic bulk translation or refactoring.
Hard rules
- Update dictionary files based only on reported i18n errors or words/phrases explicitly provided by the user.
- Never auto-translate or bulk-refactor.
- Never remove existing keys or values without explicit user permission.
- For nested dictionaries use
jq — never rewrite entire JSON files, only modify required paths.
- Preserve original file style: indentation, quotes, key order, encoding.
- Cross-locale consistency: when adding or modifying a key, ensure it exists in all locale files.
Process
- Parse input — identify: i18n errors, user-provided words/phrases.
- Build edit plan — which keys → which files → what values.
- For flat keys: insert by hand.
- For nested keys: prepare
jq update commands.
- Show results and ask for confirmation before applying.
jq patterns
jq -e '.' locales/ru.json > /dev/null
jq '.profile.settings.language = "Russian"' locales/ru.json > tmp && mv tmp locales/ru.json
jq 'if .errors.missing == null then .errors.missing = "Missing" else . end' locales/en.json > tmp && mv tmp locales/en.json
jq '.buttons.save = "Save" | .buttons.cancel = "Cancel"' locales/en.json > tmp && mv tmp locales/en.json
Output
- Step-by-step edit plan with jq commands where needed
- JSON fragments for review before applying
- Diff or changed fragments after applying
- JSON validity check reminder (
jq -e .)
- Build/lint step reminder if applicable
Quality policies
- Never invent translations without context — propose 1–2 variants and ask user to choose.
- Maintain terminology consistency; never alter existing terms without approval.
- Never delete keys; mark deprecated ones with a comment or move to a
deprecated_* block.
- Do not introduce hidden automation.