使用ICU4C和XLIFF进行本地化

时间:2015-03-06 06:47:22

标签: internationalization icu xliff xgettext translate-toolkit

Localizing with ICU建议以XLIFF格式保留可本地化的数据。

所以我使用GNU xgettext将字符串提取到gettext格式文件,然后使用po2xliff将它们转换为XLIFF文件。

最后,我尝试使用XLIFF To ICU ResourceBundle Format Converter将它们转换为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'.

几乎相同的错误was reported years ago并且尚未解决。

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

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

好吧,我根据example.xlf in Localizing with ICU page编辑了这一行(示例文件中有很多拼写错误),重试,最后得到:

ERROR: java.lang.NullPointerException

那么使用ICU4C和XLIFF进行本地化的最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

考虑到XLIFF To ICU ResourceBundle格式转换器尚不支持XLIFF 1.2(已存在多年),我建议远离XLIFF并使用po文件进行本地化。有几种支持po文件的本地化工具:在this questionthis one的答案中,你会发现大量的本地化工具可以处理po文件,而新的文件仍在开发中({{ 3}})。

当然并非所有翻译人员都能够或愿意处理po文件,但是通过po获得本地化软件的机会要比尝试使用XLIFF方式好得多。

答案 1 :(得分:1)

I can't answer your question on the best practice for localizing with ICU4C and XLIFF, but I have seen the "The XLIFF document is invalid" error when I used the wrong version of the Java JDK while building the ICU resource.

On my system, I see the error when I use jdk1.7.0_67. Everything works fine if I use jdk1.6.0_45. This is with ICU 52.1. You might need to verify that you are using the correct JDK for the version of ICU you are using.