多语言支持,而以离子的应用程序插件(Multi language support without p

2019-10-29 03:30发布

以下是在我设置离子应用程序的语言我不变的文件。

@Injectable()
export class Constant {
  public static selectedLang :string = 'EN';

  static setLanguage(languageCode : string){
    Constant.selectedLang = languageCode;

  }
  readonly data: any = {
    "EN": {
      //declared English variables used to be all over the application
             FORGOT_PASSWORD : "Forgot Password",
          }
    "MR": {
             //marathi variables
             FORGOT_PASSWORD : "पासवर्ड विसरलात",
           }
    "HI":{
             //Hindi variables
             FORGOT_PASSWORD : "पासवर्ड भूल गए",
         }
   LANG: any = this.data[Constant.selectedLang];
 }

我使用HTML这个变量方式如下:

<div>
   <h2>{{CON.LANG.FORGOT_PASSWORD}}</h2>
   <p>{{CON.LANG.FORGOT_PASSWORD}}</p>
</div>

TS文件,我设置的语言:

import {Constant} from "../../../../constants";
class ForgotPassword {
    constructor(public CON: Constant){}

    setLanguage(languageCode : string){
       Constant.setLanguage(languageCode);
    }
 }

在这里,我想保持英语作为我的默认语言。 当用户明确地改变通过调用函数语言,那么只有语言应该被改变。 但问题是,即使用户调用函数改变语言,它没有改变。 应用程序总是显示英语变量。

您的帮助表示赞赏。

Answer 1:

我有我在做什么错在先。 我做了“数据”和恒文件正常的,而不是静态的“郎”变量。 而如下改变setLanguage功能。

 setLanguage(languageCode : string){
    this.selectedLang = languageCode;
    this.LANG = this.data[this.selectedLang]; //line added
  }

另外,我从存储组件我selectedLanguage变量session存储,这样,语言也不会被改变后,我关闭并重新打开应用程序。

 setLanguage(languageCode : string){
    this.CON.setLanguage(languageCode);
    this.sessionProvider.setLanguage(languageCode);
  }


文章来源: Multi language support without plugin in ionic app