Локализовать валюту для iPhone

Я хотел бы, чтобы мое приложение iPhone позволяло вводить, отображать и хранить суммы в валюте, используя для этого соответствующий символ ($, €, ₤, ¥ и т. Д.).

Будет ли NSNumberFormatter делать все, что мне нужно? Что происходит, когда пользователь переключает свою локаль, и эти суммы (доллары, иены и т. Д.) Сохраняются как NSDecimalNumbers. Я полагаю, что для того, чтобы быть в безопасности, необходимо как-то захватить локаль во время ввода, а затем символ валюты и сохранить их в моем экземпляре вместе с NSDecimalNumber ivar, чтобы они могли быть развернуты и отображены соответствующим образом по дороге, если пользователь изменит их языковой стандарт с момента создания предмета?

Извините, у меня мало опыта локализации, поэтому я надеюсь на пару быстрых указателей перед погружением. Наконец, любое понимание того, как вы обрабатываете такой вход, учитывая ограничения на клавиатурах iPhone?

NSNumberFormatter – это, безусловно, путь! Вы можете установить NSLocale в NSNumberFormatter, форматтер будет автоматически вести себя в соответствии с этой локалью. Языковой стандарт по умолчанию для форматирования чисел всегда является валютой для выбранного региона региона.

NSDecimalNumber *someAmount = [NSDecimalNumber decimalNumberWithString:@"5.00"]; NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; NSLog(@"%@", [currencyFormatter stringFromNumber:someAmount]); 

Это будет регистрировать сумму «5,00» в соответствии с форматом региона по умолчанию для пользователей. Если вы хотите изменить валюту, которую вы можете установить:

 NSLocale *aLocale = [[NSLocale alloc] initWithLocaleIdentifier: "nl-NL"] [currencyFormatter setLocale:aLocale]; 

Которая выберет валюту по умолчанию для этой локали.

Часто, хотя вы не взимаете плату в местной валюте своего пользователя, а самостоятельно. Чтобы заставить NSNumberFormatter форматироваться в вашей валюте, сохраняя при этом форматирование номера по своему NSNumberFormatter , используйте:

 currencyFormatter.currencyCode = @"USD" currencyFormatter.internationalCurrencySymbol = @"$" currencyFormatter.currencySymbol = @"$" 

В en-US это будет отформатировано как $5.00 в nl-NL, это $ 5,00 .

Interesting Posts

Каков наилучший способ сохранить JNIEnv *

DDD, слой Anti Corruption, руководство пользователя?

Самый быстрый способ протестировать интернет-соединение

Конкатенация списка Scala, ::: vs ++

Как я могу запросить папку назначения в пакетном файле?

Узнайте, какой процесс блокирует файл или папку в Windows

Почему копирование отдельных файлов занимает намного больше одного большого файла?

Алгоритм интерполяции ближайших соседей в MATLAB

Эффективный способ удаления ВСЕХ пробелов из строки?

Как я могу использовать свой компьютер для управления моим домом?

Можем ли мы перегрузить основной метод в Java?

Запустите Google Chrome на Mac с помощью команд командной строки

Границы, не показанные в Firefox с граничным коллапсом на таблице, позиция: относительная по tbody или фоновый цвет на ячейке

Автоматическое обновление браузера при изменении определенного файла в каталоге?

Что случилось с API Java Date & Time?

Давайте будем гением компьютера.