我使用此插件:jQuery.i18n.properties
我把这段代码:
/* Do stuff when the DOM is ready */
jQuery(document).ready(loadMessage);
/*
* Add elements behaviours.
*/
function loadMessage() {
jQuery("#customMessage").html("test");
jQuery.i18n.properties({
name:'up_mail_messages',
path:'https://static.unifiedpost.com/apps/myup/customer/upmail/upmail_messages/',
mode:'both',
language:'en',
callback: function() {
var messageKey = 'up.mail.test';
//alert(eval(messageKey));
jQuery('#customMessage').html(jQuery.i18n.prop(messageKey));
}
});
}
我不明白为什么,在customeMessage div中打印出来:
[up.mail.test]
而不是它的值:
up.mail.test = 从en
加载的消息
有人能告诉我我错在哪里吗?我花了大约两个小时就没有找到任何线索......
非常感谢。
编辑:在本地测试后,一切正常。但是如果消息文件位于另一个主机上(如上例所示),它似乎失败了...如果有人能证实这一点会很好......
编辑1:它不起作用,因为在js脚本中有一个ajax调用来读取消息文件。好吧,正如您可能知道的那样,由于浏览器的限制,在ajax中禁止跨域XMLHttpRequest调用。
答案 0 :(得分:0)
我可以麻烦你,并怀疑我的怀疑吗?
将第一行替换为:
$(document).ready(function() {loadMessage()});
另外,我注意到https://static.unifiedpost.com/apps/myup/customer/upmail/upmail_messages/up_mail_messages.properties返回404错误,而en版本运行良好。这是故意的吗?
答案 1 :(得分:0)
我不知道你的服务器返回是什么,所以在php中我只是回应这样的事情:
$arg = 'up.mail.test=messages loaded from en';
exit($arg);
然后是js:
.......
callback: function() {
var messageKey = up.mail.test;
//alert(eval(messageKey));
jQuery('#customMessage').html(jQuery.i18n.prop(messageKey));
}
我得到了这个:[messages loaded from en]
。这就是你想要的吗?