在iOS中本地化数字

简单地说,我有一个正整数[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)];

返回的字符串是英文。


请注意,我有一个非常类似于NSDateFormatter代码片段,但它按预期工作。 NSDateFormatter对象尊重设置的区域设置。


看起来我遇到了一个非常特殊的情况,应用程序的语言环境会吓倒。

我正在通过使用如下所示更改应用程序的默认语言环境:

[[NSUserDefaults standardUserDefaults] setObject:@[@"ar"] forKey:@"AppleLanguages"];

然后,我试图获取首选语言,并使用以下语言创建一个语言环境对象:

NSString* langPrefix = [NSLocale preferredLanguages][0];

最后,从返回的对象中创建一个新的NSLocale对象。 在测试代​​码时,我会从应用程序中更改语言,然后通过Xcode关闭应用程序。 我假设NSUserDefaults不会同步,但即使我调用synchronize方法,它仍然会搞砸。

底线是,测试本地化应该通过部署应用程序来完成,并且在设备与Xcode断开连接之后,应用程序将适当地贯穿所有生命周期阶段。

链接地址: http://www.djcxy.com/p/11539.html

上一篇: Localizing Numbers in iOS

下一篇: Delete cookie issue in C#