ngx-translate输出返回没有翻译

时间:2017-10-06 11:37:00

标签: angular typescript ionic-framework ionic2

我使用了本教程

https://ionicframework.com/docs/developer-resources/ng2-translate/

一切都在运行,我可以采用json格式但不能打印输出

en.json

{
    "HELLO": "hola",
    "hi":"sa"
  }

.ts构造函数;

 constructor(public navCtrl: NavController, public navParams: NavParams, public translate: TranslateService) {
    translate.setDefaultLang('en');
  }

.html块;

<div style="width: 100%;">           
        <p class="baslik">ACCOUNT</p>
      <button ion-item>
          <ion-label>{{ 'hi' | translate }}</ion-label>
      </button>
      <button ion-item>
          <ion-label>{{ 'hi' | translate }}</ion-label>
      </button>
  </div>

但输出;

添加按钮单击事件时,此代码块;

this.translate.use('en').subscribe(
      value => {
        // value is our translated string
        console.log(value);
      }

en.json返回日志;

enter image description here

2 个答案:

答案 0 :(得分:1)

我不熟悉您正在使用的翻译框架,但从文档中看,您希望使用自定义翻译定义,但您从不致电:

translate.setTranslation('en', myTranslation);

其中myTranslation是您的对象。

您在代码中设置为默认值的'en'是一个字符串(它在引号中),并且看起来是翻译服务用来决定的某种标识符后备语言是什么:

  

方法:

     

setDefaultLang(lang:string):设置用作的默认语言   回退

你想:

  

setTranslation(lang:string,translations:Object,shouldMerge:boolean = false):手动设置给定语言的翻译对象,如果要附加翻译而不是替换翻译,则将shouldMerge设置为true

答案 1 :(得分:1)

我按照您提供的教程进行操作,可以重现您的问题。

我还查看了github上ngx-translate存储库的官方文档,这与您的教程有所不同。

在教程中,他们使用Angular Http模块的Http类来加载文件:

export function createTranslateLoader(http: Http) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

在官方文档中,他们使用Angular公共模块的HttpClient类。在您的应用模块中更改以下内容:

import { HttpClientModule, HttpClient } from '@angular/common/http';

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

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: (createTranslateLoader),
        deps: [HttpClient]
      }
    })
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

官方文档中有评论

  

注意:如果您仍然使用Angular&lt; 4.3,请使用@ angular / http中的Http和http-loader@0.1.0。