AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Validate Translation

skill-ericfitz-skills-validate-translation · by ericfitz

Use when reviewing a translated string or validating an i18n file update, to verify placeholder preservation, length, encoding, and common translation errors.

No reviews yet
0 installs
35 views
0.0% view→install

Install

$ agentstack add skill-ericfitz-skills-validate-translation

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-ericfitz-skills-validate-translation)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Validate Translation? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Validate Translation

Validate that a translated string preserves required structural elements from the original and meets quality requirements.

Inputs

  • original_text: The source text (commonly English).
  • translated_text: The translation under review.
  • targetlanguagecode: BCP 47 code (e.g. es, fr, de, zh-CN).

Output

{
  "valid": true,
  "issues": [],
  "warnings": []
}
  • valid: false if any blocking issue exists, else true.
  • issues: Blocking problems that must be fixed.
  • warnings: Non-blocking concerns to review.

Validation Checks

1. Placeholder Preservation (blocking)

Patterns to detect in both texts:

| Pattern | Regex | |---------|-------| | Double braces | \{\{[\w.]+\}\} | | Single braces | \{[\w]+\} | | Dollar braces | \$\{[\w]+\} | | Printf | %[sdif] | | Percent braces | %\{[\w]+\} | | Double brackets | \[\[[\w]+\]\] | | Numbered tags | `` |

Rules:

  • All placeholders from original must appear in translation.
  • No new placeholders may be introduced.
  • Syntax must be preserved exactly ({{name}}{name}{{ name }}).
  • Placeholder names are case-sensitive ({{Name}}{{name}}).

2. Empty/Whitespace (blocking)

Translation is not empty or whitespace-only.

3. Untranslated Markers (blocking)

Detect: TRANSLATE_ME, TODO, [TODO], FIXME, XXX, UNTRANSLATED, NEEDS_TRANSLATION, TBD.

4. Still in English (warning)

If original === translated, original has 3+ words, and target is not English → warn.

Exceptions (no warning):

  • Single-word strings (could be proper nouns or technical terms).
  • URLs, emails, identifiers.
  • Mostly placeholders.

5. Length Ratio (warning)

Compare len(translated) / len(original) against language family expectations:

| Language | Min | Max | |----------|-----|-----| | German | 0.8 | 1.5 | | French | 0.9 | 1.4 | | Spanish | 0.9 | 1.4 | | Italian | 0.9 | 1.4 | | Portuguese | 0.9 | 1.4 | | Russian | 0.8 | 1.5 | | Chinese | 0.3 | 0.8 | | Japanese | 0.4 | 1.0 | | Korean | 0.5 | 1.0 | | Arabic | 0.8 | 1.4 | | Hebrew | 0.7 | 1.2 | | Hindi | 0.9 | 1.5 | | Thai | 0.8 | 1.3 | | Default | 0.5 | 3.0 |

Skip if original is <10 characters, mostly placeholders, or a single word.

6. Character Encoding (blocking)

Detect: replacement character (U+FFFD), mojibake patterns (e.g. é for é), null \x00, non-\n/\t control characters.

7. HTML Entity Preservation (warning)

&nbsp;, &amp;, &lt;, &gt;, &quot;, &#…; in original should appear in translation (or be intentionally rendered).

8. Newline/Trailing Whitespace (warning)

Newlines and trailing whitespace/punctuation should be preserved.

Severity

| Blocking (valid = false) | Warning (valid = true) | |-----------------------------|--------------------------| | Missing/extra/modified placeholder | Identical to source | | Empty translation | Unusual length ratio | | Untranslated marker present | Missing HTML entity | | Invalid encoding | Formatting/newline difference |

Examples

Valid

original:   "Hello {{name}}, you have {{count}} messages."
translated: "Hola {{name}}, tienes {{count}} mensajes."
target:     es
→ {valid: true, issues: [], warnings: []}

Missing placeholder

original:   "Welcome {{name}}!"
translated: "¡Bienvenido!"
target:     es
→ {valid: false, issues: ["Missing placeholder: {{name}}"], warnings: []}

Untranslated

original:   "Save changes"
translated: "Save changes"
target:     de
→ {valid: true, issues: [], warnings: ["Translation appears identical to source"]}

Multiple issues

original:   "Delete {{count}} items permanently"
translated: "[TODO] Supprimer {count} éléments"
target:     fr
→ {valid: false,
   issues: ["Contains untranslated marker: [TODO]",
            "Placeholder syntax modified: {{count}} → {count}"],
   warnings: []}

Implementation Notes

  1. Be permissive: when uncertain, warn rather than block.
  2. Placeholder order may legitimately change for grammar — only check presence.
  3. Whitespace inside placeholders matters: {{ name }}{{name}}.
  4. Idiomatic adaptation may legitimately produce length outside expected ratios.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.