javascript:用于简单本地化的对象数组



我需要实现一种简单的方法来处理工作日名称的本地化,我提出了以下结构:

var weekdaysLegend=new Array(
{'it-it':'Lunedì', 'en-us':'Monday'}, 
{'it-it':'Martedì', 'en-us':'Tuesday'},
{'it-it':'Mercoledì', 'en-us':'Wednesday'},
{'it-it':'Giovedì', 'en-us':'Thursday'}, 
{'it-it':'Venerdì', 'en-us':'Friday'},
{'it-it':'Sabato', 'en-us':'Saturday'}, 
{'it-it':'Domenica', 'en-us':'Sunday'}
);

我知道我可以实现类似于关联数组的东西(因为我知道javascript不提供关联数组,而是提供具有类似结构的对象),但我需要使用数字索引而不是标签来遍历数组。因此,我想在具有特定值(如j-1或类似索引)的for循环中处理此问题。我的结构正确吗?提供一个变量"lang"作为介于"it it"one_answers"en us"之间的值之一,我尝试打印weekdaysLegend[j-1][lang](或Weekdays Legend[j-1].lang,我想我尝试了所有!),但结果是[object object]。显然我错过了什么。。知道吗?

结构看起来不错。您应该能够通过以下方式访问值:

weekdaysLegend[0]["en-us"]; // returns Monday

当然,这也适用于变量中的值,例如:

weekdaysLegend[i][lang];

for (var i = 0; i < weekdaysLegend.length; i++) {
    alert(weekdaysLegend[i]["en-us"]);
}

这将提醒一周中的几天。

听起来你做的每件事都很正确,这个结构也适用于我。

这只是一个小注释(我看到答案已经标记好了),因为我目前正在一个大型应用程序上设计,我想在该应用程序中将本地元素放入javascript数组中。

假设:1000个单词x4种语言生成"xx xx"+单词本身。。。

这是1000行pr.语言+仅用于语言的相同7个字符=浪费带宽dh。。。

  • 客户端/浏览器必须将它们全部分解,然后才能在数组中进行任何查找

这是我的方法:

为什么不一次生成一种语言的javascript,如果用户选择了另一种语言,只需将正确的javascript响应(发送)到浏览器即可包含

为每种语言存储一个带有大数组的单独javascript,或者将该语言用作服务器端脚本的参数(又名:)

如果语言文件发生了很大变化,或者您需要将每个用户/模块的变化降到最低,那么使用这种方法是非常可归档的,因为您只需为要生成的"哪个部分/模块"添加一个额外的参数或一个时间戳,这样javascript文件的缓存就会一直工作,直到发生变化。

如果动态方法对web服务器来说性能太重,那么每次更改/添加新的区域设置时都要发布/生成文件-您只需要在页面顶部检查"语言链接器",以检查为浏览器提供服务的语言文件。

结论

如果区域设置列表变大,这种方法将消除大量重复"语言"ID的开销。

您必须访问数组中的索引,然后通过指定对象中的键来访问值。

这对我来说很好:http://jsfiddle.net/98Sda/.

var day = 2;
var lang = 'en-us';
var weekdaysLegend = [
{'it-it':'Lunedì', 'en-us':'Monday'}, 
{'it-it':'Martedì', 'en-us':'Tuesday'},
{'it-it':'Mercoledì', 'en-us':'Wednesday'},
{'it-it':'Giovedì', 'en-us':'Thursday'}, 
{'it-it':'Venerdì', 'en-us':'Friday'},
{'it-it':'Sabato', 'en-us':'Saturday'}, 
{'it-it':'Domenica', 'en-us':'Sunday'}
];
alert(weekdaysLegend[day][lang]);

最新更新