Schnelle Antwort
Die Best Practice für Übersetzungsschlüssel ist hierarchische Benennung mit feature-basierten Namespaces: feature.komponente.element (z.B. checkout.cart.removeButton). Verwenden Sie konsistent snake_case oder camelCase, halten Sie Schlüssel unter 50 Zeichen, fügen Sie Beschreibungen für Kontext hinzu und organisieren Sie nach Feature statt nach Seite. IntlPull setzt diese Muster automatisch durch CLI-Validierung durch und bietet KI-gestützte Vorschläge, wenn Schlüssel Konventionen nicht folgen.
Warum Schlüssel-Management wichtig ist
Schlechtes Schlüssel-Management schafft zusammengesetzte Probleme:
| Problem | Auswirkung |
|---|---|
| Inkonsistente Benennung | Übersetzer verlieren Kontext |
| Doppelte Schlüssel | Verschwendeter Übersetzungsaufwand |
| Keine Namespaces | Unmöglich, Schlüssel zu finden |
| Fehlende Beschreibungen | Falsche Übersetzungen |
| Verwaiste Schlüssel | Aufgeblähte Übersetzungsdateien |
Die Kosten sind real: Teams mit schlechter Schlüssel-Hygiene verbringen 2-3x mehr Zeit mit Übersetzungsmanagement als Teams mit guten Konventionen.
Benennungskonvention: Das Fundament
Empfohlenes Format
{namespace}.{komponente}.{element}.{modifier}
Beispiele:
| Schlüssel | Bedeutung |
|---|---|
auth.login.submitButton | Login-Seite Absenden-Button |
checkout.cart.emptyState.title | Warenkorb-Leerzustands-Titel |
common.errors.networkError | Geteilter Netzwerkfehler |
settings.profile.avatar.uploadHint | Avatar-Upload-Hinweistext |
Regeln, die funktionieren
1. Verwenden Sie hierarchische Struktur
❌ loginSubmitButton
❌ login_submit_button
✅ auth.login.submitButton
2. Seien Sie spezifisch, nicht generisch
❌ button.text
❌ title
✅ checkout.payment.submitButton
✅ dashboard.analytics.pageTitle
3. Vermeiden Sie positionsbezogene Namen
❌ sidebar.firstItem
❌ modal.button1
✅ sidebar.dashboard
✅ modal.confirmButton
4. Verwenden Sie konsistente Groß-/Kleinschreibung
❌ auth.Login.Submit (gemischt)
✅ auth.login.submit (durchgehend camelCase)
✅ auth.login.submit (oder snake_case: auth.login.submit_button)
IntlPull Durchsetzung
IntlPull validiert Schlüsselbenennung in Ihrer CI/CD-Pipeline:
Terminal1npx @intlpullhq/cli lint --strict 2 3# Output: 4# ❌ loginBtn -> auth.login.submitButton (suggested) 5# ❌ error_msg -> common.errors.generic (suggested) 6# ✅ checkout.cart.itemCount (valid)
Namespace-Architektur
Feature-basierte Organisation (Empfohlen)
Organisieren Sie nach Feature, nicht nach Seite oder Dateityp:
messages/
├── auth/
│ ├── en.json
│ └── es.json
├── checkout/
│ ├── en.json
│ └── es.json
├── dashboard/
│ ├── en.json
│ └── es.json
└── common/
├── en.json
└── es.json
Vorteile:
- Einfach, Schlüssel zu einem Feature zu finden
- Kann Namespaces bei Bedarf laden (Code Splitting)
- Passt dazu, wie Entwickler über die App denken
- Klare Eigentümerschaft für jeden Namespace
Flache vs. Verschachtelte Schlüssel
Beide Ansätze funktionieren; wählen Sie einen und seien Sie konsistent.
Flach (empfohlen für <1000 Schlüssel):
JSON1{ 2 "auth.login.title": "Sign In", 3 "auth.login.submitButton": "Continue", 4 "auth.login.forgotPassword": "Forgot password?" 5}
Verschachtelt (empfohlen für 1000+ Schlüssel):
JSON1{ 2 "auth": { 3 "login": { 4 "title": "Sign In", 5 "submitButton": "Continue", 6 "forgotPassword": "Forgot password?" 7 } 8 } 9}
IntlPull unterstützt beide Formate und kann automatisch zwischen ihnen konvertieren.
Schlüssel-Beschreibungen: Kontext für Übersetzer
Fügen Sie immer Beschreibungen hinzu. Übersetzer brauchen Kontext, um genau zu übersetzen.
Was in Beschreibungen gehört
| Einschluss | Beispiel |
|---|---|
| Wo es erscheint | "Shown in the checkout page header" |
| Maximale Länge | "Max 20 characters for button width" |
| Variablen erklärt | "{count} is the number of items" |
| Ton-Anleitung | "Friendly, encouraging tone" |
| Screenshot-Link | Link zu Design oder Screenshot |
In IntlPull
JSON1{ 2 "checkout.cart.itemCount": { 3 "value": "{count, plural, one {# item} other {# items}}", 4 "description": "Shows item count in cart badge. Max 15 chars. {count} is number of items.", 5 "maxLength": 15, 6 "screenshot": "https://..." 7 } 8}
IntlPull zeigt Beschreibungen direkt in der Übersetzungsoberfläche an und stellt sicher, dass Übersetzer immer Kontext haben.
Umgang mit Variablen und Pluralen
Variablenbenennung
Verwenden Sie aussagekräftige Variablennamen, nicht positionsbezogene:
❌ "Hello {0}, you have {1} messages"
✅ "Hello {name}, you have {count} messages"
Plural-Handhabung (ICU-Format)
JSON{ "cart.items": "{count, plural, =0 {No items} one {# item} other {# items}}" }
Geschlecht und Auswahl
JSON{ "profile.greeting": "{gender, select, male {He} female {She} other {They}} updated their profile" }
IntlPull validiert ICU-Syntax beim Upload und hebt Fehler hervor, bevor sie die Produktion erreichen.
Vermeidung häufiger Fehler
1. String-Verkettung
JavaScript1// ❌ Bricht in vielen Sprachen (Wortstellung variiert) 2t('cart.total') + ': ' + price 3 4// ✅ Variablen verwenden 5t('cart.totalWithPrice', { price }) 6// "Total: {price}" oder "{price}: Total" je nach Sprache
2. Hartcodierte Interpunktion
JavaScript1// ❌ Manche Sprachen nutzen andere Interpunktion 2t('question') + '?' 3 4// ✅ Interpunktion in den Schlüssel aufnehmen 5t('question') // "Are you sure?"
3. Sätze aufteilen
JSX1// ❌ Unmöglich natürlich zu übersetzen 2<span>{t('click')}</span> <a>{t('here')}</a> <span>{t('toContinue')}</span> 3 4// ✅ Rich-Text-Support nutzen 5<Trans i18nKey="clickToContinue"> 6 Click <a>here</a> to continue 7</Trans>
4. Textlänge annehmen
CSS1/* ❌ Deutsch ist ~30% länger als Englisch */ 2.button { width: 100px; } 3 4/* ✅ Ausdehnung erlauben */ 5.button { min-width: 100px; padding: 0 1rem; }
Workflow-Muster
Entwickler-Workflow
- Schlüssel im Code erstellen mit Platzhaltertext
- CLI extrahiert Schlüssel automatisch (
npx @intlpullhq/cli extract) - Push zu IntlPull (
npx @intlpullhq/cli upload) - KI übersetzt oder Zuweisung an Übersetzer
- Übersetzungen pullen (
npx @intlpullhq/cli download)
Review-Workflow
- Entwickler erstellt Schlüssel mit englischem Wert
- IntlPull KI generiert Übersetzungen
- Reviewer genehmigt oder bearbeitet im Dashboard
- Genehmigte Übersetzungen synchronisieren zur Codebasis
Aufräum-Workflow (Vierteljährlich)
Terminal1# Ungenutzte Schlüssel finden 2npx @intlpullhq/cli unused 3 4# Verwaiste Schlüssel entfernen 5npx @intlpullhq/cli prune --dry-run 6npx @intlpullhq/cli prune --confirm
IntlPull trackt Schlüsselnutzung und markiert Schlüssel, die in Ihrer Codebasis nicht referenziert wurden.
Skalierungsmuster
Für 100-1.000 Schlüssel
- Einzelner Namespace ist in Ordnung
- Flache Schlüsselstruktur funktioniert
- Manuelles Review ist machbar
Für 1.000-10.000 Schlüssel
- Feature-basierte Namespaces erforderlich
- Verschachtelte Schlüsselstruktur hilft
- Automatisierte Validierung essentiell
- Wöchentliche Aufräum-Reviews
Für 10.000+ Schlüssel
- Strenge Namespace-Governance
- Code-Owner pro Namespace
- Automatische Erkennung verwaister Schlüssel
- Monatlicher Audit-Prozess
IntlPull skaliert auf 100.000+ Schlüssel mit Berechtigungen auf Namespace-Ebene, automatisierten Qualitätschecks und Nutzungsanalysen.
Häufig gestellte Fragen
Was ist die beste Benennungskonvention für Übersetzungsschlüssel?
Verwenden Sie hierarchische Punkt-Notation: feature.komponente.element (z.B. auth.login.submitButton). Dies bietet klaren Kontext, einfaches Suchen und natürliche Gruppierung. Vermeiden Sie generische Namen wie button.text oder positionsbezogene Namen wie modal.button1. Seien Sie konsistent mit der Groß-/Kleinschreibung (durchgehend camelCase oder snake_case).
Wie sollte ich Übersetzungsschlüssel für eine große App organisieren?
Organisieren Sie nach Feature/Domäne unter Verwendung von Namespaces. Erstellen Sie separate Dateien/Namespaces für Auth, Checkout, Dashboard, Settings usw., plus einen common Namespace für geteilte Strings. Dies ermöglicht Code Splitting, klare Eigentümerschaft und einfachere Wartung. IntlPull unterstützt Berechtigungen auf Namespace-Ebene für große Teams.
Wie gehe ich mit Übersetzungsschlüssel-Beschreibungen um?
Fügen Sie Beschreibungen zu jedem Schlüssel hinzu, der nicht selbsterklärend ist. Beinhalten Sie: wo er erscheint (Kontext), maximale Zeichenlänge, Erklärung von Variablen, Ton-Anleitung und Links zu Screenshots/Designs. IntlPull zeigt Beschreibungen in der Übersetzeroberfläche an und kann Schlüssel markieren, denen Beschreibungen fehlen.
Wie oft sollte ich ungenutzte Übersetzungsschlüssel aufräumen?
Führen Sie monatlich eine Erkennung verwaister Schlüssel und vierteljährlich eine volle Bereinigung durch. Ungenutzte Schlüssel blähen Bundles auf und verwirren Übersetzer. IntlPulls npx @intlpullhq/cli unused Befehl identifiziert Schlüssel, die in Ihrer Codebasis nicht referenziert sind. Führen Sie prune zuerst mit --dry-run aus, um Löschungen vor der Bestätigung zu prüfen.
Sollte ich flache oder verschachtelte Übersetzungsschlüssel-Strukturen verwenden?
Verwenden Sie flache Struktur für <1.000 Schlüssel, verschachtelte für größere Projekte. Flach (auth.login.title: Sign In) ist einfacher und leichter zu suchen. Verschachtelt (auth: { login: { title: ... } }) skaliert besser und passt zur Code-Struktur. IntlPull unterstützt beides und kann zwischen Formaten konvertieren.
Wie verhindere ich Inkonsistenzen bei der Benennung von Übersetzungsschlüsseln?
Nutzen Sie automatisierte Validierung in CI/CD. Die CLI von IntlPull enthält einen lint-Befehl, der Schlüsselbenennung gegen konfigurierbare Regeln validiert. Führen Sie npx @intlpullhq/cli lint --strict in Ihrer Pipeline aus, um Inkonsistenzen vor dem Mergen abzufangen. Die CLI schlägt auch Korrekturen für falsch geformte Schlüssel vor.
Zusammenfassung
Wichtige Best Practices:
- Hierarchische Benennung nutzen:
feature.komponente.element - Nach Feature mit Namespaces organisieren
- Beschreibungen für Übersetzerkontext hinzufügen
- ICU-Format für Plurale und Variablen nutzen
- Automatisch mit CLI-Tools validieren
- Ungenutzte Schlüssel regelmäßig aufräumen
IntlPull setzt diese Muster durch CLI-Validierung, automatisierte Vorschläge und Nutzungstracking durch. Unsere KI lernt sogar die Konventionen Ihres Projekts und schlägt konsistente Schlüsselnamen vor, während Sie arbeiten.
Bereit für organisierte Übersetzungen? Starten Sie kostenlos mit IntlPull — KI-gestützte Schlüsselvorschläge inklusive.
