如何使用带有变量的JavaScript访问对象数组

时间:2018-07-23 18:16:57

标签: javascript jquery internationalization

var dict = {
  "configMigratedTo": {
        "message": "Migrated configuration to configurator: $1"
    }
}
var parametersForTranslation = {};
function __tr(src, params) {
  parametersForTranslation[src] = params;
  return buildMessage(src);
}

function buildMessage(src){
    var message=dict[src] ? dict[src].message : src
    console.log(message);
    var messageArray = message.split("$");
    var output = "";
    messageArray.forEach(function(elem, index){
        if(index === 0){
            output += elem;
        }else{
            // get variable and index
            var paramIndex = configMigratedTo.substring(0, 1);
            var paramValue = parametersForTranslation[src][paramIndex-1];
            output += paramValue;
            output += configMigratedTo.substring(1);
        }
    });
    return output;
}
__tr("configMigratedTo", [2]);
console.log(buildMessage("configMigratedTo"));

我想得到类似__tr(“ configMigratedTo”,[2])的结果; 它将给我

已将配置迁移到配置器:2

我不知道我的代码在哪里

3 个答案:

答案 0 :(得分:1)

足够吗?

var dict = {
  "configMigratedTo": {
        "message": "Migrated configuration to configurator: "
    }
}

function buildMessage(src,param){
    var output = dict[src].message + param;
    return output;
}

console.log(buildMessage("configMigratedTo",2));

答案 1 :(得分:1)

尝试这个。希望对您有帮助!

var dict = {
  "configMigratedTo": {
        "message": "Migrated configuration to configurator: $1"
    }
}

function __tr(src, params) 
{
    for (var key in dict)
  {
    if (key === src)
    {
        var message = dict[key].message;
        return message.substring(0, message.length - 2) + params[0];
    }
  }
  return;
}


console.log(__tr("configMigratedTo", [2]))

https://jsfiddle.net/eLd9u2pq/

答案 2 :(得分:1)

您过于复杂了,使用正则表达式并传递一个函数来代替它会容易得多

var dict = {
  "configMigratedTo": {
    "message": "Migrated configuration to configurator: $1"
  }
}
function __tr(src, params) {
  if (! dict[src]) return src;
  if (! /\$0/.test(dict[src].message)) params.unshift('');
  return dict[src].message.replace(/\$(\d)+/g, (orig, match) => params[match] || orig);
}

console.log(__tr("configMigratedTo", [2]));