content-translate — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited content-translate (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Translate and localize documents, code comments, UI strings, and structured content while preserving meaning, formatting, placeholders, and terminology. Use for anything from one string to a multi-file documentation set. For a native-fluency audit of the result, load the content-locale-humanize skill.
A translation is a contract: same meaning and function, target-native form. Accuracy and completeness come first, then terminology, then fluency, style, and locale conventions; these are the MQM error dimensions reviewers will score. Professional practice (ISO 17100) separates translation from an independent revision. An LLM draft is machine output: it still needs that revision step (ISO 18587 post-editing), however fluent it reads.
| Factor | Decide |
|---|---|
| Locale | Full BCP 47 tag, not just language: es-ES vs es-419, pt-BR vs pt-PT, fr-FR vs fr-CA, zh-Hans-CN vs zh-Hant-TW |
| Domain and audience | Technical, legal, medical, marketing, academic, UI; expert or general |
| Register | tu/vous, du/Sie, tú/usted, keigo level, Korean speech level; hold it constant |
| Assets | Existing glossary, translation memory, style guide, shipped localized UI |
| Do-not-translate | Brand and product names, code identifiers, commands, legal entity names |
Ask when the locale variant, register, or domain is unknown and would change the output. Don't guess between es-ES and es-419.
source term → target term [domain, notes, rejected alternatives]. Reuse it in every section and extend it when new terms appear.Section X/Y | heading | status). After assembly, read start to finish for tone drift, cross-references, anchors, and glossary use.| Element | Rule |
|---|---|
| Markdown | Keep syntax; translate text, link text, and alt text |
| Code blocks | Translate comments and user-facing strings only, never code |
| Inline code, variables, placeholders | Keep {name}, %s, {{var}}, $VAR byte-for-byte; reorder around them as grammar needs |
| Frontmatter | Keep keys; translate string values that are human-facing |
| HTML | Keep tags and attributes; translate text nodes and alt/title |
| URLs | Keep, unless a localized page exists; then point to it |
| Heading anchors | Translated headings change #slugs; update in-page links and TOC |
If unsure whether something is translatable, keep it and add [TN: ...].
<bdi>, dir="auto", or Unicode FSI/PDI), keep numbers and code readable, and let layout mirror.Follow Unicode CLDR data for the exact locale; this table covers the common traps.
| Locale | Quotes | Number | Date | Watch |
|---|---|---|---|---|
| de-DE | „…“ (de-CH «…») | 1.234,56 (CH 1’234.56) | 12.10.2026 | de-CH uses ss, not ß |
| fr-FR | « … » | 1 234,56 | 12/10/2026 | narrow no-break space before ; ! ? and no-break space before : |
| fr-CA | « … » | 1 234,56 | 2026-10-12 | OQLF: no space before ; ! ?, space before : |
| es-ES | «…» (RAE first choice), then “…” | 1234,56; 12 345,6 | 12/10/2026 | opening ¿ ¡ required |
| es-MX | “…” | 1,234.56 | 12/10/2026 | ustedes, no vosotros, across es-419 |
| it-IT | «…» or “…” | 1.234,56 | 12/10/2026 | perché (acute), è (grave) |
| pt-BR / pt-PT | “…” / «…» | decimal comma | 12/10/2026 | vocabulary and pronouns differ; never mix |
| ja-JP | 「…」『…』 | 1,234.56; 万 for large | 2026年10月12日 | full-width 、。; no spaces between words |
| zh-Hans-CN | “…”, 《》 for titles | 1,234.56; 万/亿 | 2026年10月12日 | full-width ,。、;:?!; …… and —— |
| zh-Hant-TW | 「…」『…』 | same | same | regional terms: 軟體, 網路, 資訊, 影片 (CN 软件, 网络, 信息, 视频) |
| ko-KR | “…” | 1,234.56 | 2026. 10. 12. | word spacing (띄어쓰기) per National Institute of Korean Language |
| ar | «…» or “…” | Western or Arabic-Indic digits per market | RTL | ، ؛ ؟ punctuation |
| hi-IN | “…” | 12,34,567.89 (lakh/crore) | 12/10/2026 | । ends sentences |
| th-TH | “…” | 1,234.56 | Buddhist Era (CE + 543) in formal contexts | no spaces between words; a space marks a clause or sentence break |
Headings: English Title Case is an error in most target languages; use sentence case (German capitalizes nouns only). Converting Simplified to Traditional script is not localization for Taiwan or Hong Kong.
en-US: 1,000.50, 05/23/2026 (ISO 2026-05-23 when the source enforces it). Russian, Polish, Czech, Slovak: «…» or „…“ by country.
| Domain | Approach |
|---|---|
| Technical | Target-market standard terms; keep standard loanwords; mirror vendor docs in the target language |
| Legal | Preserve legal effect; use the target jurisdiction's terms; flag concepts with no equivalent instead of paraphrasing them away |
| Medical | Recognized terminology; plain language for patients, technical for professionals; never soften warnings or dosages |
| Marketing | Transcreate from the brief: adapt idiom, rhythm, and cultural reference, but keep claims, prices, and disclaimers exact |
| Academic | Formal register, discipline terminology, citation format unchanged |
| UI | Shortest natural phrasing; consistent verbs for the same action; respect limits |
Gender-inclusive forms follow the client's style guide. Academies and several governments restrict typographic forms (asterisks, colons, the French point médian, the Italian schwa); the per-language locale skills carry the current norms. Without a guide, prefer neutral rewording or paired forms. Spanish: doublets ("todos y todas") or neutral rewording in formal text; the RAE rejects "todes", "tod@s", and "todxs", though some activist or youth audiences expect them.
| Risk | Handling |
|---|---|
| Idioms and calques | Target equivalent or paraphrase, never literal ("raining cats and dogs") |
| Culture-bound references | Localize for marketing and literary; preserve and gloss for technical and legal |
| Untranslatables (saudade, hygge, schadenfreude, mono no aware) | Source word italicized with a short gloss on first use, or paraphrase |
| False friends | actually ≠ actualmente; sympathique ≠ sympathetic; embarazada ≠ embarrassed; library ≠ librería (bookshop); Gift means poison in German |
| Wordplay, puns, alliteration, rhyme | Recreate the effect, not the form |
| Honorifics | Japanese -san/-sama, Korean -ssi/-nim, Indian -ji |
| Gendered references | Follow the target's requirements; ask when the source is silent and the reader unknown |
| Names, brands, products, code identifiers | Usually verbatim; verify official localized names |
| Numbers, dates, currencies, units, addresses, phones, quotes | Locale-format; convert currency or units only on explicit ask |
| Source-syntax bleed | English passives read unnatural in Romance and Slavic targets; literal nominalization-heavy German reads bureaucratic in English |
| Marketing under-localization | A transliterated tagline usually dies; transcreate with the requester's permission |
Choose the reading the domain and context support and note it: [TN: ambiguous source; translated as "X" meaning Y]. Ask when the choice changes meaning materially.
Adjustment delta note:
✏️ Adjustments (<what the user asked for>)
- <change category> — was: "<short snippet>" → now: "<short snippet>" — <reason>
- <change category> — applied throughout: <e.g. T-V form switched tú → usted>
- Preserved: <what was kept intact>Translation notes (non-trivial choices only, one bullet each):
🗒 Translation notes (<source-lang> → <target-locale>)
- T-V form / Register: <choice> (reason)
- Untranslatable: <source term> rendered as <choice> — alternative: <other>
- Idiom: <source> → <target rendering> (literal would be misleading)
- Culture-bound: <reference> localized (purpose=marketing) / preserved+glossed (purpose=technical)
- Ambiguity flagged: <sentence> — read as <A> over <B> because <reason>
- Length: +/-X% vs source — <warn if a UI string may break layout>Markdown, EN → es-ES (technical):
## Getting started
Install the package with npm:npm install my-package
## Primeros pasos
Instala el paquete con npm:npm install my-package
Heading in sentence case, code untouched, informal tú matching a developer audience in Spain.
Plural string, EN → ru. Wrong (concatenation, one form):
"Deleted " + count + " files" → "Удалено " + count + " файлов"Right (ICU, CLDR categories):
{count, plural, one {Удалён # файл} few {Удалено # файла} many {Удалено # файлов} other {Удалено # файла}}Reviewed 2026-10-12.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.