在nodejs中,我有这些(非常长的)翻译文件
gb.json(英文)
{
"transHi":"Hello",
"transBye":"Goodbye"
}
de.json(德语)
{
"transHi":"Gutentag",
"transBye":"Auf Wiedersehen"
}
我有很多控制器都需要这些文本以多种语言提供,所以我可以在需要时调用它们。
在我的app.js中,显而易见的方式就是这样:
global.gb = require('../global/language/gb.json');
global.de = require('../global/language/de.json');
当我需要一个文本时,我会称之为:
myText = global.gb.transHi
myText = global.de.transHi
但是!!语言总是由变量
决定usersLanguage = "de"
myText = global.usersLanguage.transHi
那不行。
我也尝试过:
usersLanguage = "de"
myText = global.usersLanguage.transHi
也许我可以使用具有长开关结构的函数来解决它
var findText = (language,textkey) => {
switch(language) {
case "gb:
return gb.textkey
break;
case "de:
return de.textkey
break;
}
}
myText = translate(usersLanguage, "transHi");
但我似乎也无法做到这一点。
我如何以简单灵活的方式做到这一点?
更新:是否可以这样做?
答案 0 :(得分:1)
也可以使用数组索引表示法.
访问通过[]
访问的任何对象属性。所以,
var langObj = texts.gb;
与
相同var langObj = texts["gb"];
也与
相同var lang = "gb";
var langObj = texts[lang];
textkey相同,使用.textkey
获得名为textkey
的属性,该属性可能不存在。如果您想要一个不同的属性,具体取决于变量textkey
的值,请执行
var text = langObj[textkey];