解析来自JSON文件的可翻译消息

时间:2016-02-12 22:42:06

标签: json localization gettext poedit xgettext

我有一个项目,我希望可以本地化。虽然大多数字符串都在源代码中,xgettext / Poedit在使用本地化函数调用包装时可以很容易地找到它们,但有些是纯JSON文件,我用它来存储数据。因为它只是JSON,而不是JS,我不能使用函数调用。例如,一个小数据库:

somedb.txt

/html/portlet/portal_settings/display_settings.jsp

有没有办法用xgettext从JSON文件中提取“本地”值?如果没有,我的选择是什么?创建一个包含所有本地值的源文件,并调用[ { "id": 1, "name": "Xyz", "local": "AxWhyZzz", /*...*/ }, /*...*/ ]

或者我当然可以编写自己的解析器,或者修改gettext,但我更愿意使用现有的解决方案。

2 个答案:

答案 0 :(得分:1)

不,没有办法。 JSON只是一种通用容器格式,值的实际含义是域/应用程序特定的 - xgettext必须理解知道提取内容的含义。它怎么能理解你自己的本土格式?

对于XML文件,这由ITSv2)解决,gettext(因此Poedit)支持自0.19.7以来。但是对于JSON来说,还没有任何东西存在。不过已经完成了一些工作(请参阅herehere以及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", /*...*/ },
/*...*/
]