2015-01-15 5 views
3

Я разрабатываю приложение, поддерживающее языки «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 файлов" - неверно, также из категории «другой», но следует брать из «многих»

Если я переключу язык телефона на русский, тогда все будут правильно локализованы.

ответ

0

Вы должны использовать клавиши:

один 1 = один файл

несколько для 2-4 = 2 файла

другой для всех остальных случаев

+0

I знайте, как это должно быть заполнено :) И он корректно работает в обстоятельствах по умолчанию, но имеет проблемы при использовании пользовательского локали, который не сопоставить системный язык (например, если системный язык = 'en', но я использую locale 'ru', который имеет разные правила, тогда я получаю неправильный результат) – Mikhail

 Смежные вопросы

  • Нет связанных вопросов^_^