Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

RDSDataSource: Плюрализация в iOS

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 38 Anzeige

RDSDataSource: Плюрализация в iOS

Herunterladen, um offline zu lesen

Александр Сычев о том, что такое плюрализация и как с ней правильно работать.

RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.

Александр Сычев о том, что такое плюрализация и как с ней правильно работать.

RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.

Anzeige
Anzeige

Weitere Verwandte Inhalte

Ähnlich wie RDSDataSource: Плюрализация в iOS (12)

Weitere von RAMBLER&Co (20)

Anzeige

Aktuellste (20)

RDSDataSource: Плюрализация в iOS

  1. 1. Александр Сычев Разработчик iOS Плюрализация в iOS
  2. 2. Плюрализация в iOS • Что такое плюрализация • Как с ней работать • Выводы
  3. 3. Плюрализация в iOS • Что такое плюрализация • Как с ней работать • Выводы
  4. 4. Плюрализация в iOS придание чему-либо характера множественности, разнообразия Плюрализация
  5. 5. Плюрализация в iOS языковые строки во множественном числе Плюрализация
  6. 6. Плюрализация в iOS 1 честный депутат[] 11 депутат[ов] берут взятки 24 депутат[а] разворовывают страну Плюрализация
  7. 7. Плюрализация в iOS Чемпионат
  8. 8. Плюрализация в iOS
  9. 9. Плюрализация в iOS • Решение «в лоб» • Apple-way • Github Варианты решения
  10. 10. Плюрализация в iOS Тестирование NSLocalizedString(key, comment) NSLocalizedStringFromTable(key, tbl, comment) NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment)
  11. 11. Плюрализация в iOS Тестирование NSLocalizedString(key, comment) NSLocalizedStringFromTable(key, tbl, comment) NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment)
  12. 12. Плюрализация в iOS «В лоб»
  13. 13. Плюрализация в iOS «В лоб» - (void)testThatFormatterCreatesRuShowStringWithOneChildrenCount { // given NSString *expectedString = @"Показать 1 ответ"; // when NSString *receivedString = [self.formatter stringShowWithChildrenCount:1]; // then XCTAssertEqualObjects(expectedString, receivedString); }
  14. 14. Плюрализация в iOS «В лоб» Достоинства • не требует дополнительных знаний • не зависит от системной локали • тестируем
  15. 15. Плюрализация в iOS «В лоб» Недостатки • нечитабельный код • индивидуальное решение для языка
  16. 16. Плюрализация в iOS Apple-way CLDR Unicode Common Locale Data Repository http://cldr.unicode.org/
  17. 17. Плюрализация в iOS CLDR • Apple • Google • IBM • Microsoft • …
  18. 18. Плюрализация в iOS Language Plural Rules • zero • one • two • few • many • other
  19. 19. Плюрализация в iOS Language Plural Rules
  20. 20. Плюрализация в iOS Локализация vs Плюрализация •строка •.string •набор правил •.stringDict
  21. 21. Плюрализация в iOS .stringDict <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http:// www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version=«1.0"> <dict> <key><КЛЮЧ_СТРОКОВОГО_РЕСУРСА></key> <dict> ... </dict> </dict> </plist>
  22. 22. Плюрализация в iOS .stringDict <dict> <key>NSStringLocalizedFormatKey</key> <string>Показать %#@answers@</string> <key>answers</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>NSStringFormatValueTypeKey</key> <string>ld</string> <key>zero</key> <string></string> <key>one</key> <string>%ld ответ</string> <key>few</key> <string>%ld ответа</string> <key>many</key> <string>%ld ответов</string> <key>other</key> <string>ответы</string> </dict> </dict>
  23. 23. Плюрализация в iOS .stringDict <dict> <key>NSStringLocalizedFormatKey</key> <string>Показать %#@answers@</string> <key>answers</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>NSStringFormatValueTypeKey</key> <string>ld</string> <key>zero</key> <string></string> <key>one</key> <string>%ld ответ</string> <key>few</key> <string>%ld ответа</string> <key>many</key> <string>%ld ответов</string> <key>other</key> <string>ответы</string> </dict> </dict> NSStringLocalizedFormatKey %#@ <имя_переменной> @
  24. 24. Плюрализация в iOS .stringDict <dict> <key>NSStringLocalizedFormatKey</key> <string>Показать %#@answers@</string> <key>answers</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>NSStringFormatValueTypeKey</key> <string>ld</string> <key>zero</key> <string></string> <key>one</key> <string>%ld ответ</string> <key>few</key> <string>%ld ответа</string> <key>many</key> <string>%ld ответов</string> <key>other</key> <string>ответы</string> </dict> </dict>
  25. 25. Плюрализация в iOS Генератор https://www.ibabbleon.com/ios_plurals_localizable_stringsdict.html
  26. 26. Плюрализация в iOS CLDR Достоинства • не требует кода • не требует внешних зависимостей
  27. 27. Плюрализация в iOS CLDR Недостатки • сложный формат • зависит от системной локали • тяжело тестировать
  28. 28. Плюрализация в iOS CLDR
  29. 29. Плюрализация в iOS CLDR
  30. 30. Плюрализация в iOS CLDR
  31. 31. Плюрализация в iOS Build scheme
  32. 32. Плюрализация в iOS Build scheme xcrun simctl launch <deviceid> <appid> -AppleLanguages "(RU)" -AppleLocale "ru_RU"
  33. 33. Плюрализация в iOS https://github.com/Smartling/ios-i18n Smartling.i18n
  34. 34. Плюрализация в iOS Smartling.i18n SLPluralizedStringFromTableInBundle(key, tbl, bundle, n, comment) SLPluralizedStringWithDefaultValue(key, tbl, bundle, n, val, comment) KEY##{rule}
  35. 35. Плюрализация в iOS Smartling.i18n "%d songs found##{one}" = "Найдена %d песня"; "%d songs found##{few}" = "Найдено %d песни"; "%d songs found##{many}" = "Найдено %d песен"; "%d songs found##{other}" = "Найдено %d песен";
  36. 36. Плюрализация в iOS Достоинства •не требует кода •удобный синтаксис Smartling.i18n
  37. 37. Плюрализация в iOS Недостатки • внешняя зависимость • зависит от системной локали • тяжело тестировать Smartling.i18n
  38. 38. Плюрализация в iOS 1%

×