2.1.2.3 Language#
Language alt modulü, uygulamaların multi-language özellikte çalışmasına yardımcı çözümleri içerir.
İçerisinde ;
paketleri bulunmaktadır.
Interceptor#
hvl-language-interceptor, uygulamadan gönderilen http request'lere araya girerek Accept-Language header'ı eklemektedir.
Bu sayede Backend servisleri istek sahibi kişinin hangi dil tercihinde bulunduğunu anlayabilmektedir. Bu sayede örneğin, kişiye gönderilecek mail, bildirim vb.
içeriklerin dil tercihi ayarlanabilir olmaktadır.
Önemli
Uygulama içerisinden tercih edilen dil verisi Language servis üzerinden alınabilmektedir. Interceptor içerisinde, eğer kişinin dil tercihi verisi erişilemez ise konfigüratig olarak tanımlanan sistem dili 'Accept-Language' olarak eklenir.
HvlNgLanguageModule içerisindeki forRoot static metodu uygulama ana modulüne eklenerek, provide edilmiş HvlLanguageInterceptor'ı devreye alınır.
Eğer forRoot kullanılmadıysa veya kullanılmayacaksa manuel olarak provider tanımlamasının yapılması gerekmektedir.
Loader#
Uygulama modüllerinde kullanılacak bundle'ların multiple olarak tanımlamasının yapılmasını sağlar. Bu tanımlanan bundle'lar uygulama yüklendiğinde/dil değişikliği yapıldığında indirilerek kullanılır.
function ProfileHttpLoaderFactory(http: HttpClient) {
return new HvlMultiTranslateHttpLoader(http, [
{prefix: './assets/i18n/profile/', suffix: '.json'},
{prefix: './assets/i18n/profile-detail/', suffix: '.json'},
...
]);
}
@NgModule({
declarations: [KysProfilePageComponent],
imports: [
...
TranslateModule.forChild({
loader: {
provide: TranslateLoader,
useFactory: ProfileHttpLoaderFactory,
deps: [HttpClient],
},
isolate: false,
extend: true,
}),
],
...
})
Bundle hazırlama ve kullanım için detaylı bilgiye buradan ulaşabilirsiniz.
Service#
Hvl-Language-Service, sunduğu observable yapı sayesinde, dil değişikliği bilgisini yayınlar. Dil değişiklikleri ile birlikte bu değişiklik bilgisini local storage'a yazar ve bir sonraki kullanımda bu veri uygulamanın başlangıç yapmasını sağlar.
Eğer forRoot kullanılmadıysa veya kullanılmayacaksa manuel olarak provider tanımlamasının yapılması gerekmektedir.