关于cocoa-touch:iOS-带.stringsdict的汉灵复数名词本地化-不起作用

iOS - Hanling plural noun localization with .stringsdict - not working

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

我遵循了Apple的指导方针。但是我总是得到复数的结果,即使是1,也就是" 1个文件..."。

我已经创建了一个Localizable.stringsdict文件,其中包含以下内容(完全类似于Apple准则)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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>

这就是我在代码中使用此键的方式

1
    NSLog(@"%@", [NSString localizedStringWithFormat:NSLocalizedString(@"%d messages in your inbox", @"Message shown for remaining files"), 1]);

可能是什么问题?这是到目前为止我尝试过的示例代码。


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

我已经按照您的建议发送了拉取请求。


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

根据作者的初次提交,
您会看到文件名LocalizationTest/en.lproj/Localizable.stringsdict 后跟一个空格...这就是它被破坏的原因。重命名它,一切都会正常。