Angular i18n s Transloco: vodnik za nastavitev in prevajanje
Od namestitve do produkcije: nastavite Transloco, obravnavajte množinske oblike s skladnjo ICU, dodajte pametne nadomestne področne nastavitve in avtomatizirajte prevajanje z umetno inteligenco.
Namestite Transloco
Transloco je najbolj priljubljena zunanja knjižnica za internacionalizacijo aplikacij Angular. Omogoča nalaganje prevodov med izvajanjem, podporo za obliko sporočil ICU, obsege z odloženim nalaganjem ter pregleden API za predloge s strukturnimi direktivami in cevmi.
npm install @jsverse/translocoNastavite Transloco
Registrirajte Transloco v konfiguraciji aplikacije. Navesti morate razpoložljive jezike, določiti privzeti jezik in nastaviti nalagalnik prevodov. Transloco podpira samostojne komponente (Angular 14+) in vzorce NgModule.
Samostojne komponente (priporočeno)
// 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,
}),
],
};Vzorec NgModule
// 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 {}Ustvarite prevodne datoteke
V src/assets/i18n/ ustvarite po eno datoteko JSON za vsak jezik. Nize razvrstite po funkcionalnostih z ugnezdenimi ključi. Transloco za množinske oblike in spremenljivke uporablja obliko sporočil ICU.
// 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}}"
}
}Uporabite prevode v predlogah in storitvah
Transloco omogoča tri načine prevajanja v predlogah: strukturno direktivo (*transloco), cev (| transloco) in storitev (TranslocoService) za kodo TypeScript. Za večino primerov uporabe je priporočljiva strukturna direktiva, saj ustvari eno samo naročnino in zagotovi funkcijo za prevajanje celotnemu bloku predloge.
Prevajanje v predlogi
<!-- 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>Prevajanje v storitvi (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);
}
}Obravnavajte množinske oblike z obliko sporočil ICU
Transloco za množinske oblike in izbirne izraze uporablja obliko sporočil ICU. ICU samodejno obravnava zapletena pravila za množinske oblike — arabščina (6 oblik), ruščina (3 oblike), japonščina (1 oblika) — vse iz enega niza sporočila. Pravila za množinske oblike določite v prevodnih datotekah, Transloco pa med izvajanjem izbere ustrezno obliko.
// 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>Pametne nadomestne področne nastavitve z angular-locale-chain
Transloco privzeto uporabi Vaše privzete področne nastavitve, kadar prevodni ključ manjka. Uporabniku različice pt-BR se tako namesto povsem ustreznega prevoda pt-PT prikaže angleščina. angular-locale-chain to odpravi z globokim združevanjem prevodov iz nastavljive nadomestne verige, preden jih preda Transloco. Zapolnjen je vsak ključ — brez vrzeli in manjkajočih prevodov.
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(),
},
],
};Priporočena struktura datotek
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.jsonAvtomatizirajte prevajanje
Ko dokončate nastavitev Transloco, prevedite datoteke področnih nastavitev z umetno inteligenco. V svojem razvojnem okolju prosite pomočnika z umetno inteligenco, naj prevede izvorno datoteko JSON, ali pa v cevovodu CI/CD uporabite i18n Agent CLI za povsem avtomatizirano lokalizacijo.
# 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,esAvtomatizirajte zagotavljanje kakovosti prevodov
Pogoste težave
Pri prevodih so prikazani neobdelani ključi
Ključev z določenim obsegom ni mogoče razrešiti
Opozorila v konzoli v produkciji
Ob krmarjenju med potmi za hip utripnejo prevodi
Regionalnim uporabnikom se namesto nadrejenega jezika prikaže angleščina
Preizkusite i18n Agent zdaj
Spustite prevajalsko datoteko sem
JSON, YAML, PO, XML, CSV, Markdown, Properties
ali kliknite za izbiro
Ciljni jeziki
Nadomestne področne nastavitve z angular-locale-chain
Ko v regionalnih področnih nastavitvah, kot je pt-BR, manjka prevodni ključ, Angularjev TranslocoLoader takoj uporabi privzete področne nastavitve, namesto da bi najprej preveril nadrejene področne nastavitve pt.
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',
});V našem vodniku po nadomestnih področnih nastavitvah si oglejte celoten seznam podprtih ogrodij in 75 vgrajenih verig. Learn more →