我有一个项目,我希望可以本地化。虽然大多数字符串都在源代码中,xgettext / Poedit在使用本地化函数调用包装时可以很容易地找到它们,但有些是纯JSON文件,我用它来存储数据。因为它只是JSON,而不是JS,我不能使用函数调用。例如,一个小数据库:
somedb.txt
/html/portlet/portal_settings/display_settings.jsp
有没有办法用xgettext从JSON文件中提取“本地”值?如果没有,我的选择是什么?创建一个包含所有本地值的源文件,并调用[
{ "id": 1, "name": "Xyz", "local": "AxWhyZzz", /*...*/ },
/*...*/
]
?
或者我当然可以编写自己的解析器,或者修改gettext,但我更愿意使用现有的解决方案。
答案 0 :(得分:1)
不,没有办法。 JSON只是一种通用容器格式,值的实际含义是域/应用程序特定的 - xgettext
必须理解知道提取内容的含义。它怎么能理解你自己的本土格式?
对于XML文件,这由ITS(v2)解决,gettext(因此Poedit)支持自0.19.7以来。但是对于JSON来说,还没有任何东西存在。不过已经完成了一些工作(请参阅here和here以及here)。
答案 1 :(得分:0)
以下是通过XMLHttpRequest将它们作为JS数组获取的方式:http://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript
如果您通过添加变量id somevar 来修改它以提供进一步的访问权限,还有一种方法可以将somedb.txt包含为有效的js:
somevar = [
{ "id": 1, "name": "Xyz", "local": "AxWhyZzz", /*...*/ },
/*...*/
]