iOS - Hanling复数名词本地化与.stringsdict - 不工作

时间:2015-09-21 09:42:39

标签: ios cocoa-touch localization nslocalizedstring

我正在尝试实施复数规则本地化。即,我希望"一个文件......"当参数为1时," 2个文件......"当论证是2,同样。

我跟着Apple guidelines。但我总是得到复数的结果,即使是1个,即#34; 1个文件......"。

我创建了一个 Localizable.stringsdict 文件,其中包含以下内容(与苹果指南完全相同)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>%d messages in your inbox</key>
        <dict>
            <key>NSStringLocalizedFormatKey</key>
            <string>%#@messages@ in your inbox</string>
            <key>messages</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>d</string>
                <key>one</key>
                <string>One message is</string>
                <key>other</key>
                <string>%d messages are</string>
            </dict>
        </dict>
    </dict>
</plist>

这是我在代码

中使用此密钥的方式
    NSLog(@"%@", [NSString localizedStringWithFormat:NSLocalizedString(@"%d messages in your inbox", @"Message shown for remaining files"), 1]);

可能是什么问题? Here is the sample code I have tried so far.

2 个答案:

答案 0 :(得分:1)

调试时,我注意到Localization.stringsdict文件被忽略了。当我重新创建它时,一切都开始正常工作。我猜原始文件是用错误的类型创建的:正确的类型应该是Property List

我已根据您的建议发送了pull request

答案 1 :(得分:-1)

只是文件名Localizable.stringsdict后面紧跟着一个空格...删除文件名中的空格,一切正常。无需重新创建文件。

编辑:

有人投票否决了。我可以提供更明确的证据。

根据作者的初次提交,

https://github.com/jsramraj/LocalizationTest/commit/cae7515d8f886475907399e54e6d98e62bc47237

您会看到文件名LocalizationTest/en.lproj/Localizable.stringsdict后跟一个空格...这就是它被破坏的原因。重命名它,一切都会好起来。