在尝试在Xcode中本地化项目时,XLIFF不包含所有形式的复数形式

时间:2017-12-09 15:01:17

标签: ios swift xcode localization xliff

我试图本地化一个小型Xcode项目(Xcode 9和Swift 4)。在那个项目中,有些地方我使用复数,所以我也需要将它们本地化。为此,我使用stringsdict文件。在代码中,我在localizedStringWithFormat(_:,fromat,:argument)上使用String静态方法。这里我的复数代码看起来如何(我只打印单词进行测试):

 let localizedString = NSLocalizedString("%d apple(s)", comment: "The number of apples")
    print(String.localizedStringWithFormat(localizedString, 0))
    print (String.localizedStringWithFormat(localizedString, 1))
    print(String.localizedStringWithFormat(localizedString, 2))
    print(String.localizedStringWithFormat(localizedString, 10))

然后我创建一个stringsdict文件。它看起来像这样:

enter image description here

在WWDC 2017(会话401)关于本地化的视频中,我们说,当我们使用stringsdict文件将复数本地化为其他语言时(在这种情况下,我想将其本地化为俄语)我们只是需要为我们的开发语言(英语)提供值,并且在导出本地化时,Xcode将自动在XLIFF文件中为我们想要本地化的语言创建案例。所以我给出了零,一个和另一个的值(在会话中的演示值只给了一个和另一个键,但是,我不知道这是什么原因问题)。

现在,当我创建一个XLIFF文件时,它看起来像这样(只有苹果的一部分):

enter image description here

正如您所看到的,Xcode不会自动为特定语言生成案例(对于俄语,它应该有4个)。我使用stringsdict文件以及首次尝试本地化复数,因此我无法弄清楚我做错了什么。如果您知道问题所在,或有任何建议,我将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在Xcode中你几乎无能为力。 XLIFF只保留被告知要保留的段。

更好的方法是重新编写字符串,以便复数不再是问题,例如:

不是"%d apple(s)"

但是"苹果数量:%d"

你应该向苹果提出一个关于此事的错误。

除非您要求使用Xcode的XLIFF,否则我建议您不要依赖字符串文件。