在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
文件。
即使它是空的也需要它 。
尝试使用您的项目并添加文件使项目工作正常。