Free

Claude einen Artikel in 19 Sprachen übersetzen lassen

Ein Artikel, 19 Sprachen: Dateistruktur, Übersetzungs-Prompt, 5 reale Stolperfallen, POST in einem Zug.


Die offiziellen Dokumentationen von Anthropic und OpenAI gibt es nur auf Englisch. Das ist eine riesige Lücke im globalen Content-Ökosystem für KI-Entwickler. how2claude füllt genau diese Lücke — jeder Artikel erscheint in 19 Sprachen gleichzeitig: zh / en / zh-TW / ja / ko / es / pt-BR / id / vi / tr / ar / fr / de / it / ru / uk / pl / he / th.

Menschen damit zu beauftragen ist nicht realistisch (20 Übersetzungen pro Artikel, jede zu mehreren tausend Dollar). Claude machen lassen drückt die Grenzkosten gegen null — aber ein „Übersetz das ins Japanische" über den Zaun zu werfen, liefert einen Text mit klarem Maschinenübersetzer-Geschmack, bei dem die Stimme des Autors verdunstet ist. Was folgt, ist der komplette Ablauf, wie man das richtig macht: Dateistruktur, wie man den Übersetzungs-Prompt schreibt, wo Claude garantiert stolpert, wie man 19 Sprachen plus sprachspezifische Tweets in einem einzigen POST an die API schickt.


Die Kernentscheidung: Übersetzung vs. Lokalisierung

Zwei sehr unterschiedliche Dinge.

Übersetzung verschiebt Bedeutung von Sprache A nach B — das, was Google Translate tut. Liest sich „richtig", aber „flach".

Lokalisierung erhält Register, Rhythmus und Fachniveau des Autors und schreibt in der „Tech-Blog-Stimme" der Zielsprache neu. Das Ergebnis liest sich, als wäre es muttersprachlich verfasst.

