Ana içeriğe geç

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.

drawing Uygulamaya Nasıl Eklenir?

HvlNgLanguageModule içerisindeki forRoot static metodu uygulama ana modulüne eklenerek, provide edilmiş HvlLanguageInterceptor'ı devreye alınır.

@NgModule({
    imports: [
        ...,
        HvlNgLanguageModule.forRoot(),
        ...

Eğer forRoot kullanılmadıysa veya kullanılmayacaksa manuel olarak provider tanımlamasının yapılması gerekmektedir.

 providers: [
    {provide: HTTP_INTERCEPTORS, useClass: HvlLanguageInterceptor, multi: true},
    ...
]

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.

drawing Uygulama Modülüne Nasıl Eklenir?
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.

drawing Uygulama Modülüne Nasıl Eklenir?
@NgModule({
    imports: [
        ...,
        HvlNgLanguageModule.forRoot(),
        ...

Eğer forRoot kullanılmadıysa veya kullanılmayacaksa manuel olarak provider tanımlamasının yapılması gerekmektedir.

 providers: [
    HvlLanguageService,
    ...
]
drawing Nasıl Kullanılır?
this.languageService.languageChanged.subscribe((lang: any) => {
            if (lang) {
                window.location.reload();
            }
        });