2015-01-15 2 views
3

"en"및 "ru"언어를 지원하는 앱을 개발 중이므로 사용자가 앱 내에서 언어를 선택할 수 있습니다.iOS : 복수형 및 맞춤 로캘

기본 휴대 전화의 로캘을 'en'으로 설정했지만 앱에서 'ru'언어를 선택한 경우 복수형을 현지화하려는 경우 'many'/ 'few'양식이 무시됩니다. 그래서 그것은 영어 복수 규칙에 의해 현지화되었습니다.

정의 : 계수 = 1
: 내가 가진 출력으로

let locale = NSLocale(localeIdentifier: "ru_RU") 
String(format: NSLocalizedString("%d files", comment: ""), 
        locale: locale, 
        count) 

:

<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'로케일을 만들 수) 국산화 "один файл"- 및 그것은 맞습니다 count = 2 : "2 файла"- 또한 카테고리 ('기타'카테고리에서)
for count = 6 : "6 файла"- 카테고리가 잘못되었습니다. '기타'이지만 'many'에서 가져와야합니다.

휴대 전화의 언어를 러시아어로 변경하면 모두 올바르게 현지화됩니다.

답변

0

당신은 사용해야 키 : 2-4 다른 모든 경우에 = 2 файла

다른

+0

I 1 = один файл

에 대한

하나 그것이 어떻게 채워 져야하는지 안다 :) 그리고 기본 환경에서는 제대로 작동하지만, 그렇지 않은 커스텀 로케일을 사용할 때 문제가있다. 일치 시스템 언어 (예 : 만약 시스템 언어 = 'EN'이지만 다른 규칙을 가진 로케일 'ru'를 사용하면 잘못된 결과가 나옵니다.) – Mikhail