我在代码中有多个区域(跨多个页面),我希望使用不同的语言。我没有用if-else条件编写每个函数,而是想要一个包含EN和AR中所有字符串的单独文件,以便我可以根据需要导入。我已经在使用ngx-translate进行视图转换(按钮,标签等),但我想弄清楚如何为实际的typescript类做同样的事情。
我看了一下angular-translate,并没有理解如何使用它。
E.g。
let alert = self.alertCtrl.create({
title: 'Username Taken',
subTitle: 'The username you entered is already registered.',
buttons: ['Retry']
});
alert.present();
我将检查用户选择了哪种语言选项(基于事件),然后想要使用英语或阿拉伯语或我支持的任何其他语言的标题,副标题和按钮。
答案 0 :(得分:3)
我在使用离子4和ngx-translate时遇到了同样的问题。这就是我解决的方法。 这是我的ts文件代码
async presentAlert() {
const alert = await this.alertController.create({
header: this.translate.instant('Alert'),
subHeader: this.translate.instant('empty_fields'),
message: this.translate.instant('enter_fields'),
buttons: [this.translate.instant('ok')]
});
await alert.present();
}
这是我的JSON文件
{
"Alert": "Alert",
"empty_fields": "Empty Fields",
"enter_fields": "Enter Required Fields!!",
"ok": "OK",
}
答案 1 :(得分:0)
我在ionic3中使用了以下代码
1st import translateService in ts
import { TranslateService } from '@ngx-translate/core';
2nd in app.module.ts add below:
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
imports: [
TranslateModule
]
showAlert(){
this.translate.get(['Cancel','Ok']).subscribe(res => {
//in res we will get translated data and fetch via key
console.log(res);
});
}
在上面的代码['Cancel','Ok']中是JSON键
答案 2 :(得分:-1)
他,解决方案很简单,从控制器(.ts)进行翻译与从视图(.html)进行翻译不同。要从控制器执行此操作,请执行以下步骤:
1-导入翻译模块。 2-在要使用它的页面的构造函数中注入转换对象。 3-使用注入的对象进行翻译。
在代码中:
import { TranslateService } from '@ngx-translate/core';
....
constructor (public translate: TranslateService){
}
showMessage(){
let toast = this.toastCtrl.create({
message: msg,
duration: 4500
});
toast.present();
}
//Take a look to this funcion this.translate.instant("the key");
callShowMessage(){
this.showMessage(this.translate.instant("toast.message.wrongauth"));
}
问候,