7

我想知道如何在 iPhone 应用程序中显示阿拉伯数字而不本地化每个数字。

例如,我在代码中有一个整数,其值 = 123

我想将其显示为 ١٢٣ 而不必自己本地化每个数字并强制应用程序使用阿拉伯语作为本地化语言,而不管用户选择的语言如何

因为我在整个应用程序中有很多动态变化的数字,所以我需要一个通用的智能解决方案

4

2 回答 2

22
NSDecimalNumber *someNumber = [NSDecimalNumber decimalNumberWithString:@"123"];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSLocale *arLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"ar"] autorelease];
[formatter setLocale:arLocale];
NSLog(@"%@", [formatter stringFromNumber:someNumber]); // Prints in Arabic
[formatter setLocale:[NSLocale currentLocale]];
NSLog(@"%@", [formatter stringFromNumber:someNumber]); // Prints in Current Locale
[formatter release];
于 2012-07-26T13:42:45.327 回答
1

如果您有浮点数,则必须在初始化后添加此行,NSNumberFormatter [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 因此上述代码的修改如下

NSString *test = [NSString stringWithFormat:@"%lu", fileSizeEvet];
//    NSString *test = [NSString stringWithFormat:@"%f", (double)folderSize/1024/2014];
NSDecimalNumber *someNumber = [NSDecimalNumber decimalNumberWithString:test];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSLocale *gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"ar"];

[formatter setLocale:gbLocale];
float myInt = [someNumber floatValue]/1024/1024;
//    NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:myInt]]);
//    NSLog(@"%@", [formatter stringFromNumber:someNumber]); // Prints in Arabic
NSString *folderSizeInArabic = [formatter stringFromNumber:[NSNumber numberWithFloat:myInt]];
fileSizeLabel.text = [NSString stringWithFormat:@" قه‌باره‌ی فایل: %@ مب", folderSizeInArabic];

欲了解更多信息,请访问此链接

于 2015-06-24T11:47:48.040 回答