我想本地化我的webapp。由于不推荐仅通过javascript进行本地化,我认为使用php将是另一种选择。
所以用php我读了一个存储所有本地化数据的messages.json
文件。
$json = file_get_contents("_locales/en/messages.json");
在我的webapp的标题中,我根据用户的浏览器语言生成一些带有php的javascript。
echo "var localeObj = " . $json . ";";
所以这只是一个var,它保存m essages.json
文件中看起来像那样的所有数据
{
"extTitle": {
"message": "Test1"
},
"extName":{
"message": "Test2"
}
}
现在我希望能够从json访问每个项目,如
var title = getItem("extTitle");
然后返回Test1
。知道怎么做吗?
我对json并不熟悉,但如果我只是警告localeObj
它只给我[object Object]。
答案 0 :(得分:4)
var getItem = function(item) {
return localObj[item].message;
};
你也可以封装你的i18n字符串......
(function() {
var localObj = { ... };
window.getItem = function(item) {
return localObj[item].message;
};
})();
这样,没有其他变量可能会破坏您的localObj
。
答案 1 :(得分:1)
使用数组语法[]
或点语法.
来访问javascript对象属性。
示例:
localeObj["extTitle"];
localeObj.extTitle;
我建议您阅读类似this的内容,以便更加熟悉JSON。
答案 2 :(得分:1)
你可以像这样初始化javascript变量。
var json = eval(<? echo $json ?>);
alert(json.extTitle.message+ ' '+json.extName.message);
答案 3 :(得分:0)
内部messages.php
:
<?php
header('Content-type:application/javascript');
$messages = array(
"yes"=>"hai",
"no"=>"iie"
);
$messages = json_encode($messages);
echo "window.messages = $messages";
?>
内部index.html
:
<html>
<body>
<script type="text/javascript" src="messages.php"></script>
<script type="text/javascript">
console.log(window.messages)
</script>
</body>
</html>
只要您告诉浏览器将php文件解释为javascript文件,您就可以回复任何想要的内容。