【问题标题】:Xcode 6 localization of plurals & genders with XLIFFXcode 6 使用 XLIFF 对复数和性别进行本地化
【发布时间】:2014-10-03 12:50:30
【问题描述】:

在 Xcode 6 中,XLIFF 文件格式现在用于字符串的本地化。但是,我需要本地化复数和性别。我如何在 Xcode 6 中做到这一点?

据我了解,XLIFF 文件现在替换了 Localizable.strings 文件。在 iOS 7/OS X 10.9 中,我们可以通过添加 Localizable.stringsdict 来本地化复数和性别,但这需要 Localizable.strings 存在。但是由于现在没有 Localisable.strings 文件,我怎样才能让 Localizable.stringsdict 文件工作呢?

【问题讨论】:

    标签: localization xcode6 xliff


    【解决方案1】:

    从 Xcode 6 开始,Apple 使用 XLIFF 作为导出项目以进行本地化的文件格式。但是,项目本身内部没有任何变化。根据 Apple 在Handling Noun Plurals and Units of Measurement 上的文档,您应该继续使用 Localisable.strings 和 Localizable.stringsdict 文件来处理复数。

    您可以参考此Objective-C project 或此Swift project 作为在 Xcode 6 中使用字符串字典文件作为复数的示例。

    更多关于 XLIFF 和 Xcode 6 的背景知识:

    XLIFF(XML 本地化交换文件格式)是一种基于 XML 的格式,旨在标准化本地化过程中在工具之间传递可本地化数据的方式。 XLIFF 在 2002 年被 OASIS 标准化。

    当您在 Xcode 中单击 Editor -> Export for Localization 时,它会将所有可本地化的资产打包到一个 XLIFF 文件中,该文件可以交给翻译人员来本地化您的应用程序的字符串。由于 XLIFF 是一种标准化的文件格式,这意味着翻译人员和翻译工具不需要了解 Apple 的内部字符串格式。

    这是通过导出上述引用的Swift project 以进行本地化生成的example of the resulting XLIFF 文档。现在,翻译人员可以使用翻译平台或工具来翻译您的应用程序内容并将本地化的 XLIFF 文件返回给您。作为开发人员,您可以使用 Xcode 的“导入本地化”功能将翻译后的 XLIFF 文件导入您的项目。这将导致 Xcode 从导入的 XLIFF 生成必要的区域设置特定字符串文件。

    简而言之,您开发项目的方式没有任何改变。 Xcode 6 中添加了一个新功能来简化本地化过程。

    关于复数和本地化导出,我应该提一下一个警告。从 Xcode 6.1 开始,Apple 的本地化功能导出仍然缺乏正确导出复数的方法。这很可能是由于当前的 XLIFF 规范没有标准化的方法来管理字符串的复数表示。 Apple 有一个open bug 来解决这个问题。

    【讨论】:

    • 简而言之:如果我有复数,请继续使用 Localizable.strings 和 Localizable.stringsdict。如果我不这样做,那么我可以(但不必)使用 XLIFF。在使用 Localizable.strings/.stringsdict 进行复数本地化时,我可以不混合和匹配两者,即 XLIFF 用于非复数本地化吗?还是必须是其中之一?
    • @iMaddin,您继续使用 Localizable.strings/.stringsdict 进行复数本地化。 XLIFF 只是一种交换格式,用于从项目中导出字符串并将翻译导入回项目中。您根本不必使用这个新的 Xcode 功能或 XLIFF。它可以简化与习惯 XLIFF 或支持它的翻译平台的翻译人员合作的过程。 XLIFF 不能替代 Apple 的 Localizable.strings/.stringsdict 文件。
    • @Scott,.stringsdict 文件中的字符串在 en.xliff 文件中不可用,您在上面也提到过。我的问题是:你如何管理它?将 .stringsdict 文件单独发送给翻译器?
    【解决方案2】:

    XLIFF 导出从 Xcode 9 开始全面支持复数

    Xcode 9.0 Release Notes:

    添加了对 XLIFF 导出和导入字符串字典文件的支持,包括支持使用正确的每种语言的复数变体。 (16785521)

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多