带有 NSNumberFormatter 的字符串复数
String pluralizer with NSNumberFormatter
我想通过常用的复数技术 .stringsdict
文件显示一个格式良好的整数值。 (苹果文档 here.)
所以如果我有一件事,我希望我的输出显示为
1 thing
但是如果我有两千三百六十四个东西,我想要那些逗号:
2,364 things
可惜字符串复数化技术没有给我:
2364 things
我可以用 NSNumberFormatter
来实现逗号。我可以用.stringsdict
本地化技术实现多元化
我可以轻松实现两者吗?
因为您已经 .stringsdict
文件设置了正确的复数字符串,所以您实际上不需要数字格式化程序。只需使用 String
或 NSString
.
的 localizedStringWithFormat
方法
假设您已经在 Localizable.strings 文件和 .stringsdict
文件中设置了本地化密钥 "%d things"
,您的代码将类似于:
Swift:
let things = 2364
let localizedString = String.localizedStringWithFormat(NSLocalizedString(@"%d things", @"Your comment"), things)
Objective-C:
int things = 2364;
NSString *localizedString = [NSString localizedStringWithFormat:NSLocalizedString(@"%d things", @"Your comment"), things];
根据您的语言环境,结果将类似于:
2,364 things
2.364 things
2 364 things
我想通过常用的复数技术 .stringsdict
文件显示一个格式良好的整数值。 (苹果文档 here.)
所以如果我有一件事,我希望我的输出显示为
1 thing
但是如果我有两千三百六十四个东西,我想要那些逗号:
2,364 things
可惜字符串复数化技术没有给我:
2364 things
我可以用 NSNumberFormatter
来实现逗号。我可以用.stringsdict
本地化技术实现多元化
我可以轻松实现两者吗?
因为您已经 .stringsdict
文件设置了正确的复数字符串,所以您实际上不需要数字格式化程序。只需使用 String
或 NSString
.
localizedStringWithFormat
方法
假设您已经在 Localizable.strings 文件和 .stringsdict
文件中设置了本地化密钥 "%d things"
,您的代码将类似于:
Swift:
let things = 2364
let localizedString = String.localizedStringWithFormat(NSLocalizedString(@"%d things", @"Your comment"), things)
Objective-C:
int things = 2364;
NSString *localizedString = [NSString localizedStringWithFormat:NSLocalizedString(@"%d things", @"Your comment"), things];
根据您的语言环境,结果将类似于:
2,364 things
2.364 things
2 364 things