Übersetzen ist für Claude ein 5-Minuten-Job; Lokalisierung erfordert, dass der Prompt Folgendes ausdrücklich festlegt:

  • Wer die Zielleserschaft ist (Entwickler, technische Teams)
  • Ein Referenzregister („soll wie dieser Blog klingen")
  • Begriffe, die in der Ausgangssprache bleiben müssen (API-Namen, Framework-Namen, Befehle, URLs)
  • Wo Neukomposition zulässig ist (lange Sätze aufbrechen, Metaphern durch solche ersetzen, die muttersprachliche Leser erkennen)

Der Befehl /write-article von how2claude transportiert eine Stilvorgabe pro Sprache:

Sprachdatei Stilvorgabe
ja.md Tech-Blog-Stimme, natürliches Japanisch
ko.md Tech-Blog-Stimme, natürliches Koreanisch
zh-TW.md Taiwanesischer Sprachgebrauch, traditionelle Zeichen
ar.md Modernes Standardarabisch (geschrieben)
id.md Standardindonesisch

Sieht aus wie eine Zeile mehr. Für Claude aber entscheidend — ohne diese Zeile ist der Default „Lehrbuch-Übersetzung".

Dateistruktur: 19 Sprachen wohnen in einem Verzeichnis

Ein Verzeichnis pro Entwurf, 20 Dateien:

docs/drafts/let-claude-translate-articles/
├── meta.json        # title + summary für alle 19 Sprachen
├── zh.md            # Chinesisch (Quelle, zuerst geschrieben)
├── en.md            # Englisch (erste Übersetzungswelle)
├── zh-TW.md
├── ja.md
├── ko.md
├── ...(14 weitere)
└── th.md

meta.json:

{
  "category_slug": "use-cases",
  "series_slug": "writing",
  "free": true,
  "title": {
    "zh": "让 Claude 把一篇文章翻译成 19 种语言",
    "en": "Letting Claude Translate One Article Into 19 Languages",
    "de": "Claude einen Artikel in 19 Sprachen übersetzen lassen",
    "...": "..."
  },
  "summary": {
    "de": "Ein Artikel, 19 Sprachen: Dateistruktur, Übersetzungs-Prompt, 5 reale Stolperfallen, POST in einem Zug.",
    "...": "..."
  }
}

Die erste Zeile jeder .md-Datei ist # Titel, der Rest ist Fließtext. Der Title wird nicht aus der ersten md-Zeile gezogen, sondern aus meta.json — so hat jede Sprache einen eigens zugeschnittenen Kurztitel, nicht den möglicherweise in der Übersetzung überlangen Einstiegssatz des Artikels.

Der Ablauf: zh schreiben, dann in 18 Sprachen ausstrahlen

Zwei Abläufe, die man vermeiden sollte:

Falsch: Kettenübersetzung. zh → en → ja → ko → ...
Problem: ja basiert auf en, ko auf ja — bei jedem Sprung geht ein wenig Bedeutung verloren. Bei th (Thai) angekommen, hat man Information aus vierter Hand.

Richtig: radiale Übersetzung. zh fertigstellen → en / ja / ko / ar / id / ... direkt aus der Quelle erzeugen.
Jede Sprache entsteht direkt aus dem Original, keine Zwischenstationen.

Prompt-Struktur (in /write-article verpackt):

Das ist ein Tech-Blog-Artikel über X, chinesische Quelle:
[komplette zh.md]

Übersetze in folgende Sprachen mit sprachspezifischen Vorgaben:
- ja.md: Tech-Blog-Stimme, natürliches Japanisch
- ko.md: Tech-Blog-Stimme, natürliches Koreanisch
- ar.md: Modernes Standardarabisch (geschrieben)
...

Regeln:
1. Die direkte, professionelle, leicht selbstironische Stimme des Autors erhalten
2. Codeblöcke, Befehle, API-Namen, URLs nicht übersetzen
3. Überschriften, Zwischenüberschriften, Absatzfluss dürfen neu komponiert werden
4. Pro Sprache separaten title ausgeben — kurz, mit Haken, keine wörtliche Übersetzung des Originaltitels

18 Sprachen parallel übersetzen, eine Claude-Session erledigt das. Ein wichtiges Detail: in derselben Session / derselben Modellversion machen — die Stimme driftet über Sessions und Modellgenerationen hinweg.

5 Stellen, an denen es wirklich bricht

1. Tweet-Zeichengrenzen variieren je nach Sprache

X zählt CJK-Zeichen (Chinesisch/Japanisch/Koreanisch) strenger. Ich habe Claude mit dieser Vorgabe Tweets generieren lassen:

  • Chinesische Tweets ≤ 140 Zeichen
  • Andere Sprachen ≤ 280 Zeichen

Beim ersten Durchlauf waren drei chinesische Tweets über dem Limit (160, 164, 152). Claude hatte die englischen Tweets wörtlich übersetzt — ein englischer Tweet mit 260 Zeichen landet im Chinesischen genau an der Grenze.

Regel: Chinesische Tweets müssen neu geschrieben, nicht übersetzt werden. Anforderungen: 140-Zeichen-Obergrenze, Hook Pflicht, Detailverlust akzeptiert.

2. zh-TW ist keine Zeichenkonvertierung

zhzh-TW verlockt zur Faulheit: durch einen Vereinfacht-nach-Traditionell-Konverter jagen. Zeichen stimmen, Wortschatz nicht:

zh zh-TW (falsch) zh-TW (richtig)
文件 文件 檔案
信息 信息 資訊
软件 軟件 軟體
视频 視頻 影片

Wenn Claude zh-TW machen soll, beides sagen: „taiwanesischer Sprachgebrauch, traditionelle Zeichen". „Nur traditionell" liefert eine reine Zeichenkonvertierung.

3. RTL-Sprachen (ar, he) zerschießen das Layout

Arabisch und Hebräisch lesen sich von rechts nach links. Rails-seitig braucht es <html dir="rtl"> und die rtl:-Varianten von Tailwind. Aber auch die Übersetzung selbst hat Fallstricke:

  • Codeblöcke bleiben auf Englisch, aber wenn ein arabischer Absatz einen Codeblock umschließt, braucht der Browser unicode-bidi: isolate, sonst wird der Code in den RTL-Fluss „gesogen"
  • Gemischte Interpunktion: Arabisch verwendet ، statt ,, ؟ statt ?. Claude greift per Default zu englischer Interpunktion; das muss man explizit sagen
  • Zahlenrichtung: Arabisch schreibt Ziffern links nach rechts (2026) innerhalb eines Absatzes, der rechts nach links verläuft. Browser regeln das, aber Claude bringt beim Rohtext-Schreiben oft Durcheinander

4. Claude glättet standardmäßig die Stimme des Autors

Die umgangssprachlichen Wendungen des Originals („in einem Rutsch", „aufs Maul gelegt", „voll reingeflogen") übersetzt Claude ins Japanische/Koreanische per Default in formelle Schriftformen (「一気に実装」「落とし穴」「失敗」) — Bedeutung passt, Ton verdampft.

Gegenmittel: im Prompt ausbuchstabieren — „die direkte, leicht selbstironische, informelle Tech-Blog-Stimme erhalten; nicht akademisieren". Selbst dann werden manche Sprachen (Deutsch, Russisch) einen Tick „formeller" als die Quelle landen — die Sprachen haben selbst einen Bias zum Schriftregister.

5. Platzhalter und Variablen werden nicht übersetzt

Strings im Code teilen sich in zwei Eimer — UI-Text (übersetzen) und Platzhalter/Variablennamen (nicht):

t("pricing.page_title")        # nicht übersetzen (i18n-Key)
"user_id"                      # nicht übersetzen (Variablenname)
"Monthly subscription"         # im Text als Beispiel gezeigt → nicht übersetzen

Für alles, was an Code angrenzt, ist „nicht übersetzen" der sicherere Default. Was wirklich übersetzt gehört, sind die i18n-Locale-Dateien (config/locales/xx.yml), und das ist eine andere Aufgabe.

Veröffentlichen: ein POST, 19 Sprachen

/publish-article schickt den Entwurf per POST an how2claude.com/api/articles:

{
  "category_slug": "use-cases",
  "series_slug": "writing",
  "free": true,
  "thread": true,
  "title":   { "zh": "...", "en": "...", "ja": "...", ... },
  "summary": { "zh": "...", "en": "...", ... },
  "content": { "zh": "<md>", "en": "<md>", ... },
  "tweets":  { "en": ["...", "..."], "zh": [...], ... }
}

Ein Request ist ~300KB groß (19 Sprachen × ~15KB). Der Server verteilt auf DB-Tabellen:

  • Tabelle articles, title / summary / content sind jsonb nach locale
  • Tabelle x_queue_tweets, nach locale + Account, in eine Planungs-Queue verteilt

Tweets gehen nur an die locales mit verbundenem X-Konto (aktuell en/zh/ja/ko/ar/id — 6). Sprachen ohne Konto senden []. Accounts abfragen:

Account.all.each { |a| puts "#{a.locale}: #{a.name}" }
# en: @how2claude
# zh: @howtoclaude
# ja: @how2claude_ja
# ko: @how2claude_ko
# ar: @how2claude_ar
# id: @how2claude_id

Checkliste

Claude einen Artikel in 19 Sprachen übersetzen lassen — vollständige Checkliste:

  1. zh (oder en) zuerst finalisieren, dann die anderen 18 Übersetzungen aus dieser Quelle ausstrahlen. Nicht verketten.
  2. Sprachspezifische Stilvorgabe gehört in den Prompt. „Natürliches Japanisch" reicht nicht — „Tech-Blog-Stimme, natürliches Japanisch" sagen.
  3. Title und summary separat übersetzen, nicht aus dem ersten Absatz des Textes ziehen. Alle 19 Titel/Summaries zentral in meta.json.
  4. Was nicht übersetzt wird, explizit auflisten: Codeblöcke, Befehle, API-Namen, URLs, i18n-Keys, Variablennamen. Was übersetzt wird: erklärender Text, Metaphern, Absatzstruktur.
  5. Tweets müssen neu geschrieben, nicht übersetzt werden. 140 Zeichen für Chinesisch, 280 für den Rest. Wörtliche Englisch-nach-Chinesisch-Übersetzung überschreitet immer das Limit.
  6. Für zh-TW „taiwanesischer Sprachgebrauch + traditionelle Zeichen" sagen; sonst nur Zeichenkonvertierung und der Wortschatz bleibt festländisch.
  7. RTL-Sprachen (ar, he) brauchen dir="rtl" + Tailwind-rtl:-Varianten auf Rails-Seite. Gemischte Interpunktion und Codeblock-Isolierung extra behandeln.
  8. Alle Sprachen in einem POST schicken — 19 Contents + 19 Title/Summary + Tweets für jeden verbundenen Account, ein Request ans Backend.

Der eigentliche Flaschenhals ist nicht die Übersetzungsqualität — Modelle der Claude-4-Klasse übersetzen ins Japanische/Koreanische/Arabische/Russische nahezu muttersprachlich. Der Flaschenhals ist ob man bereit ist, einen Artikel gleichzeitig vor Leser in 19 Sprachen zu stellen. Technisch braucht das 5 Minuten. Inhaltlich braucht es den Willen, 200-mal so viele Leser auf einen Schlag zu bedienen.