Angular-i18n mit Transloco: Einrichtungs- und Übersetzungsleitfaden
Von der Installation bis zur Produktion: Konfigurieren Sie Transloco, verarbeiten Sie Pluralformen mit ICU-Syntax, ergänzen Sie intelligente Locale-Fallbacks und automatisieren Sie Übersetzungen mit KI.
Transloco installieren
Transloco ist die beliebteste i18n-Bibliothek eines Drittanbieters für Angular. Sie bietet das Laden von Übersetzungen zur Laufzeit, Unterstützung des ICU-Nachrichtenformats, verzögert geladene Bereiche und eine übersichtliche Vorlagen-API mit strukturellen Direktiven und Pipes.
npm install @jsverse/translocoTransloco konfigurieren
Registrieren Sie Transloco in Ihrer Anwendungskonfiguration. Geben Sie die verfügbaren Sprachen an, legen Sie eine Standardsprache fest und konfigurieren Sie den Übersetzungs-Loader. Transloco unterstützt sowohl eigenständige Komponenten (Angular 14+) als auch NgModule-Muster.
Eigenständige Komponenten (empfohlen)
// app.config.ts
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import {
provideTransloco,
TranslocoHttpLoader,
} from '@jsverse/transloco';
export const appConfig: ApplicationConfig = {
providers: [
provideHttpClient(),
provideTransloco({
config: {
availableLangs: ['en', 'de', 'ja', 'es', 'fr'],
defaultLang: 'en',
fallbackLang: 'en',
reRenderOnLangChange: true,
prodMode: true,
},
loader: TranslocoHttpLoader,
}),
],
};NgModule-Muster
// app.module.ts
import { NgModule } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {
TranslocoModule,
TRANSLOCO_LOADER,
TranslocoHttpLoader,
provideTransloco,
} from '@jsverse/transloco';
@NgModule({
imports: [TranslocoModule],
providers: [
provideTransloco({
config: {
availableLangs: ['en', 'de', 'ja', 'es', 'fr'],
defaultLang: 'en',
fallbackLang: 'en',
reRenderOnLangChange: true,
prodMode: true,
},
loader: TranslocoHttpLoader,
}),
],
})
export class AppModule {}Übersetzungsdateien erstellen
Erstellen Sie in src/assets/i18n/ eine JSON-Datei pro Sprache. Gliedern Sie Zeichenfolgen mit verschachtelten Schlüsseln nach Funktion. Transloco verwendet das ICU-Nachrichtenformat für Pluralformen und Variablen.
// assets/i18n/en.json
{
"nav": {
"home": "Home",
"about": "About",
"settings": "Settings"
},
"greeting": "Hello, {{ name }}!",
"cart": {
"itemCount": "{count, plural, one {# item} other {# items}}"
}
}
// assets/i18n/de.json
{
"nav": {
"home": "Startseite",
"about": "Uber uns",
"settings": "Einstellungen"
},
"greeting": "Hallo, {{ name }}!",
"cart": {
"itemCount": "{count, plural, one {# Artikel} other {# Artikel}}"
}
}Übersetzungen in Vorlagen und Diensten verwenden
Transloco bietet drei Übersetzungswege in Vorlagen: die strukturelle Direktive (*transloco), die Pipe (| transloco) und den Dienst TranslocoService für TypeScript-Code. Die strukturelle Direktive wird für die meisten Anwendungsfälle empfohlen, da sie ein einzelnes Abonnement erstellt und dem gesamten Vorlagenblock die Übersetzungsfunktion bereitstellt.
Vorlagenübersetzung
<!-- Using the transloco directive (recommended) -->
<ng-container *transloco="let t">
<h1>{{ t('greeting', { name: userName }) }}</h1>
<nav>
<a routerLink="/">{{ t('nav.home') }}</a>
<a routerLink="/about">{{ t('nav.about') }}</a>
</nav>
</ng-container>
<!-- Using the transloco pipe -->
<h1>{{ 'greeting' | transloco:{ name: userName } }}</h1>
<!-- Using the structural directive with read -->
<ng-container *transloco="let t; read: 'nav'">
<a routerLink="/">{{ t('home') }}</a>
<a routerLink="/about">{{ t('about') }}</a>
</ng-container>Dienstübersetzung (TypeScript)
import { Component, inject } from '@angular/core';
import { TranslocoService } from '@jsverse/transloco';
@Component({
selector: 'app-notification',
template: '<span>{{ message }}</span>',
})
export class NotificationComponent {
private translocoService = inject(TranslocoService);
message = '';
showSuccess() {
// Translate in TypeScript
this.message = this.translocoService.translate('notifications.saved');
}
switchLanguage(lang: string) {
this.translocoService.setActiveLang(lang);
}
}Pluralformen mit dem ICU-Nachrichtenformat verarbeiten
Transloco verwendet das ICU-Nachrichtenformat für Pluralformen und Auswahlausdrücke. ICU verarbeitet komplexe Pluralregeln automatisch – Arabisch (sechs Formen), Russisch (drei Formen), Japanisch (eine Form) – aus einer einzigen Nachrichtenzeichenfolge. Definieren Sie die Pluralregeln in den Übersetzungsdateien; Transloco wählt zur Laufzeit die richtige Form aus.
// assets/i18n/en.json
{
"cart": {
"itemCount": "{count, plural, one {# item} other {# items}}",
"emptyMessage": "Your cart is empty"
},
"notifications": {
"unread": "{count, plural, =0 {No new notifications} one {# new notification} other {# new notifications}}"
}
}
// assets/i18n/ar.json — Arabic has 6 plural forms
{
"cart": {
"itemCount": "{count, plural, zero {لا عناصر} one {عنصر واحد} two {عنصران} few {# عناصر} many {# عنصرًا} other {# عنصر}}"
}
}
// Template usage:
// <span>{{ t('cart.itemCount', { count: cartItems.length }) }}</span>Intelligente Locale-Fallbacks mit angular-locale-chain
Standardmäßig wechselt Transloco zur Standard-Locale, wenn ein Übersetzungsschlüssel fehlt. Eine Person mit pt-BR sieht Englisch statt vollständig geeigneter pt-PT-Übersetzungen. angular-locale-chain behebt dies, indem es Übersetzungen aus einer konfigurierbaren Fallback-Kette rekursiv zusammenführt, bevor sie an Transloco übergeben werden. Jeder Schlüssel wird ausgefüllt – keine Lücken, keine fehlenden Übersetzungen.
npm install angular-locale-chain// app.config.ts — with angular-locale-chain
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import {
provideTransloco,
TranslocoHttpLoader,
TRANSLOCO_LOADER,
TRANSLOCO_FALLBACK_STRATEGY,
} from '@jsverse/transloco';
import {
LocaleChainLoader,
LocaleChainFallbackStrategy,
} from 'angular-locale-chain';
export const appConfig: ApplicationConfig = {
providers: [
provideHttpClient(),
provideTransloco({
config: {
availableLangs: ['en', 'fr', 'fr-CA', 'pt', 'pt-BR', 'de', 'de-AT'],
defaultLang: 'en',
fallbackLang: 'en',
reRenderOnLangChange: true,
prodMode: true,
},
}),
{
provide: TRANSLOCO_LOADER,
useFactory: () => {
const inner = new TranslocoHttpLoader();
return new LocaleChainLoader(inner, {
defaultLocale: 'en',
});
},
},
{
provide: TRANSLOCO_FALLBACK_STRATEGY,
useFactory: () => new LocaleChainFallbackStrategy(),
},
],
};Empfohlene Dateistruktur
my-angular-app/
├── src/
│ ├── assets/
│ │ └── i18n/
│ │ ├── en.json # Source language
│ │ ├── de.json # German
│ │ ├── ja.json # Japanese
│ │ ├── es.json # Spanish
│ │ └── fr.json # French
│ ├── app/
│ │ ├── app.config.ts # Transloco provider config
│ │ ├── app.component.ts
│ │ └── components/
│ │ └── lang-switcher/
│ │ └── lang-switcher.component.ts
│ └── main.ts
├── angular.json
└── package.jsonÜbersetzungen automatisieren
Wenn Ihre Transloco-Einrichtung abgeschlossen ist, übersetzen Sie Ihre Locale-Dateien mit KI. Bitten Sie Ihren KI-Assistenten in Ihrer IDE, Ihre JSON-Ausgangsdatei zu übersetzen, oder verwenden Sie die CLI von i18n Agent in Ihrer CI/CD-Pipeline für vollständig automatisierte Lokalisierung.
# In your IDE, ask your AI assistant:
> Translate src/assets/i18n/en.json to German, Japanese, and Spanish
✓ de.json created (1.2s)
✓ ja.json created (1.5s)
✓ es.json created (1.1s)
# Or use the CLI in CI/CD:
npx i18n-agent translate src/assets/i18n/en.json --lang de,ja,esÜbersetzungsqualität automatisieren
Häufige Fallstricke
Übersetzungen zeigen unverarbeitete Schlüssel
Bereichsbezogene Schlüssel werden nicht aufgelöst
Konsolenwarnungen in der Produktion
Übersetzungen blitzen bei der Routennavigation auf
Regionale Personen sehen Englisch statt der übergeordneten Locale
i18n Agent jetzt testen
Legen Sie Ihre Übersetzungsdatei hier ab
JSON, YAML, PO, XML, CSV, Markdown, Properties
oder zum Auswählen klicken
Zielsprachen
Locale-Fallback mit angular-locale-chain
Fehlt ein Übersetzungsschlüssel in einer regionalen Locale wie pt-BR, wechselt Angulars TranslocoLoader direkt zur Standard-Locale, statt zuerst die übergeordnete Locale pt zu prüfen.
npm install angular-locale-chainimport { LocaleChainLoader } from 'angular-locale-chain';
new LocaleChainLoader(innerLoader, {
fallbacks: {
'pt-BR': ['pt', 'en'],
'zh-Hant-HK': ['zh-Hant', 'zh', 'en'],
},
defaultLocale: 'en',
});In unserem Leitfaden zu Locale-Fallbacks finden Sie die vollständige Liste unterstützter Frameworks und 75 integrierter Ketten. Learn more →