【问题标题】:Localizing with ICU4C and XLIFF使用 ICU4C 和 XLIFF 进行本地化
【发布时间】:2015-03-06 06:47:21
【问题描述】:

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 进行本地化的最佳做法是什么?

【问题讨论】:

    标签: internationalization icu xliff xgettext translate-toolkit


    【解决方案1】:

    考虑到 XLIFF 到 ICU ResourceBundle 格式转换器还不支持 XLIFF 1.2(已经存在多年),我建议远离 XLIFF 并使用 po 文件进行本地化。有几种支持 po 文件的本地化工具:在this questionthis one 的答案中,您会发现相当多的本地化工具可以处理 po 文件,并且新的工具仍在开发中(like this one)。

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

    【讨论】:

      【解决方案2】:

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

      在我的系统上,我在使用 jdk1.7.0_67 时看到了错误。如果我使用jdk1.6.0_45,一切正常。这是ICU 52.1。您可能需要验证您使用的 JDK 是否适用于您正在使用的 ICU 版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-08
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        • 2014-01-24
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        相关资源
        最近更新 更多