hermes

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.

context

Translation QA catches the defects that crash or embarrass the app before users see them. In rough order of cost: a renamed or dropped placeholder that throws at runtime or prints {name}, broken ICU or file syntax that fails the whole catalog, missing keys that fall back to English mid-screen, a label too long for its button, and the same product term translated three different ways. Judging fluency is secondary and needs a native speaker. Mechanical checks must be exhaustive.

task

Check the translation against the source.

Source:

Translation:

Glossary:

Work through every key. Do not sample.

  1. Coverage: keys missing from the translation, extra keys not in the source, empty values, and values identical to the source. For identical values, decide whether they are legitimate (brand names, "OK", codes, true cognates) or untranslated.
  2. Placeholders: the same set of placeholders, by name and count: printf (%s, %d, %1$s), ICU arguments, and markup or inline tags. Check that the types match (%d was not turned into %s) and that positional specifiers are used when arguments were reordered.
  3. ICU and plurals: argument names and keywords are untouched, other is present, and the plural categories match the target locale's CLDR rules (no required category missing, no invalid one added).
  4. Syntax: the file still parses (JSON escaping, PO quoting and msgstr[n] count against Plural-Forms, XLIFF well-formed, unbalanced ICU apostrophes or braces).
  5. Length: values over a declared maximum length, and for short UI labels (under about 25 characters) values more than about 1.5 times the source length. Mark these as truncation risks.
  6. Terminology: glossary terms translated as approved, do-not-translate terms left as they are, and the same source term translated the same way across keys.
  7. Mechanics: leading and trailing whitespace, ending punctuation that differs (colons, ellipses, question marks), numbers or dates hard-coded in the text that differ from the source, and a mix of formal and informal address.
  8. Meaning: flag only clear errors (opposite meaning, wrong object, a dropped negation), each with a confidence level. Leave style preferences out.
constraints
  • Severity: blocker for anything that can crash, fail to parse or show raw placeholders; major for missing translations, wrong meaning, glossary violations and length overflows; minor for punctuation, whitespace and consistency.
  • Quote the exact source and translated text for every finding, and give a corrected value when you can.
  • If the two files are in different formats or clearly do not correspond, say so and stop.
  • Separate what you verified from what you inferred. Mark inferences as such.
  • When you do not know, say "I don't know" once and state what would settle it.
output format

Verdict

One line: ship / ship after fixes / do not ship. Then counts by severity, and the number of keys checked.

Findings

| Key | Check | Severity | Source | Translation | Suggested fix | Blockers first.

Could not verify

Strings whose correctness depends on UI context or native-speaker judgement, one line each.

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, Editor
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

Edit on GitHubReport a problem

use in

Hodios CLI
npx @hermes-hq/hodios install review-translated-strings --target claude-code
Agent Skills
npx skills add hermes-hq/hodios-dist --skill review-translated-strings -a claude-code
Add the Hodios marketplace (once)
claude plugin marketplace add hermes-hq/hodios-dist
Install the software-engineering plugin
claude plugin install hodios-software-engineering@hodios

The plugin brings every entry in this domain at once.

PromptLocalization (software)

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.

translate-string-catalog
PromptLocalization (software)

Build 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-glossary
PromptLocalization (software)

Extract hard-coded UI strings

Finds hard-coded user-facing strings and moves them into an i18n catalog with meaningful keys and translator comments, without changing behaviour. Use when preparing an app for translation.

extract-ui-strings
PromptLocalization (software)

Plan and implement right-to-left support

Plans and implements right-to-left layout support (logical properties, mirroring rules, bidi text, icons) for a web or mobile UI. Use when adding Arabic, Hebrew, Persian or Urdu.

plan-rtl-support
PromptLocalization (software)

Review code for internationalization bugs

Reviews code for internationalization bugs such as concatenated strings, hard-coded date, number and currency formats, naive plurals, text expansion and RTL breakage. Use before adding new locales.

review-i18n-readiness
PromptLocalization (software)

Write ICU plural and select messages

Converts messages with counts, gender or choices into correct ICU MessageFormat for each target locale's plural categories, with test values. Use when strings depend on a number or gender.

write-icu-plural-messages