在nodejs中创建一个简单灵活的转换函数

时间:2017-06-30 23:13:21

标签: json node.js

在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");

但我似乎也无法做到这一点。

我如何以简单灵活的方式做到这一点?

更新:是否可以这样做?

1 个答案:

答案 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];