Executive-Brief Translation Guide

May 21, 2026 · View on GitHub

Canonical reference for the news-translate workflow.

This guide tells the AI translator exactly how to convert an English analysis/daily/<date>/<slug>/executive-brief.md source into the 13 non-English executive-brief_<lang>.md companions that make up the 14-language matrix consumed by downstream article generators.

AI-First Principle: The AI MUST translate every word of every section. Scripted dictionary substitution, machine-translation API passthrough, or sed/awk/regex-based string replacement of narrative prose is FORBIDDEN. Validation gates in scripts/validate-brief-translations.js will reject stub or copied output.


1. Scope

1.1 Source

Every file matching analysis/daily/<YYYY-MM-DD>/<slug>/executive-brief.md is in scope. The legacy extended/executive-brief.md location is in scope only when explicitly requested via --include-extended in the discovery script — by default only the canonical path is translated.

1.2 Target

For each in-scope source, produce siblings:

executive-brief_sv.md   executive-brief_da.md   executive-brief_no.md
executive-brief_fi.md   executive-brief_de.md   executive-brief_fr.md
executive-brief_es.md   executive-brief_nl.md   executive-brief_ar.md
executive-brief_he.md   executive-brief_ja.md   executive-brief_ko.md
executive-brief_zh.md

13 files per source. Together with the English executive-brief.md that covers the canonical 14 languages (en, sv, da, no, fi, de, fr, es, nl, ar, he, ja, ko, zh).

1.3 Languages and writing systems

CodeLanguageFamily / ScriptRTL?CJK?
svSwedishNordic / Latinnono
daDanishNordic / Latinnono
noNorwegian BokmålNordic / Latinnono
fiFinnishUralic / Latinnono
deGermanWest Germanic / Latinnono
frFrenchRomance / Latinnono
esSpanish (es-ES)Romance / Latinnono
nlDutchWest Germanic / Latinnono
arModern Standard ArabicSemitic / Arabicyesno
heModern HebrewSemitic / Hebrewyesno
jaJapaneseJaponic / kanji + kananoyes
koKoreanKoreanic / Hangulnoyes
zhChinese (Simplified, zh-CN)Sinitic / Hannoyes

2. Mandatory preservation rules (FIXED TOKENS)

These items MUST appear verbatim — never transliterated, translated, or reformatted. The automated fixed-token gate rejects drops of exact source instances for the validator-enforced subset below:

  • IMF, WEO, Fiscal Monitor, World Bank
  • data-vintage="WEO-April-2026" and any other data-vintage="WEO-…" attribute
  • EP adopted-text references: TA-10-2026-0160
  • EP procedure IDs: 2024/0001(COD), 2026/2050(INI) etc.

The remaining preservation rules are mandatory editorial checks. Some are partly covered by other automated gates (heading parity, Mermaid block parity, length floor), but translators must verify them manually before flushing:

  • World Economic Outlook
  • ISO country codes in tables: DE, FR, IT …
  • ISO currency codes: EUR, USD, GBP
  • Numerical figures and units: 2.3%, €450 bn, EUR 12.4 bn
  • Confidence-level emoji markers: 🟢 HIGH, 🟡 MEDIUM, 🔴 LOW
  • Classification stamps: UNCLASSIFIED // OPEN SOURCE
  • The literal heading text BLUF (acronym is treated as a proper noun)
  • All HTML/Markdown structural elements (links, headings, lists, tables, code fences, <canvas data-chart-config> blocks if present)

For Latin-script targets (sv, da, no, fi, de, fr, es, nl) these tokens stay identical to the source. For non-Latin scripts (ar, he, ja, ko, zh) the tokens remain in Latin/Arabic numerals and are wrapped with their natural script-direction handling (RTL embedding marks are added only if the editor truly needs them — most modern Markdown renderers handle this automatically).


3. Structural fidelity rules

