Blog
Feature
14. Februar 20267 min

i18n: 1993 Schlüssel, 6 Sprachen, 9 automatische Übersetzungsdurchläufe

TAMSIV wurde auf Französisch geboren. Die gesamte Benutzeroberfläche, jede Fehlermeldung – alles fest im Code verankert. Als ich beschloss, 6 Sprachen (FR, EN, DE, ES, IT, PT) zu unterstützen, zählte ich die zu extrahierenden Zeichenketten: 1993 Übersetzungsschlüssel.

Die Extraktion

Erster Schritt: Jede französische Zeichenkette durch einen Aufruf t('key') ersetzen. In 35 Dateien. Manuell. Ich habe die Schlüssel nach Bildschirm strukturiert: feed.empty_state, agenda.filter.participating, profile.settings.language.

Das automatische Übersetzungsskript

1993 Schlüssel manuell in 5 Sprachen übersetzen? Unmöglich. Ich habe ein Skript npm run translate geschrieben, das die französischen Schlüssel an OpenRouter (Gemini 2.5 Flash) sendet. Das LLM versteht den Anwendungskontext – „Mémo vocal“ wird zu „Voice memo“ und nicht zu „Vocal memo“.

Die 9 Durchläufe

Der erste Durchlauf übersetzte den Großteil des Korpus. Danach fügte jede neue Funktion Schlüssel hinzu: Gamification (47 Schlüssel), Agenda (62), Gruppen (89). Das Skript erkennt fehlende Schlüssel und übersetzt nur das Delta neu.

Die automatische Spracherkennung

Beim ersten Start erkennt TAMSIV die Systemsprache. Wenn sie unterstützt wird, wird sie verwendet. Andernfalls wird auf Englisch zurückgegriffen. Die Auswahl wird in der Datenbank gespeichert.

Die Synchronisierung aufrechterhalten

Das Schwierigste: die Wartung. Jede Änderung im Französischen muss weitergegeben werden. Wenn fr.json geändert wird, läuft das Skript automatisch über GitHub Actions. 6 Sprachen werden in nahezu Echtzeit für wenige Cent pro Durchlauf gepflegt.