如何在本地化目标-c iOS中处理复数

时间:2015-06-04 08:41:59

标签: ios objective-c localization plural

我正在浏览此页面,了解如何处理复数形式。

https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html#//apple_ref/doc/uid/10000171i-CH5-SW10

我添加了一个包含以下内容的english.stringsdict。

<plist version="1.0">
    <dict>
        <key>%d file(s) remaining</key>
        <dict>
            <key>NSStringLocalizedFormatKey</key>
            <string>%#@files@</string>
            <key>files</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>d</string>
                <key>one</key>
                <string>%d file remaining</string>
                <key>other</key>
                <string>%d files remaining</string>
            </dict>
        </dict>
    </dict>
</plist>

我已将文件检查器中的本地化属性设置为英语 我有一个Localizable.strings也设置为英语,其中包含以下内容。

/* Message shown for remaining files */
"%d file(s) remaining" = "%d file(s) remaining";

我已将模式中的应用程序语言设置为英语。

我像这样设置标签文字

self.label.text = [NSString localizedStringWithFormat:NSLocalizedString(@"%d file(s) remaining", @"Message shown for remaining files"), count];

显示的内容是&#34;剩余5个文件&#34;

如果有一个文件,我想要显示的是剩余5个文件或剩余1个文件。

1 个答案:

答案 0 :(得分:0)

Localizable.strings中不能使用与Localizable.stringsdict中相同的键。系统首先查看Localizable.strings,如果找不到密钥,他会查看Localizable.stringsdict。

解决方案:只需删除

即可
/* Message shown for remaining files */
"%d file(s) remaining" = "%d file(s) remaining";
来自Localizable.strings的