离子 - 警报字符串本地化

时间:2018-02-15 18:52:49

标签: javascript ionic-framework localization internationalization ionic3

我在代码中有多个区域(跨多个页面),我希望使用不同的语言。我没有用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();

我将检查用户选择了哪种语言选项(基于事件),然后想要使用英语或阿拉伯语或我支持的任何其他语言的标题,副标题和按钮。

3 个答案:

答案 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"));
}

问候,