我有一个json
文档,其中某些字符串必须翻译。例如(伪造的语法),我的data.json
:
{
"greeting": "trans:Hello"
}
在这种情况下,字符串"Hello"
被标记为可翻译,前缀为trans:
(看起来不太健壮)。然后我会使用工具生成目录:
xgettext data.json
然后将字符串翻译为目标语言。然后我的应用程序将使用我原来的json和翻译映射:
translations = {
"en" : {
"Hello": "Hello"
},
"es" : {
"Hello": "Hola"
}
}
并生成最终的json(目标语言es
):
{
"greeting": "Hola"
}
是否有任何标准方法在json中指定可翻译字符串,以便可以通过标准工具处理它们以生成消息目录?
答案 0 :(得分:1)
您可以使用适当的gettext语言预处理器来提取标记的字符串,通常使用_(string)
或gettext(string
),并创建包含这些字符串的gettext目录(POT
文件)。在为特定语言创建目录的本地化版本之后,可能使用诸如poedit
之类的工具,在这种情况下,您可以将其转换为JSON表示 - 有关更多信息,以及有关标准方法的想法要在JavaScript中处理gettext样式的消息目录,请查看JED - 然后在运行时将此JSON格式的目录加载到您的应用程序中,并通过为此目的定义的实用程序访问它。
符号_(string)
有两个效果。首先,它标记了提取器的字符串。其次,在运行时,它调用一个名为_
的函数来查找目录中的字符串并返回本地化值。
JSON的问题是显然_(string)
是无效的JSON语法。如果可能,请考虑将其从JSON文件更改为包含对象的JS文件。
答案 1 :(得分:0)
回答旧问题以供参考。可以从 json 生成一个临时的 JS 源,如 my_strings.js
_("first-string-to-translate");
_("second-string-to-translate");
...
_("last-string-to-translate");
然后将此 my_strings.js
传递给 xgettext。