Я разрабатываю приложение, поддерживающее языки «en» и «ru», пользователи могут выбирать язык внутри приложения.iOS: множественное число и пользовательский язык
Если локальный телефон по умолчанию установлен в «en», но внутри приложения выбран язык «ru», тогда при попытке локализовать множественное предложение игнорируется форма «много»/«несколько». Таким образом, он локализован по английским правилам множественного числа.
Определение:
<key>%d files</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@[email protected]</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>one</key>
<string>один файл</string>
<key>many</key>
<string>%d файлов</string>
<key>other</key>
<string>%d файла</string>
</dict>
</dict>
Код для локализации (вручную создать локаль 'RU'):
let locale = NSLocale(localeIdentifier: "ru_RU")
String(format: NSLocalizedString("%d files", comment: ""),
locale: locale,
count)
Как выход я получил:
для подсчета = 1: "один файл" - и это правильно
для count = 2: "2 файла" - это тоже право (из категории 'прочее')
для count = 6: "6 файлов" - неверно, также из категории «другой», но следует брать из «многих»
Если я переключу язык телефона на русский, тогда все будут правильно локализованы.
I знайте, как это должно быть заполнено :) И он корректно работает в обстоятельствах по умолчанию, но имеет проблемы при использовании пользовательского локали, который не сопоставить системный язык (например, если системный язык = 'en', но я использую locale 'ru', который имеет разные правила, тогда я получаю неправильный результат) – Mikhail