Maz*_*yod 7 localization objective-c nsnumberformatter ios nslocale
简单地说,我有一个正整数[9,393,3,993],我想将它本地化为某种语言[9,393,3,939].
如果我使用NSNumberFormatter,它将根据用户的语言环境本地化数字.但是,我想覆盖它并选择任何语言环境来将数字转换为.
我尝试以下,并没有工作:
// user locale is @"en"
NSNumberFormatter* formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterNoStyle];
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ar"]];
[formatter setMinimumIntegerDigits:padding];
return [formatter stringFromNumber:@(num)];
Run Code Online (Sandbox Code Playgroud)
返回的字符串是英文的.
请注意,我有一个非常相似的代码片段NSDateFormatter,但它按预期工作.该NSDateFormatter对象尊重设置的区域设置.
我似乎遇到了一个非常特殊的情况,应用程序的区域设置会崩溃。
我正在使用类似以下内容更改应用程序的默认区域设置:
[[NSUserDefaults standardUserDefaults] setObject:@[@"ar"] forKey:@"AppleLanguages"];
Run Code Online (Sandbox Code Playgroud)
然后,我尝试获取首选语言并使用以下方法从中创建语言环境对象:
NSString* langPrefix = [NSLocale preferredLanguages][0];
Run Code Online (Sandbox Code Playgroud)
NSLocale最后,从返回的对象创建一个新对象。测试代码时,我会在应用程序内更改语言,然后通过 Xcode 关闭应用程序。我假设NSUserDefaults不会同步,但即使我调用该synchronize方法,它仍然会搞砸。
底线是,测试本地化应该通过部署应用程序来完成,并且在设备与 Xcode 断开连接之后,以便应用程序能够正确运行所有生命周期阶段。
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |