我使用angular-translate
制作网络应用程序多语言。一切正常,现在我已经构建了我的翻译,所以我有:
$translateProvider.translations("en", {
"LANGUAGE": {
"ENGLISH": "english",
"GERMAN": "german",
"ITALIAN": "italian",
"FRENCH": "french",
}
});
我想说我想添加BUTTONS.ENGLISH
LANGUAGE.ENGLISH
的相同定义。是否可以以某种方式引用它,如BUTTONS.ENGLISH = this.LANGUAGE.ENGLISH
?
$translateProvider.translations("en", {
"LANGUAGE": {
"ENGLISH": "english",
"GERMAN": "german",
"ITALIAN": "italian",
"FRENCH": "french",
},
"BUTTONS": {
"ENGLISH": this["LANGUAGE"]["ENGLISH"] // ???
}
});
答案 0 :(得分:1)
在Javascript中,您无法使用this
访问对象文字的其他属性(this
在初始化文字的过程中具有相同的值(。)
答案 1 :(得分:1)
由于javascript范围问题,您无法尝试这样做,但您可以始终在翻译中使用插值来调用另一个翻译,如下例所示。
"ENGLISH": "{{ 'LANGUAGE.ENGLISH' | translate }}"
通过这种方式,您可以保证您的密钥与另一个密钥值相对应,这可能使其更易于维护。
完整代码:
$translateProvider.translations("en", {
"LANGUAGE": {
"ENGLISH": "english",
"GERMAN": "german",
"ITALIAN": "italian",
"FRENCH": "french",
},
"BUTTONS": {
"ENGLISH": "{{ 'LANGUAGE.ENGLISH' | translate }}"
}
});
关于性能问题的进一步说明:我认为它不会导致任何巨大的性能问题,尽管它比普通字符串更昂贵,但使用变量替换会产生相同的成本,但是然而,比普通字符串更昂贵(我已经测试过并且通常比内插字符串便宜25%),所以请避免大规模使用它。