我在javascript中制作了一个i18n对象,如下所示来管理我的javascript文件中的语言
i18n = {
currentCulture: 'pt_PT',
pt_PT : {
message_key : "text in portuguese"
},
en_US: {
message_key : "text in english",
},
/**
* translate
*/
__ : function(key,culture){
return this.culture.key;
},
/**
* returns the active user culture
*/
getUserCulture : function(){
return this.currentCulture;
},
/**
* sets the current culture
*/
setCulture : function(culture){
this.currentCulture = culture;
}
}
我需要根据translate函数的键和文化参数返回正确的消息。 问题是在行返回this.culture.key; javascript试图找到i18n对象中的“文化”适当性。 我怎样才能打电话,例如this.pt_PT.message_key?
感谢您的帮助。
感谢发布解决方案的所有人。我只接受一个anwser,所以我接受了第一个。
答案 0 :(得分:3)
使用bracket notation。假设culture
为'pt_PT'
且key
为'message_key'
:
return this[culture][key];
答案 1 :(得分:3)
替换:
this.culture.key
使用:
this[culture][key]
答案 2 :(得分:1)
Javascript对象are associative arrays,您可以使用数组语法查找属性:
return this[culture][key];