Die Frage, die jeder Entwickler stellt
Sie fügen Ihrer App Internationalisierung hinzu. Ihre erste Google-Suche führt Sie zur MDN Intl API Dokumentation. Sie sieht vielversprechend aus: Datumsformatierung, Zahlenformatierung, sogar relative Zeitformatierung, alles im Browser eingebaut.
Warum sollten Sie etwas anderes brauchen?
Hier ist der Punkt: Die Intl API ist fantastisch für Formatierung, aber Internationalisierung ist nicht nur Formatierung. Es geht um Content-Management, Übersetzungs-Workflows, Kontext für Übersetzer, Versionskontrolle und Automatisierung.
Dieser Guide erklärt genau, was der Browser kann (und nicht kann), und wann Sie tatsächlich ein Übersetzungsmanagementsystem benötigen.
Was die Browser Intl API tatsächlich macht
Das JavaScript Intl Objekt bietet locale-bewusste Formatierung. Das ist es. Keine Übersetzungen, kein Content-Management: Formatierung.
Intl API Fähigkeiten
Zahlenformatierung:
JavaScript1// US Format 2new Intl.NumberFormat('en-US').format(1234567.89); 3// "1,234,567.89" 4 5// Deutsches Format 6new Intl.NumberFormat('de-DE').format(1234567.89); 7// "1.234.567,89" 8 9// Währung 10new Intl.NumberFormat('ja-JP', { 11 style: 'currency', 12 currency: 'JPY' 13}).format(99000); 14// "¥99,000"
Datum/Zeit Formatierung:
JavaScript1const date = new Date('2026-01-15'); 2 3// US Format 4new Intl.DateTimeFormat('en-US').format(date); 5// "1/15/2026" 6 7// UK Format 8new Intl.DateTimeFormat('en-GB').format(date); 9// "15/01/2026" 10 11// Langes Format mit Zeit 12new Intl.DateTimeFormat('fr-FR', { 13 dateStyle: 'full', 14 timeStyle: 'short' 15}).format(date); 16// "mercredi 15 janvier 2026 à 00:00"
Relative Zeitformatierung:
JavaScript1const rtf = new Intl.RelativeTimeFormat('en', { numeric: 'auto' }); 2 3rtf.format(-1, 'day'); // "yesterday" 4rtf.format(2, 'week'); // "in 2 weeks" 5rtf.format(-3, 'month'); // "3 months ago"
Pluralisierungsregeln:
JavaScript1const rules = new Intl.PluralRules('en-US'); 2rules.select(0); // "other" 3rules.select(1); // "one" 4rules.select(2); // "other" 5 6const rulesArabic = new Intl.PluralRules('ar-EG'); 7rulesArabic.select(0); // "zero" 8rulesArabic.select(1); // "one" 9rulesArabic.select(2); // "two" 10rulesArabic.select(5); // "few" 11rulesArabic.select(11); // "many"
Listenformatierung:
JavaScript1const list = new Intl.ListFormat('en', { style: 'long', type: 'conjunction' }); 2list.format(['apples', 'oranges', 'bananas']); 3// "apples, oranges, and bananas" 4 5const listFr = new Intl.ListFormat('fr', { style: 'long', type: 'conjunction' }); 6listFr.format(['pommes', 'oranges', 'bananes']); 7// "pommes, oranges et bananes"
Das ist mächtiges Zeug. Was fehlt also?
Was die Intl API nicht kann
Hier bleiben Entwickler stecken. Die Intl API bewältigt nicht:
1. Übersetzungsinhalte
Die Intl API speichert oder verwaltet keine übersetzten Strings. Sie brauchen immer noch:
JavaScript1// ❌ Das existiert nicht 2const t = Intl.translate('welcome.title', 'fr'); 3 4// ✅ Das bauen Sie selbst 5const translations = { 6 en: { "welcome.title": "Welcome" }, 7 fr: { "welcome.title": "Bienvenue" }, 8 es: { "welcome.title": "Bienvenido" } 9};
Sie sind verantwortlich für:
- Laden von Übersetzungsdateien
- Organisieren der Schlüsselstruktur
- Verwalten von Fallbacks
- Erkennen der Benutzer-Locale
- Dynamisches Sprachwechseln
2. Komplexe Nachrichtenformatierung
Die Intl API kann keine Variablen in Übersetzungen verarbeiten:
JavaScript1// Was Sie brauchen 2"Hello {name}, you have {count} new messages" 3 4// Was Intl.MessageFormat kann (neuere API) 5const msg = new Intl.MessageFormat( 6 "Hello {name}, you have {count, plural, one {# message} other {# messages}}", 7 "en" 8); 9msg.format({ name: "Sarah", count: 3 }); 10// "Hello Sarah, you have 3 messages"
Aber Intl.MessageFormat ist:
- Noch in Stage 1 Proposal (nicht standardisiert)
- Nur in Chrome 117+ mit Flag verfügbar
- Stand 2026 nicht produktionsreif
Die meisten Entwickler verwenden ICU Message Format über Bibliotheken wie @formatjs/intl oder messageformat.
3. Übersetzungs-Workflow
Null Unterstützung für:
- Senden von Strings an Übersetzer
- Tracking des Übersetzungsstatus
- Verwalten von Review-Zyklen
- Versionskontrolle für Übersetzungen
- Zusammenarbeit zwischen Entwicklern und Linguisten
4. Kontext für Übersetzer
Übersetzer müssen sehen:
- Wo der Text in der UI erscheint
- Zeichenlimits
- Screenshots
- Verwendungshinweise
Die Intl API hat kein Konzept dafür.
5. Automatisierung
Keine eingebaute Unterstützung für:
- Extrahieren von Strings aus Code
- Auto-Erkennung fehlender Übersetzungen
- CI/CD Integration
- Pushen von Updates over-the-air
Der hybride Ansatz: Das Beste aus beiden Welten
Die meisten Produktions-Apps verwenden die Intl API für Formatierung und eine Bibliothek/TMS für Übersetzungsmanagement.
Beispiel: React App mit next-intl
TSX1import { useTranslations } from 'next-intl'; 2import { useFormatter } from 'next-intl'; 3 4function ProductCard({ product }) { 5 const t = useTranslations('products'); 6 const format = useFormatter(); 7 8 return ( 9 <div> 10 {/* Übersetzung aus TMS/Dateien */} 11 <h2>{t('title', { name: product.name })}</h2> 12 13 {/* Formatierung über Intl API */} 14 <p>{format.number(product.price, { style: 'currency', currency: 'USD' })}</p> 15 <time>{format.dateTime(product.releaseDate, { dateStyle: 'medium' })}</time> 16 </div> 17 ); 18}
Die Bibliothek (next-intl) behandelt:
- Laden von Übersetzungsdateien
- Verwalten der aktuellen Locale
- Bereitstellen der
t()Funktion - Fallback-Logik
Die Intl API (über format) behandelt:
- Zahlenformatierung
- Datumsformatierung
- Währungssymbole
- Locale-spezifische Konventionen
Wann Browser-Native ausreicht
Verwenden Sie nur die Intl API wenn:
1. Einfache Formatierungsanforderungen
Sie brauchen nur Daten, Zahlen, Währungen korrekt formatiert:
JavaScript1// Ein Dashboard mit Metriken 2const dashboard = { 3 users: Intl.NumberFormat(locale).format(1543298), 4 revenue: Intl.NumberFormat(locale, { style: 'currency', currency }).format(42000), 5 lastUpdated: Intl.DateTimeFormat(locale, { dateStyle: 'medium' }).format(new Date()) 6};
2. Kein benutzersichtbarer Text
Ihre App hat minimalen UI-Text (z.B. ein Datenvisualisierungstool, internes Admin-Panel).
3. Single-Market Fokus
Sie bauen für eine Region und wollen nur korrekte Zahlen-/Datumsformatierung.
4. Lernen/Prototyping
Sie bauen eine Demo oder lernen Internationalisierungskonzepte.
Wann Sie ein Übersetzungsmanagementsystem brauchen
Verwenden Sie ein TMS (wie IntlPull, Lokalise oder Phrase) wenn:
1. Mehrere Sprachen
Sie zielen auf 3+ Sprachen. Übersetzungsdateien manuell zu verwalten wird schnell schmerzhaft.
Schmerzpunkte ohne TMS:
- Übersetzer bearbeiten JSON/YAML Dateien direkt (bricht Syntax)
- Keine Sichtbarkeit was übersetzt vs. fehlt
- Kein Weg zu tracken "wer hat was wann übersetzt"
- Merge-Konflikte in Git wenn mehrere Übersetzer arbeiten
- Kein Review-Workflow
Mit TMS:
- Web-UI für Übersetzer (kein Code-Zugang nötig)
- Automatisches Tracking des Übersetzungsstatus
- Eingebauter Review/Genehmigungsworkflow
- Keine Merge-Konflikte (TMS handhabt Sync)
2. Häufige Content-Updates
Sie fügen wöchentlich Features hinzu. Ständig erscheinen neue Strings.
Manueller Workflow:
- Entwickler fügt englische Strings hinzu
- Strings in Spreadsheet exportieren
- Übersetzer per E-Mail kontaktieren
- Auf Antwort warten
- Zurück in JSON copy-pasten
- Deployen
TMS Workflow:
- Entwickler pusht Code mit neuen Strings
- TMS erkennt automatisch fehlende Übersetzungen
- Übersetzer werden benachrichtigt
- Übersetzungen syncen automatisch zurück zum Code
- Deployen
IntlPulls CLI macht das in einem Befehl:
Terminal1npx @intlpullhq/cli upload 2# Extrahiert neue Strings, lädt zur Plattform hoch 3# Übersetzer sehen sie sofort 4 5npx @intlpullhq/cli download 6# Lädt neueste Übersetzungen herunter
3. Nicht-technische Übersetzer
Ihre Übersetzer sind keine Entwickler. Sie können nicht mit JSON-Dateien oder Git arbeiten.
Was Übersetzer brauchen:
- Visueller Kontext (wo erscheint dieser Text?)
- Zeichenlimits
- Verwendungshinweise ("Erscheint auf Buttons, kurz halten")
- Fähigkeit Platzhalter zu sehen:
{name},{count} - Vorschau ihrer Übersetzungen in der tatsächlichen UI
TMSs bieten übersetzerfreundliche Interfaces. IntlPull zeigt Live-Vorschauen, damit Übersetzer ihre Änderungen im Kontext sehen.
4. Maschinelle Übersetzung + Menschliche Review
Sie wollen KI für initiale Übersetzungen nutzen, aber Menschen reviewen lassen.
Typischer Workflow:
- Auto-Übersetzen mit ChatGPT/DeepL für alle Strings
- Menschen reviewen und korrigieren Fehler
- Tracken was reviewed wurde vs. auto-generiert
TMSs integrieren sich mit MT-Engines und tracken Übersetzungsquelle (Mensch vs. Maschine).
5. Over-the-Air Updates
Sie wollen Übersetzungen aktualisieren ohne Ihre App neu zu deployen.
Anwendungsfall: Sie launchen auf Spanisch, aber Benutzer melden einen Übersetzungsfehler. Ohne OTA:
- Übersetzung im Code korrigieren
- In Git committen
- CI/CD Build
- In Produktion deployen
- Benutzer bekommen Update (vielleicht Tage später)
Mit OTA (IntlPulls Ansatz):
- Übersetzung in Web-UI korrigieren
- Auf "Veröffentlichen" klicken
- Apps holen neue Übersetzungen sofort
- Kein Deployment nötig
Das ist kritisch für mobile Apps wo App-Store-Review Tage dauert.
6. Zusammenarbeit im großen Maßstab
Mehrere Personen arbeiten an Übersetzungen:
- Entwickler fügen Quellinhalt hinzu
- Übersetzer übersetzen
- Reviewer genehmigen
- Marketing bearbeitet Texte
Ohne TMS ist das Chaos. Jeder überschreibt sich gegenseitig in Git.
Entscheidungsframework
| Szenario | Lösung | Warum |
|---|---|---|
| Internes Tool, 1 Sprache, Datum/Zahlenformatierung | Nur Intl API | Einfach, kein Übersetzungsmanagement nötig |
| Marketing-Site, 3-5 Sprachen, statischer Content | Intl API + JSON Dateien | Übersetzungsdateien sind ohne TMS handhabbar |
| SaaS Produkt, 10+ Sprachen, häufige Updates | Intl API + TMS | Braucht Workflow-Automatisierung, Zusammenarbeit, OTA |
| Mobile App, 5+ Sprachen, App-Store-Verzögerungen | Intl API + TMS mit OTA | Kann nicht auf App-Store-Genehmigung für Übersetzungskorrekturen warten |
| E-Commerce, 20+ Sprachen, Produktbeschreibungen | Intl API + TMS | Hohes Content-Volumen, braucht MT + menschliche Review |
Häufige Missverständnisse
"Ich kann mein eigenes TMS bauen"
Können Sie, aber es dauert 6+ Monate um zu matchen was existierende TMSs bieten.
Was Sie bauen werden:
- Web-UI für Übersetzer
- String-Extraktions-Skript
- Sync-Logik (Code ↔ Plattform)
- Zugangskontrolle (wer kann was bearbeiten)
- Translation Memory
- Suche/Filterung
- Versionshistorie
- API
- CLI
Das ist ein Produkt, kein Wochenendprojekt. Es sei denn Übersetzungsmanagement ist Ihre Kernkompetenz, nutzen Sie eine existierende Lösung.
"TMSs sind teuer"
Manche sind (Lokalise, Phrase verlangen $500+/Monat).
Aber Indie-freundliche Optionen existieren:
- IntlPull: Kostenlose Stufe, $29/Monat für kleine Teams, OTA-Updates inklusive
- Tolgee: Open-Source Option
- Crowdin: Kostenlos für Open-Source Projekte
"TMSs binden Sie"
Die meisten unterstützen Standardformate (JSON, YAML, XLIFF). Sie können exportieren und migrieren.
IntlPull speichert Übersetzungen standardmäßig in Ihrem Git-Repo. Sie besitzen Ihre Daten.
Der IntlPull Ansatz
IntlPull kombiniert das Beste aus beiden:
Nutzt Intl API für Formatierung:
JavaScript1// IntlPull SDKs wrappen Intl API für Formatierung 2const { t, format } = useIntlPull(); 3 4// Übersetzungsmanagement 5t('welcome.title'); 6 7// Formatierung über Intl API 8format.number(1234.56, { style: 'currency', currency: 'USD' });
Fügt hinzu was fehlt:
- CLI für Sync von Übersetzungen:
npx @intlpullhq/cli sync --watch - Web-UI für Übersetzer (visueller Kontext, Screenshots)
- Git-Integration (bidirektionaler Sync)
- OTA-Updates (sofortige Übersetzungs-Pushes)
- Eingebaute maschinelle Übersetzung (ChatGPT, DeepL)
- Translation Memory (Wiederverwendung vergangener Übersetzungen)
Developer Experience:
Terminal1# Tag 1: Setup 2npx @intlpullhq/cli init 3 4# Täglicher Workflow 5npx @intlpullhq/cli upload # Neue Strings hochladen 6npx @intlpullhq/cli download # Übersetzungen herunterladen 7 8# Deploy 9npm run build # Übersetzungen werden automatisch gebündelt
Übersetzer arbeiten in der Web-UI. Entwickler verlassen nie ihr Terminal.
Migrationspfad
Wenn Sie gerade nur die Intl API und JSON-Dateien verwenden, hier wie Sie ein TMS hinzufügen:
Schritt 1: Aktuellen Stand prüfen
Terminal1# Zählen Sie Ihre Übersetzungsdateien 2find . -name "*.json" -path "*/locales/*" | wc -l 3 4# Zählen Sie Ihre Übersetzungsschlüssel 5cat locales/en.json | jq 'keys | length'
Wenn Sie <100 Schlüssel und 1-2 Sprachen haben, sind Sie vielleicht ohne TMS okay.
Wenn Sie 500+ Schlüssel und 3+ Sprachen haben, wird ein TMS Ihnen wöchentlich Stunden sparen.
Schritt 2: TMS wählen
Bewerten Sie basierend auf:
- Preisgestaltung (Enterprise-Features vs. Ihre Bedürfnisse prüfen)
- Git-Integration (wollen Sie Übersetzungen in Git?)
- OTA-Unterstützung (mobile App? Das wollen Sie)
- Frameworks (React, Vue, React Native SDKs?)
- API-Qualität (gute Docs, Rate Limits)
Schritt 3: Existierende Übersetzungen importieren
Die meisten TMSs unterstützen JSON-Import:
Terminal# IntlPull Beispiel npx @intlpullhq/cli import --format json --file locales/en.json --language en npx @intlpullhq/cli import --format json --file locales/fr.json --language fr
Schritt 4: CI/CD einrichten
Fügen Sie Übersetzungs-Sync zu Ihrer Pipeline hinzu:
YAML1# GitHub Actions Beispiel 2- name: Pull latest translations 3 run: npx @intlpullhq/cli download 4 env: 5 INTLPULL_API_KEY: ${{ secrets.INTLPULL_API_KEY }} 6 7- name: Build app 8 run: npm run build
Schritt 5: Übersetzer einladen
Geben Sie Übersetzern Zugang zum TMS. Sie werden nie wieder Ihren Code anfassen.
Praxisbeispiele
Unternehmen A: Nur bei Browser API geblieben
- SaaS App, 12 Sprachen
- Übersetzungen in JSON-Dateien in Git
- Übersetzer reichen PRs ein (!)
- 40% der PRs sind Übersetzungsupdates
- Entwickler verbringen 5 Stunden/Woche mit Review von Übersetzungs-PRs
- Übersetzungsfehler schaffen es regelmäßig in die Produktion
Jährliche Kosten: ~260 Entwicklerstunden = $26.000 (angenommen $100/Stunde)
Unternehmen B: Nutzt IntlPull
- SaaS App, 15 Sprachen
- Übersetzungen verwaltet in IntlPull
- Übersetzer nutzen Web-UI, null PRs
- Entwickler führen
npx @intlpullhq/cli downloadvor Deploys aus - OTA-Updates beheben Fehler sofort
- Entwickler verbringen 0 Stunden mit Übersetzungsmanagement
Jährliche Kosten: $348 (IntlPull: $29/Monat) Ersparnis: $25.652/Jahr
Das Fazit
Die Browser Intl API ist exzellent in dem was sie tut: Formatierung. Nutzen Sie sie für Daten, Zahlen, Währungen und locale-bewusste Anzeigelogik.
Aber Internationalisierung ist mehr als Formatierung. Es geht um:
- Verwalten übersetzter Inhalte
- Zusammenarbeit mit Übersetzern
- Automatisieren von Workflows
- Schnelles Deployen von Updates
Für alles über eine einfache App mit 1-2 Sprachen hinaus wollen Sie ein Übersetzungsmanagementsystem.
Beginnen Sie mit der Intl API für Formatierung. Fügen Sie ein TMS hinzu wenn Sie mehr als 2 Sprachen oder mehr als 100 Übersetzungsschlüssel haben. Ihr zukünftiges Ich wird Ihnen danken.
Bereit aufzuhören Übersetzungen manuell zu verwalten?
Testen Sie IntlPull kostenlos. CLI-first TMS mit Git-Integration, OTA-Updates und visuellem Kontext für Übersetzer. Keine Kreditkarte erforderlich.
Oder bleiben Sie bei DIY wenn Sie noch in der "100 Schlüssel, 2 Sprachen" Zone sind. Wir sind hier wenn Sie herauswachsen.
