2012-07-26 24 views
7

Tôi muốn biết cách hiển thị số arabic trong ứng dụng iPhone mà không cần bản địa hóa từng chữ số.cách hiển thị số arabic trong ứng dụng iPhone mà không cần bản địa hóa từng chữ số

như ví dụ, tôi có một số nguyên trong các mã có giá trị = 123

Tôi muốn hiển thị nó như 123 mà không cần phải khoanh vùng từng chữ số ngày của riêng mình và buộc các ứng dụng sử dụng arabic là nội địa hóa ngôn ngữ bất kể ngôn ngữ của người dùng lựa chọn

bởi vì tôi có nhiều con số trên tất cả các ứng dụng mà thay đổi tự động, vì vậy tôi cần một giải pháp thông minh generic

+2

Bạn có nghĩa là "chữ số Ả Rập Đông", như trái ngược với "chữ số Ả Rập Tây ". – Hassan

Trả lời

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]; 
+0

cảm ơn, nó đã hoạt động! – Evronia

+0

Cảm ơn, nó đã cứu tôi rất nhiều thời gian. –

+0

hoạt động tốt với các con số nhưng trong trường hợp bạn có các giá trị float như 12.75, nó sẽ trả về bạn chỉ 12 ... dù sao tôi bỏ phiếu cho các giải pháp. – Ans

1

trong trường hợp bạn có dấu chấm động số bạn phải thêm dòng này sau khi ký tắt NSNumberFormatter[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; do đó việc sửa đổi các mã trên sẽ như sau

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]; 

Để biết thêm thông lần this link

Các vấn đề liên quan