Internationalization 使用ICU4C和XLIFF进行定位

Internationalization 使用ICU4C和XLIFF进行定位,internationalization,icu,xliff,xgettext,translate-toolkit,Internationalization,Icu,Xliff,Xgettext,Translate Toolkit,建议以XLIFF格式保存可本地化数据 因此,我使用GNUxgettext将字符串提取到gettext格式文件中,然后使用将其转换为XLIFF文件 最后,我尝试使用将它们转换为ICU资源格式,但我发现它不起作用。它抱怨错误: The XLIFF document is invalid, please check it first: Line 2, Column 68 Error: cvc-elt.1: Cannot find the declaration of element 'xliff'.

建议以XLIFF格式保存可本地化数据

因此,我使用GNU
xgettext
将字符串提取到
gettext
格式文件中,然后使用将其转换为XLIFF文件

最后,我尝试使用将它们转换为ICU资源格式,但我发现它不起作用。它抱怨错误:

The XLIFF document is invalid, please check it first: 
Line 2, Column 68
Error: cvc-elt.1: Cannot find the declaration of element 'xliff'.
几乎相同的错误,尚未修复

可怜的XLIFF文件的第2行是:

 <xliff xmlns="urn:oasis:names:tc:xliff:document:1.1" version="1.1">


那么,使用ICU4C和XLIFF进行本地化的最佳实践是什么呢?

我无法回答您关于使用ICU4C和XLIFF进行本地化的最佳实践的问题,但我在构建ICU资源时使用了错误版本的Java JDK,我看到了“XLIFF文档无效”错误


在我的系统上,当我使用
jdk1.7.067
时,我看到了错误。如果我使用
jdk1.6.0\u 45
,一切都正常。这是ICU52.1。您可能需要验证所使用的ICU版本是否使用了正确的JDK。

考虑到XLIFF到ICU ResourceBundle格式转换器尚不支持XLIFF 1.2(已经存在多年),我建议不要使用XLIFF并使用po文件进行本地化。有几种支持po文件的本地化工具:在和的答案中,您将发现大量处理po文件的本地化工具,新工具仍在开发中()

当然,不是每个翻译都能够或愿意处理po文件,但是通过po将软件本地化的机会要比尝试使用XLIFF方式好得多

ERROR: java.lang.NullPointerException