Swift * .stringsdict为抛光值返回错误的键

时间:2018-04-15 14:32:31

标签: ios swift localization nslocalizedstring

我正在iOS项目中进行波兰语本地化,在我的 Localizable.stringsdict 文件中我得到了密钥:

<key>general_people_number</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>%#@value@</string>
    <key>value</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>NSStringFormatValueTypeKey</key>
        <string>d</string>
        <key>zero</key>
        <string>%d osób</string>
        <key>one</key>
        <string>%d osoba</string>
        <key>few</key>
        <string>%d osoby</string>
        <key>many</key>
        <string>%d osób</string>
        <key>other</key>
        <string>%d other</string>
    </dict>
</dict>

现在我正在尝试使用:

String.localizedStringWithFormat(NSLocalizedString("general_people_number", comment: ""), 9)

输出结果为:

9 other

因此,如果我从Swift文档中获取此页面的规则,则输出值为“other”类型: http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html 对于“9”,它应该返回“很多”类型的键。

我做错了吗?

1 个答案:

答案 0 :(得分:0)

好吧,我已经弄清楚了......

问题可能是由AppCode 造成的,有些奇怪的bug。它在我添加

时发生
-AppleLanguages (pl)
编辑配置中的

程序参数当我通过Xcode运行我的应用时不会发生。

在AppCode中我也尝试过:

-AppleLanguages (pl)
-AppleLanguages (pol)
-AppleLanguages (Polish)

具有相同的输出。有趣的是我跑的时候

-AppleLanguages(pl)

应用程序之间没有空格以英语运行,所以这意味着这些参数实际工作并选择正确的 Localizable.stringsdict 只是有这个复数规则的错误......

如果有人有解决方法,我会很感激,因为现在我没有办法通过AppCode运行我的应用并测试不同的语言。