我试图本地化一个小型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
文件。它看起来像这样:
在WWDC 2017(会话401)关于本地化的视频中,我们说,当我们使用stringsdict
文件将复数本地化为其他语言时(在这种情况下,我想将其本地化为俄语)我们只是需要为我们的开发语言(英语)提供值,并且在导出本地化时,Xcode将自动在XLIFF
文件中为我们想要本地化的语言创建案例。所以我给出了零,一个和另一个的值(在会话中的演示值只给了一个和另一个键,但是,我不知道这是什么原因问题)。
现在,当我创建一个XLIFF
文件时,它看起来像这样(只有苹果的一部分):
正如您所看到的,Xcode不会自动为特定语言生成案例(对于俄语,它应该有4个)。我使用stringsdict
文件以及首次尝试本地化复数,因此我无法弄清楚我做错了什么。如果您知道问题所在,或有任何建议,我将非常感谢您的帮助。
答案 0 :(得分:0)
在Xcode中你几乎无能为力。 XLIFF只保留被告知要保留的段。
更好的方法是重新编写字符串,以便复数不再是问题,例如:
不是"%d apple(s)"
但是"苹果数量:%d"
你应该向苹果提出一个关于此事的错误。
除非您要求使用Xcode的XLIFF,否则我建议您不要依赖字符串文件。