Wenn dein Repo bereits next-intl, react-i18next, i18next oder Lingui eingebunden hat — Locale-Ordner auf der Platte, Dependencies in package.json, Middleware oder Config-Dateien —, brauchst du kein weiteres Tool, das so tut, als würdest du bei null anfangen. globalize.now ist KI-gestützte Lokalisierungsinfrastruktur. Im L1-Modus (bereits internationalisiert) überspringt das Produkt das destruktive Setup-Grundgerüst und bleibt im Sync-Modus: liest deine Quellsprache, vergleicht andere Locales bei jedem Push und öffnet Pull Requests mit den Ergänzungen. Dieser Artikel beschreibt, was dieser Modus anfasst, was er bewusst nicht anfasst, und was zu tun ist, wenn die Erkennung danebenliegt.

Warum geht die meiste i18n-Beratung davon aus, dass du bei null anfängst?

Marketing-Texte für i18n-Tools zeichnen immer noch den „Greenfield“-Fall: keine Bibliothek installiert, keine Locale-Dateien, keine Extraktion durchgeführt. Die meisten produktiven Codebases sind davon weit entfernt.

In den letzten Wochen kamen drei völlig unabhängige Erstgespräche mit demselben Muster: Das Team hat i18n einmal versucht, etwas halbwegs Funktionierendes bekommen und dann aufgehört — weil es alles rauszureißen und neu zu machen schlimmer wirkte, als mit dem Durcheinander zu leben.

Falls das auf dich zutrifft, ist dieser Beitrag für dich geschrieben.

Wie sieht eine halb internationalisierte Codebase in der Praxis eigentlich aus?

Diese Muster tauchen immer wieder auf (Details anonymisiert):

  • Eine Next.js-App mit next-intl, bei der die meisten Komponenten t() verwenden, ältere Routen aber immer noch hartcodiertes Englisch ausliefern, weil die erste Migrationswelle nie abgeschlossen wurde.
  • Ein React-Projekt mit i18next, dessen Locale-Dateien zwar existieren, aber nur englische Werte enthalten — Übersetzen war immer für „nächstes Quartal“ geplant.
  • Ein messages/-Baum, in dem en.json voll und es.json praktisch leer ist.
  • Ein im Layout verdrahteter Sprachumschalter, der gelegentlich einen 404 auslöst, weil das Routing nur halb migriert wurde.

Keines dieser Projekte braucht globalize.now, um von vorn anzufangen. Sie brauchen globalize.now, um die Arbeit abzuschließen.

L0 versus L1 setup pathA decision tree showing that when globalize.now detects existing i18n on first run, it skips four destructive setup steps and goes straight to translating missing keys.your repoDETECTIONfirst-run scan of package.json + repoNO i18n FOUNDL0 pathi18n DETECTEDL1 pathinstall libraryextract stringsgenerate locale filesinject switchertranslateinstall libraryextract stringsgenerate locale filesinject switchertranslateSKIPPEDPR on every push
Die Erkennung verzweigt den Setup-Ablauf. L0 durchläuft alle fünf Schritte; L1 überspringt vier und geht direkt zur Synchronisation.

Nach welchen Signalen scannt globalize.now beim ersten Durchlauf?

Die Erkennung läuft in zwei Schritten, nicht in einem.

Verweise globalize.now zuerst auf das Repo. Wenn du es in der App verbindest, laufen Erkennung und einmalige Konvertierung automatisch für dich. Wenn dein Agent diesen Durchlauf lieber lokal machen soll, installiere die Skills — das legt ein paar Playbook-Dateien in .claude/skills/ ab und ändert sonst nichts an deinem Repo:

npx skills add globalize-now/globalize-skills

Prompte anschließend deinen Agent — Claude Code, Cursor oder Codex. Der Agent liest die installierten Skills und nutzt sie, um dein Repo zu scannen:

Set up localization for my project

Dieser zweite Schritt ist der Punkt, an dem die eigentliche Erkennung läuft. Der Agent sucht nach:

  • package.json-Dependencies: next-intl, react-i18next, i18next, @lingui/core, @lingui/react, @lingui/macro oder jedem i18next-*-Plugin.
  • Locale-Ordner: messages/ im Repo-Root, ein locales/-Ordner oder src/i18n/ mit Locale-Unterordnern.
  • Bestehende Locale-Dateien: en.json, en.po, en.yml, en.yaml oder die Standard-Locale-Datei, die deine Bibliothek bereits erwartet.
  • Framework-spezifische Config: i18n.config.ts, next-intl-Middleware, lingui.config.js oder Äquivalente.

Wenn mindestens zwei dieser Signale vorliegen, wird das Projekt als L1 behandelt — bereits internationalisiert —, und der Setup-Ablauf verzweigt, statt das vollständige Greenfield-Grundgerüst zu durchlaufen. Mehr Details stehen im Help-Center-Artikel zu bestehendem i18n.

Was fasst der L1-Modus bewusst nicht an?

Das ist der Teil, der die Leute am meisten interessiert. Im L1-Modus tut globalize.now Folgendes nicht:

  • Es führt keinen breit angelegten String-Extraktions-Durchlauf aus, der Komponenten nach hartcodierten Literalen durchsucht.
  • Es generiert keine neuen Übersetzungsschlüssel und ordnet die Key-Struktur, auf die du dich schon festgelegt hast, nicht um.
  • Es legt kein Grundgerüst für Locale-Dateien von Sprachen an, die du noch nicht konfiguriert hast.
  • Es fügt keinen Sprachumschalter ein. Hast du bereits einen, bleibt er bestehen. Hast du keinen, fügen wir keinen hinzu.
  • Es schreibt Routing, Middleware oder Framework-Config nicht für dich um.

