离子应用程序中没有插件的多语言支持
Multi language support without plugin in ionic app
以下是我的常量文件,我在其中设置离子应用程序的语言。
@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);
}
}
在这里,我想保留英语作为我的默认语言。当用户通过调用函数显式更改语言时,只应更改语言。但问题是即使用户调用函数来更改语言,它也没有改变。应用程序始终显示英文变量。
感谢您的帮助。
我知道我之前做错了什么。我使常量文件的 'data' 和 'LANG' 变量正常而不是静态。并更改了setLanguage函数如下。
setLanguage(languageCode : string){
this.selectedLang = languageCode;
this.LANG = this.data[this.selectedLang]; //line added
}
此外,我将我的 selectedLanguage 变量从组件存储到会话存储,这样,在我关闭并再次打开应用程序后语言不会改变。
setLanguage(languageCode : string){
this.CON.setLanguage(languageCode);
this.sessionProvider.setLanguage(languageCode);
}
以下是我的常量文件,我在其中设置离子应用程序的语言。
@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);
}
}
在这里,我想保留英语作为我的默认语言。当用户通过调用函数显式更改语言时,只应更改语言。但问题是即使用户调用函数来更改语言,它也没有改变。应用程序始终显示英文变量。
感谢您的帮助。
我知道我之前做错了什么。我使常量文件的 'data' 和 'LANG' 变量正常而不是静态。并更改了setLanguage函数如下。
setLanguage(languageCode : string){
this.selectedLang = languageCode;
this.LANG = this.data[this.selectedLang]; //line added
}
此外,我将我的 selectedLanguage 变量从组件存储到会话存储,这样,在我关闭并再次打开应用程序后语言不会改变。
setLanguage(languageCode : string){
this.CON.setLanguage(languageCode);
this.sessionProvider.setLanguage(languageCode);
}