在iOS 7中使用新格式字符串说明符配置字典(复数支持)

我正在尝试使用新的支持在iOS 7中进行更复杂的复数本地化。我创建了一个.stringsdict文件,根据Foundation发行说明(以及Cocoa WWDC会话中的新function)中的信息进行格式化。 我已经validation.stringsdict正被复制到我的应用程序包中(事实上-[NSBundle pathForResource:...]找到它)。 但是, +[NSString localizedStringWithFormat:]不会返回根据配置字典中的规则格式化的字符串。

码:

 - (IBAction)textFieldEditingDidEnd:(UITextField *)sender { NSInteger numPeople = [sender.text integerValue]; self.textView.text = [NSString localizedStringWithFormat: NSLocalizedString(@"%d people are in the room", @"%d people are in the room"), (long)numPeople]; } 

Localizable.stringsdict:

     %d people are in the room  NSStringLocalizedFormatKey %#@num_people_in_room@ in the room num_people_in_room  NSStringFormatSpecTypeKey NSStringPluralRuleType NSStringFormatValueTypeKey d zero No one is one A person is two Two people are other %d people are     

我还在这里上传了一个完整的,非常简单的示例项目: https : //www.dropbox.com/s/mfze377g0r1iqde/PluralDemo.zip 。 在文本字段中输入一个数字,并使用-localizedStringWithFormat:的结果更新标签。

有没有人得到这个工作? 我在设置时做错了什么?

stringsdict(复数)在OS X Mavericks和iOS 7中都有效,并且基于Unicode CLDR(Common Locale Data Repository)。 英语仅支持零,一和其他。 某些语言支持“Two”,例如阿拉伯语,希伯来语,爱尔兰语等。

资料来源:

  • OS X v10.9的基础发行说明
  • Unicode CLDR语言复数规则

更新(2015年9月1日):

正如我在下面的回复中提到的(从2014年1月13日开始),仍然需要常规字符串文件,即使它是空的。

你还添加了空字符串文件吗? 文档说你必须添加字符串文件,即使它是空的,可能是由于Cocoa内部实现了本地化。

这里的问题是你缺少Localizable.strings文件。

即使它是空的也需要它

尝试使用您的项目并添加文件使项目工作正常。