The Markdown structure of the translation MUST mirror the source:

  1. Same number of # and ## headings, same order — H1 and H2 counts are enforced strictly by the heading-parity gate (zero tolerance). ### (H3) counts may drift by one to accommodate legitimate sub-bullet fusion in CJK languages.
  2. Same number of list items per list.
  3. Same number of table rows and columns; column headers are translated, numeric cells are preserved.
  4. Same number of horizontal-rule --- separators.
  5. Same number of > blockquote lines.
  6. No new sections, no merged sections, no deletions. Watch for duplicate-titled sections (e.g. two ## IMF Economic Context … blocks). They are intentional and must both round-trip — do NOT collapse them into one.
  7. Emoji markers (🎯, 📋, 🔑, 🟢, 🟡, 🔴, ⏱️, 🛡️, 📊) stay in identical positions.
  8. Frontmatter: if the source file has YAML frontmatter (--- ... ---), it is copied verbatim into the translation. Frontmatter keys are NOT translated; only title: / description: values are localised.
  9. Citation footnotes / source lists: URLs are preserved verbatim; the anchor / link-text is localised.
  10. ## 🌍 14-Language SEO Metadata Pack table: when the source brief contains this 14-row table, the translated brief must keep all 14 rows in the same order (en, sv, da, no, fi, de, fr, es, nl, ar, he, ja, ko, zh). Each row's Title candidate and Description candidate cells stay per-language — they are not re-translated into the target language. The downstream article generator reads the translated brief's own row for the target language as the authoritative SEO metadata for that locale (see ../../.github/prompts/04-article-generation.md § 6). The translator may improve the target-language row during Pass 2 if the source row is empty or weak, but must not erase rows for other languages.

4. Per-language style register

4.1 Nordic (sv / da / no / fi)

  • Formal register, indicative mood.
  • Use the official EP designations per language (see § 5).
  • Swedish: avoid du-tilltal — keep impersonal man / Europaparlamentet.
  • Finnish: use partitive correctly; case agreement is non-negotiable.
  • Fixed-token preservation (validator gate #5) — recurring Nordic failure mode. The Latin-script alphabet matches English and the model is tempted to localise IMF/WEO acronyms. Don't:
    • Norwegian (no): IMF forblir IMF — aldri IPF / IMV / Det internasjonale valutafondet / Pengefondet. WEO forblir WEO — aldri Verdens økonomiske utsikter. World Bank forblir World Bank der kilden har World Bank.
    • Swedish (sv): IMF förblir IMF — aldrig IVF / Internationella valutafonden. WEO förblir WEO.
    • Danish (da): IMF forbliver IMF — aldrig IMV / Den Internationale Valutafond. WEO forbliver WEO.
    • Finnish (fi): IMF säilyy muodossa IMF — ei koskaan KVR / Kansainvälinen valuuttarahasto. WEO säilyy WEO.
    • For all four: Fiscal Monitor stays Fiscal Monitor; data-vintage="WEO-…" stays verbatim; TA-NN-YYYY-NNNN stays verbatim. When in doubt: if the English source uses the Latin acronym, the Nordic translation uses the same Latin acronym.

4.2 EU Core (de / fr / es / nl)

  • Formal register; Sie (de), vous (fr), usted plural form (es) where direct address is unavoidable. Prefer impersonal constructions.
  • German: capitalise all nouns; use the EP's official German style (Europäisches Parlament, not EU-Parlament in titles).
  • French: keep the Académie française register; avoid Anglicisms unless the source uses one as a fixed token (e.g. Big Tech).
  • Spanish: peninsular Spanish (es-ES); avoid Latin-American specific vocabulary.
  • Dutch (nl): formal u-form where direct address is unavoidable; prefer impersonal constructions. Fixed-token preservation (validator gate #5) is the most common Dutch failure mode — the IMF/WEO acronyms must stay in Latin script as-is:
    • IMF blijft IMF — nooit IMV of Internationaal Monetair Fonds in plaats van het acroniem.
    • WEO blijft WEO — nooit Wereldwijde Economische Vooruitzichten of Wereld Economische Vooruitblik.
    • World Bank blijft World Bank — nooit Wereldbank als die in de bron World Bank is.
    • Fiscal Monitor blijft Fiscal Monitor; data-vintage="WEO-…" blijft woord-voor-woord ongewijzigd. When in doubt: if the English source uses the Latin acronym, the Dutch translation uses the same Latin acronym.

4.3 RTL (ar / he)

  • Arabic: Modern Standard Arabic (MSA), formal political register; follow the EP's Arabic style guide if available, else use IATE.
  • Hebrew: formal modern Hebrew; do not add diacritics (nikud) unless the source carries them.
  • Markdown is direction-agnostic; renderers detect RTL from script. Do not insert U+200F (RLM) marks except when truly necessary to disambiguate a Latin-script token inside an Arabic sentence.
  • Numerals: keep Western Arabic numerals (0–9); do not switch to Eastern Arabic-Indic digits.

4.4 CJK (ja / ko / zh)

  • Japanese: です・ます form (desu-masu / polite register). Use full-width punctuation (。, 、, 「」).
  • Korean: 합쇼체 (formal polite). Punctuation: half-width , and . per modern South-Korean publishing convention. Use spaces between eojeol (word units).
  • Chinese: Simplified characters only (zh-CN). Full-width punctuation (。, ,, 「」 or ""). Do not mix Traditional characters.
  • For all three: keep proper nouns (IMF, EP body names) in Latin script.

5. Per-language EP terminology (canonical pairs)

ENsvdanofidefresnl
European ParliamentEuropaparlamentetEuropa-ParlamentetEuropaparlamentetEuroopan parlamenttiEuropäisches ParlamentParlement européenParlamento EuropeoEuropees Parlement
Plenary sessionplenarsammanträdeplenarmødeplenumsmøtetäysistuntoPlenarsitzungséance plénièresesión plenariaplenaire vergadering
CommitteeutskottudvalgkomitévaliokuntaAusschusscommissioncomisióncommissie
RapporteurföredragandeordførerordføreresittelijäBerichterstatterrapporteurponenterapporteur
Legislative procedurelagstiftningsförfarandelovgivningsprocedurelovgivningsprosedyrelainsäädäntömenettelyGesetzgebungsverfahrenprocédure législativeprocedimiento legislativowetgevingsprocedure
ResolutionresolutionbeslutningresolusjonpäätöslauselmaEntschließungrésolutionresoluciónresolutie
Adopted textantagen textvedtaget tekstvedtatt teksthyväksytty tekstiangenommener Texttexte adoptétexto aprobadoaangenomen tekst
VoteomröstningafstemningavstemningäänestysAbstimmungvotevotaciónstemming
ENarhejakozh
European Parliamentالبرلمان الأوروبيהפרלמנט האירופי欧州議会유럽의회欧洲议会
Plenary sessionالجلسة العامةמליאה本会議본회의全体会议
Committeeاللجنةועדה委員会위원회委员会
Rapporteurالمقررמדווח報告者보고자报告员
Legislative procedureالإجراء التشريعيהליך חקיקה立法手続き입법절차立法程序
Resolutionقرارהחלטה決議결의决议
Voteتصويتהצבעה採決표결表决

Authoritative external references:


6. Per-section translation contract

The English executive brief always contains these sections (see analysis/templates/executive-brief.md for the source-of-truth template). Each must be translated in full — partial coverage fails the length-floor gate.

SectionTranslate?Notes
Title (# Executive Brief …)yesKeep the literal word Executive Brief translated; keep the slug/date suffix verbatim.
Metadata line (`Date: …Article Type: …`)yes (labels)
**Classification:** UNCLASSIFIED // OPEN SOURCElabel onlyTranslate Classification; keep the stamp verbatim.
## 🎯 BLUFyesKeep emoji + acronym BLUF. Translate the heading text and body.
## 📋 60-Second ReadyesHeading text translated; preserve the literal 60-second numerical anchor.
Key facts listyesPreserve all dates, TA-IDs, names.
## 🔑 Top Trigger EventsyesSub-headings and bullets fully translated.
Coalition / actor listsyesGroup abbreviations (EPP, S&D, Renew, Greens/EFA, ECR, PfE, The Left) stay verbatim.
Confidence markerspreserve🟢 HIGH, 🟡 MEDIUM, 🔴 LOW verbatim.
Citation footnotes / URLsURL verbatim, anchor translated

7. Quality dimensions (scored in the run summary)

DimensionWeightWhat the validator checks
Accuracy40 %No additions, no omissions vs. source.
Fluency20 %Natural target-language phrasing.
Terminology20 %EP/EU vocabulary per § 5.
Completeness10 %All sections, lists, table rows present.
Formatting10 %Heading levels, list counts, FIXED TOKENS preserved.

Automated gates that block PR creation when violated:

  1. Filename ↔ language code — executive-brief_<lang>.md with <lang> in TARGET_LANGS.
  2. Source presence — sibling executive-brief.md exists.
  3. Length floor — translated byte size ≥ 50 % of source byte size.
  4. No English fall-through — fewer than 5 hits of EN_PATTERNS (see scripts/validate-brief-translations.js).
  5. Fixed-token preservation — every IMF/WEO/EP/data-vintage token in the source must appear in the translation.
  6. Heading parity — H1 and H2 counts must match the source exactly (H2_TOLERANCE = 0); H3 counts may differ by at most H3_TOLERANCE (1). Catches the single most common AI failure: silently dropping a ## Section heading (often a duplicate-titled section such as a ## IMF Economic Context — May 2026 Update addendum that the translator collapses into the earlier ## IMF Economic Context).
  7. Mermaid block parity — every ```mermaid block opener in the source must appear at least once in the translation. Diagrams are machine-readable and round-trip verbatim.

The validator report totals includes byGate and byLang aggregations so operators can see at a glance which gates and which languages are failing without parsing the full violations list.


8. Workflow contract (summary)

The full workflow contract lives in .github/workflows/news-translate.md. Operating-model highlights:

  • Trigger: cron 30 6,12,18 * * * (3×/day) + workflow_dispatch.
  • Discovery: node scripts/discover-untranslated-briefs.js --output ….
  • Capacity: 2 source briefs / run × 13 languages = 26 translated files per run by default (raise to 3 via the max_briefs dispatch input on catch-up days).
  • Flush cadence: after every fully-translated brief (13 files) call safeoutputs___create_pull_request to refresh the PR — typical run is 2 flushes + 1 final.
  • Single PR per run-date: branch news/translate-briefs-<YYYY-MM-DD>; the same branch is reused across the 3 daily runs on the same date.

9. Anti-patterns (the validator will catch these)

Anti-patternWhy it fails
Copying the English source and changing only the language tagEnglish fall-through gate
Producing a 30-line stub when the source is 150 linesLength-floor gate
Translating IMF to FMI (Spanish/French)Fixed-token preservation gate
Translating EP adopted-text IDs (TA-10-2026-0160)Fixed-token preservation gate
Localising data-vintage="WEO-April-2026" to data-vintage="WEO-abril-2026"Fixed-token preservation gate
Dropping 3 of 4 ## Section headings or merging them into proseHeading-parity gate
Dropping a single ## Section heading (e.g. a duplicate-titled addendum)Heading-parity gate (H2_TOLERANCE = 0)
Omitting a ```mermaid diagram or replacing it with a prose summaryMermaid block parity gate
Reorganising section orderStructural fidelity rule § 3.1
Adding a new section ("Translator's note")Structural fidelity rule § 3.6
Using machine-translation passthrough without quality reviewManual review / language register checks

  • analysis/methodologies/synthesis-methodology.md § executive-brief — source template authoring guide.
  • analysis/templates/executive-brief.md — source template.
  • analysis/templates/executive-brief-translation-template.md — empty target-language shell.
  • scripts/discover-untranslated-briefs.js — queue builder.
  • scripts/validate-brief-translations.js — automated quality gate.
  • .github/workflows/news-translate.md — workflow that orchestrates the run.