Форматирование локализованных чисел с единичными символами - PullRequest
0 голосов
/ 27 августа 2018

Ситуация

Я хочу отформатировать Double 23.54435678 в строку типа 23.54 fps с учетом языкового стандарта пользователя.

let formatter = NumberFormatter()
formatter.maximumFractionDigits = 2
let formatted = formatter.string(from: fps as NSNumber)! + " fps"

Для локального форматирования чисел я использую DateFormatter.

Вопрос

Как мне обращаться с частью блока?Допустимо ли просто добавить единицу к форматированному номеру?Расположение символа не зависит от локали?Как мне справиться с этим?

1 Ответ

0 голосов
/ 27 августа 2018

Какао не имеет встроенной поддержки для "кадров в секунду", поэтому вам придется предоставить суффикс самостоятельно, например, используя систему локализации Xcode.

Вам все еще нужно отформатировать числовое значение с помощью NumberFormatter для текущей локали, а затем вставить полученную строку чисел в строку локализованного формата:

let formatter = NumberFormatter()
formatter.maximumFractionDigits = 2
let numberString = formatter.string(from: fps)
let formatString = NSLocalizedString("%@ fps", comment: "") // provide localizations via .strings files
let fpsString = String(format: formatString, arguments: numberString)

Если размещение блока соответствует локали-зависимым (вам придется выяснить это для целевых локалей вашего приложения), вам придется справиться и с этим вручную.Вы можете использовать систему локализации здесь, предоставив локализации с адекватно расположенным заполнителем для числового значения, например, %@ fps для английского языка и x %@ yz для ... ну, Fantasy Language.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...