Dein bestehendes i18n-Setup bleibt deins. In diesem Modus refaktorieren wir es nicht.

Was macht der L1-Sync-Modus nach der Erkennung?

L1 ist sync-first. Sobald die Erkennung abgeschlossen ist:

  1. Wir lesen deine bestehenden Locale-Dateien, um die aktuelle Key-Struktur und die Quellsprache zu erkennen.
  2. Du verbindest das GitHub-Repository über die globalize.now-CLI oder die Web-App.
  3. Bei jedem Push auf deinen main-Branch vergleichen wir die Quellsprachen-Datei mit den anderen Locales. Fehlende Übersetzungen werden mit KI-Output ergänzt, der das von dir konfigurierte Glossar und den Style Guide berücksichtigt.
  4. Ein Pull Request landet bei dir mit aktualisierten Locale-Dateien. Du prüfst und merged. Wir mergen niemals für dich.

Das ist der gesamte Ablauf. Kein Übersetzungs-Dashboard zum Beaufsichtigen. Keine manuellen Exporte. Kein Jonglieren mit Dateiformaten.

Zum Vergleich der L0-Walkthrough in Wie füge ich einer mit Cursor gebauten Next.js-App in 15 Minuten i18n hinzu? — dasselbe Produkt, ein anderer Einstiegspfad.

Was, wenn nur ein Teil der UI Übersetzungsaufrufe verwendet?

Das ist die typische Zwischen-Migrations-Situation: Neue Screens verwenden t(), ältere Screens lassen noch Literale durchsickern. Außerhalb des Sync-Modus behandelt die Skills-Pipeline bereits mit Keys versehene Strings als gesperrt: Sie konzentriert sich auf Literale, die noch nicht angebunden sind, und bewahrt bestehende Keys. Teams, die wöchentlich releasen, während sie mitten in dieser Migration stecken, sind der klassische „gemischte L1“-Nutzer in unseren Logs.

Für eine vollständige Agent-Konvertierungsgeschichte an einem verzwickten Baum siehe Was passiert, wenn ein KI-Agent ein echtes Monorepo internationalisiert?.

Was solltest du tun, wenn der Setup-Ablauf trotzdem alles eingerichtet hat?

Wir schärfen gerade die Erkennungslogik nach, damit der falsche Zweig nicht mehr ausgelöst wird. Falls npx skills add globalize-now/globalize-skills aber bereits einen Diff mit über 100 Dateien erzeugt hat, der deinen Locale-Ordner umschreibt, einen Umschalter einfügt, den du nicht wolltest, oder das Routing umbaut — committe nicht. Nutze das Feedback-Widget (unten rechts) mit deiner package.json-Dependency-Liste und einer kurzen Notiz dazu, wie deine Locale-Ordner aufgebaut sind; wir können das Repo dann manuell in den L1-Modus überführen. Ein Self-Service-CLI-Flag --existing-i18n kommt bald.

Die Wiederherstellung auf deinem Rechner besteht aus git restore . plus bei Bedarf git clean -fd. Es wurde nichts gepusht, nichts Produktives ist kaputtgegangen — der Agent hat nur deinen lokalen Branch berührt. Die vollständige Aufarbeitung findest du in globalize_skills hat zu viele Änderungen vorgenommen — was ist passiert?.

Warum ist „wir haben i18n versucht und sind stecken geblieben“ mittlerweile die Standardgeschichte?

Das ist kein Slogan, sondern ein Muster. Drei unabhängige Erstkontakte in sechs Wochen, drei Versionen von „Ja, das haben wir versucht, jetzt ist es ziemlich kaputt.“ Eine Chrome-Erweiterung mit zehntausenden Nutzern bekam einen Traffic-Spike aus Korea und legte damit eine halbfertige next-intl-Migration offen. Eine mit Lovable gebaute App brach beim Hinzufügen von Mehrsprachigkeit ihren eigenen Build und wurde zurückgerollt. Ein vibe-codetes React-und-Vite-Repo hatte i18next verdrahtet, etwa ein Drittel der Keys befüllt – und dann aufgehört.

Die makellose L0-Codebase, die auf der Suche nach einer Bibliothek ist, gibt es tatsächlich – aber sie ist nicht der Flaschenhals. Der Flaschenhals ist die Codebase, die das schon einmal versucht hat und bei der jetzt niemand mehr die Scherben aufsammeln will.

Für genau diese Codebase gibt es den L1-Modus.

Was kostet das?

20 € pro Monat. Ein Plan. Rund 16.000 Wörter (etwa 80 typische App-Screens) sind enthalten. 5 € Übersetzungsguthaben bei der Anmeldung. Egal ob du bei L0 und auf der grünen Wiese startest oder bei L1 drei Jahre Locale-Altlasten mitschleppst – der Preis bleibt gleich. Wir messen Durchsatz und Automatisierung, nicht wie chaotisch der erste Commit war.

Welche Beiträge und Help-Center-Artikel solltest du als Nächstes lesen?

Release die Sprachen, die dein Traffic ohnehin erwartet – verbinde dein Repo auf globalize.now, oder lies, wie die Git-Push-Automatisierung sich in einen bestehenden Team-Workflow einfügt.

globalize.now konvertiert hartcodierte App-Texte in übersetzungsreife Locale-Dateien und hält sie aktuell, während Sie veröffentlichen.

Probiere globalize.now kostenlos