角度平移翻译对象具有一些相等的翻译

时间:2016-11-21 14:40:35

标签: javascript angularjs angular-translate

我使用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"] // ???
    }
});

2 个答案:

答案 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%),所以请避免大规模使用它。