我的ngx转换器无法获得Ionic4的当前语言

时间:2019-04-15 09:59:58

标签: angular ionic-framework ionic4

我正在使用ngx-translator软件包,但无法在我的应用中设置默认语言。

这是我的 app.module.ts

import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { HttpClientModule, HttpClient } from '@angular/common/http';

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, "./assets/i18n/", ".json");
}

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule,
    TranslateModule.forRoot({
      loader: {
          provide: TranslateLoader,
          useFactory: HttpLoaderFactory,
          deps: [HttpClient]
      }
    }),
    AppRoutingModule, HttpClientModule],
    providers: [
    StatusBar,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

这是我的 app.component.ts

import { TranslateService } from '@ngx-translate/core';
constructor(private translate: TranslateService) {
    this.initializeApp();
    this.translate.setDefaultLang('en');
    }

这是我的 tab1.page.ts

 import { TranslateService } from '@ngx-translate/core';
 language: string = this.translate.currentLang;
 constructor(private translate: TranslateService) { 
 console.log('Default language:', this.translate.currentLang);
 }

当我管理console.log('Default language:', this.translate.currentLang);时,它在控制台中显示为undefined。

这是我的 customcomponent.component.html

  <ion-select (ionChange)='setLanguage()'>
  <ion-select-option value='en' selected='true'>English</ion-select-option>
  <ion-select-option value='ar'>Arabic</ion-select-option>
  </ion-select>

我只是要在选定的框中显示选定的语言,但是我当前的语言不起作用。

当我打印当前的Lang时,它显示为未定义。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我也面临着同样的问题。只需更改app.component.ts

来自

this.translate.setDefaultLang('en');

收件人

this.translate.use('en');

就我而言:

我已经创建了这样的服务(提供者)

public changeLanguage(langCode:string){
   this.translate.use(langCode);
}

只需通过任何组件的函数传递语言名称

this.serviceProvider.changeLanguage("en");