我使用了本教程
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返回日志;
答案 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。