Я использую In App Покупки в приложении iOS.Я хочу отобразить цену в правильном формате в зависимости от пользователя / устройства.
Вот мой код:
let price=product.price
let numberFormatter = NumberFormatter()
numberFoxrmatter.formatterBehavior = .behavior10_4 //doesn't change anything if I remove this line
numberFormatter.numberStyle = .currency
numberFormatter.locale = product.priceLocale
let formattedPrice=numberFormatter.string(from: price)
Но символ валюты не является хорошим и / или неуместным внекоторые случаи.В моем примере цена продукта составляет 19,99 или 20,99 € .
Примеры
С устройства:
product.priceLocale
: en_FR@currency=EUR (fixed)
Locale.current
: en_FR (current)
Выход: € 20,99
Должен отображаться: 20, 99 €
с тренажера:
product.priceLocale
: en_FR@currency=EUR (fixed)
Locale.current
: en_US (current)
Вывод: $ 20,99
Должно отображаться: 20,99 € или $ 19,99
У меня есть несколько пользователей, у которых есть такая же проблема с другими валютами, где символ должен быть помещен после цены, в отличие отформат долларов.И еще один пользователь, который видит $ 7290 вместо 7290 49 (это совсем другая цена ...).
Я почти уверен, что это связано с настройкой языка или Locale.current
.Но если я изменю свой основной язык на французский на моем устройстве, у меня будет та же цена "€ 20,99".Что странно, если мои Locale.current
переключаются на en_US (current)
.
Любой способ решить эту проблему?
Другое решение, которое меня порадовало бы: отображать цену в долларах завсе , независимо от языка и валюты пользователя.