Translate a software string catalog
Translates a software string file (JSON, PO, XLIFF, ARB, Android or Apple strings) keeping keys, placeholders, plurals and length limits intact. Use when localizing an app's UI text.
A string catalog is code that happens to contain language. A translated file that reads beautifully is still broken if one placeholder was renamed, a plural category the target language needs is missing, an ICU keyword got translated, or a button label is now twice as long as its slot. Translators also lack context: a bare "Post" or "Open" can be a noun, a verb or a status, and guessing silently ships a wrong UI.
Translate this catalog into , using the register (for match-existing: follow the glossary or the strings already translated; if there are none, use the register the platform's own UI uses for and record that choice in Review notes):
Glossary:
- Identify the format and follow its rules exactly:
- JSON: keys, nesting and order unchanged; escape quotes and backslashes.
- PO: keep
msgidandmsgctxt; fillmsgstr, ormsgstr[0..n]for plurals, with exactly as many forms as the target'sPlural-Formsheader requires (update the header if it is missing or set for the source language). Keep flags such asc-format. - XLIFF: write
targetelements, keep inline elements such asx,g,phandpcwith their ids, and set the state attribute the file uses for "translated, needs review". - ARB: translate values only, and keep
@metadata entries unchanged. - Android `strings.xml`: translate the text of
string,pluralsitems andstring-arrayitems only; keepnameattributes, leave out entries markedtranslatable="false"(Android expects them absent from translated files), givepluralsexactly thequantityitems the target needs, and escape apostrophes and double quotes (\',\") and a leading@or?. - Apple `.strings` and `.xcstrings`: keep keys and the escaping, use positional specifiers (
%1$@) if you reorder arguments, and in a String Catalog add the target's plural variations and set each new unit's state to the one the file uses for "needs review".
- Keep every placeholder exactly: printf specifiers (
%s,%d,%1$s), ICU arguments ({name}), and markup tags. Inside ICUplural,selectandselectordinal, translate only the text in each branch, never the argument name or the keywords. Add or remove plural branches to match the CLDR categories of : for example one, few, many and other for Polish or Russian, only other for Japanese, and six categories for Arabic. Always keepother. - Apply the glossary exactly, inflecting approved terms as the sentence's grammar requires (case, number, articles) without swapping in a synonym, and leave do-not-translate terms (brand and product names, code identifiers) as they are. Use one translation per source term across the whole file.
- Follow the target's UI conventions: the usual verb form for buttons and menu items in that language (German uses the infinitive, as in "Speichern"), capitalisation rules, punctuation and typography (French spaces before
: ; ! ?, the target's quotation marks, Spanish¿and¡), and gender-neutral phrasing where the language allows it naturally. - Respect length limits from comments or metadata. If a natural translation does not fit, give the best one that fits and note the longer alternative.
- When a string is ambiguous without context (noun or verb, status or action, unclear placeholder content), translate the most likely reading and flag it with the alternative.
- Output the complete file. Never drop, merge, reorder or add keys, apart from the Android
translatable="false"exception above. - The file must stay syntactically valid in its format.
- Do not "improve" the source text. If the source has an error, translate what was meant and flag it.
- If the catalog is not a recognisable string catalog, or is not a valid locale, say so and stop.
Translated catalog
The full translated file in one code block, in the original format.
Review notes
| Key | Type (ambiguous / length / glossary / plural change / register / source issue) | Note and alternative | "None" if there are no notes.
2 required values still a placeholder; the assistant will ask for them.
details
- kind
- Prompt: a task you run by name to get one finished thing back
- domain
- Software engineering
- category
- Localization (software)
- level
- Intermediate
- made for
- Software engineer, Frontend engineer, Product manager
- risk
- read-only
- version
- v1.0.0 · incubating
- reviewed
- 2026-10-02
- works in
- Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Antigravity, OpenCode, Windsurf, Zed, Continue, AGENTS.md, ChatGPT, claude.ai
use in
npx @hermes-hq/hodios install translate-string-catalog --target claude-codenpx skills add hermes-hq/hodios-dist --skill translate-string-catalog -a claude-codeclaude plugin marketplace add hermes-hq/hodios-distclaude plugin install hodios-software-engineering@hodiosThe plugin brings every entry in this domain at once.
pairs well with
All of Localization (software)QA a translated string catalog
QA-checks a translated catalog against its source for placeholder mismatches, broken syntax, truncation risk, terminology drift and untranslated strings. Use before merging translations.
review-translated-stringsBuild a localization glossary
Builds a product term base from UI strings, with definitions, do-not-translate terms and proposed translations per locale, so localization stays consistent. Use before the first translation round.
build-localization-glossaryApp localisation track
Takes an English-only app to its first extra language in gated steps, from readiness scan and string extraction to formatting fixes, pseudo-localisation, translation hand-off and linguistic QA.
app-localization-trackAutomate translation file sync
Designs the pipeline between a repo and translators, with key extraction, upload to a translation system or vendor, download of finished locales, CI checks for keys and fallbacks, and approvals.
automate-translation-file-syncDesign international name and address fields
Designs form fields, validation and storage for personal names, postal addresses and phone numbers that work across countries. Use for international sign-up, checkout or shipping forms.
design-international-address-and-name-fieldsDesign locale detection and routing
Designs how a web or mobile app picks and remembers language and region, with negotiation, explicit choice, URL strategy, hreflang, fallback chains and language kept separate from currency.
design-locale-detection-and-routing