【发布时间】:2015-01-15 20:39:09
【问题描述】:
我正在开发支持“en”和“ru”语言的应用程序,用户可以在应用程序内选择语言。
如果默认手机的语言环境设置为“en”,但在应用程序内部选择“ru”语言,则在尝试本地化复数句子时忽略“many”/“few”形式。所以它是由英语复数规则本地化的。
定义:
<key>%d files</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>один файл</string>
<key>many</key>
<string>%d файлов</string>
<key>other</key>
<string>%d файла</string>
</dict>
</dict>
要本地化的代码(手动创建“ru”语言环境):
let locale = NSLocale(localeIdentifier: "ru_RU")
String(format: NSLocalizedString("%d files", comment: ""),
locale: locale,
count)
作为我得到的输出:
计数 = 1: "один файл" - 没错
for count = 2: "2 файла" - 也是正确的(来自“其他”类别)
对于 count = 6: "6 файла" - 错误,也来自“其他”类别,但应该来自“许多”
如果我将手机的语言切换为俄语,则所有语言都已正确本地化。
【问题讨论】:
标签: ios iphone ios7 localization nslocale