Transloco ile Angular i18n: Kurulum ve çeviri rehberi
Kurulumdan üretime: Transloco'yu yapılandırın, ICU söz dizimiyle çoğulları yönetin, akıllı yerel ayar yedekleri ekleyin ve çevirileri yapay zeka ile otomatikleştirin.
Transloco'yu yükleyin
Transloco, Angular için en popüler üçüncü taraf i18n kütüphanesidir. Çalışma zamanında çeviri yükleme, ICU ileti formatı desteği, gecikmeli yüklenen kapsamlar ve hem yapısal direktifler hem de pipe'lar içeren sade bir şablon API'si sunar.
npm install @jsverse/translocoTransloco'yu yapılandırın
Transloco'yu uygulama yapılandırmanıza kaydedin. Kullanılabilir dilleri sağlamanız, varsayılan bir dil belirlemeniz ve çeviri yükleyicisini yapılandırmanız gerekir. Transloco hem bağımsız bileşenleri (Angular 14+) hem de NgModule kalıplarını destekler.
Bağımsız bileşenler (önerilen)
// 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 kalıbı
// 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 {}Çeviri dosyaları oluşturun
src/assets/i18n/ içinde her dil için bir JSON dosyası oluşturun. Dizeleri özelliğe göre düzenlemek için iç içe anahtarlar kullanın. Transloco, çoğullar ve değişkenler için ICU ileti formatını kullanır.
// 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}}"
}
}Çevirileri şablonlarda ve servislerde kullanın
Transloco, şablonlarda çeviri yapmak için üç yöntem sunar: yapısal direktif (*transloco), pipe (| transloco) ve TypeScript kodu için servis (TranslocoService). Yapısal direktif tek bir abonelik oluşturduğu ve translate işlevini şablon bloğunun tamamına sunduğu için çoğu kullanım durumunda önerilir.
Şablon çevirisi
<!-- 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>Servis çevirisi (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);
}
}Çoğulları ICU ileti formatıyla yönetin
Transloco, çoğullar ve select ifadeleri için ICU ileti formatını kullanır. ICU, karmaşık çoğul kurallarını tek bir ileti dizesinden otomatik olarak yönetir: Arapça (6 biçim), Rusça (3 biçim), Japonca (1 biçim). Çoğul kurallarınızı çeviri dosyalarında tanımladığınızda Transloco çalışma zamanında doğru biçimi seçer.
// 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>angular-locale-chain ile akıllı yerel ayar yedekleri
Transloco, bir çeviri anahtarı eksik olduğunda varsayılan olarak sizin varsayılan yerel ayarınıza geri döner. Bu nedenle pt-BR kullanan bir kullanıcı, son derece uygun pt-PT çevirileri yerine İngilizce metinleri görür. angular-locale-chain, çevirileri Transloco'ya vermeden önce yapılandırılabilir bir yedek zincirinden derinlemesine birleştirerek bu sorunu çözer. Her anahtar doldurulur; boşluk veya eksik çeviri kalmaz.
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(),
},
],
};Önerilen dosya yapısı
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Çevirileri otomatikleştirin
Transloco kurulumunuz tamamlandığında yerel ayar dosyalarınızı yapay zeka kullanarak çevirin. IDE'nizde yapay zeka asistanınızdan kaynak JSON dosyanızı çevirmesini isteyin veya tamamen otomatik yerelleştirme için CI/CD işlem hattınızda i18n Agent CLI'ı kullanın.
# 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Çeviri kalitesini otomatikleştirin
Yaygın sorunlar
Çeviriler ham anahtarları gösteriyor
Kapsamlı anahtarlar çözümlenmiyor
Üretimde konsol uyarıları
Rota geçişinde çeviriler kısa süreliğine kayboluyor
Bölgesel kullanıcılar üst yerel ayar yerine İngilizce görüyor
i18n Agent'ı şimdi deneyin
Çeviri dosyanızı buraya bırakın
JSON, YAML, PO, XML, CSV, Markdown, Properties
veya göz atmak için tıklayın
Hedef diller
angular-locale-chain ile yerel ayar yedeği
pt-BR gibi bölgesel bir yerel ayarda çeviri anahtarı eksik olduğunda Angular'ın TranslocoLoader'ı önce üst yerel ayar pt'yi kontrol etmek yerine doğrudan varsayılan yerel ayara geçer.
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',
});Desteklenen çerçevelerin ve 75 yerleşik zincirin tam listesi için Yerel Ayar Yedeği Rehberimize bakın. Learn more →