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 に答える