正在解析 JSON 文件中的可翻译消息

Parsing translatable messages from JSON file

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

somedb.txt

[
{ "id": 1, "name": "Xyz", "local": "AxWhyZzz", /*...*/ },
/*...*/
]

有没有办法使用 xgettext 从 JSON 文件中提取 "local" 值?如果没有,我有什么选择?创建一个包含所有本地值的源文件,并调用 _?

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

以下是通过 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", /*...*/ },
/*...*/
]

不,没有办法。 JSON 只是一种通用容器格式,值的实际 含义 是 domain/application 特定的 — xgettext 必须理解其含义才能知道要做什么提炼。它怎么能理解你自己开发的格式?

对于 XML 个文件,这由 ITS (v2), which gettext (and thus Poedit) supports since 0.19.7. But for JSON, nothing exists… yet. There's some work being done (see here and here and here) 解决。