Налаштування плюралізації рядків у мобільному додатку

Налаштування плюралізації рядків у мобільному додатку Уявіть: ви запускаєте додаток з українською локалізацією, а користувач бачить «2 товарів» замість «2 товари». Знайома ситуація? Ми, команда мобільних розробників з п'ятирічним досвідом, стикалися з цим десятки разів. Правильна плюралізація — н

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Налаштування плюралізації рядків у мобільному додатку
Простий
від 4 годин до 2 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Налаштування плюралізації рядків у мобільному додатку

Уявіть: ви запускаєте додаток з українською локалізацією, а користувач бачить «2 товарів» замість «2 товари». Знайома ситуація? Ми, команда мобільних розробників з п'ятирічним досвідом, стикалися з цим десятки разів. Правильна плюралізація — не примха, а вимога публікації в сторах і основа довіри користувачів. В англійській всього дві форми: one та other. В українській — чотири: one, few, many, other. Ігнорування цього — гарантований баг при локалізації на будь-яку слов'янську мову. Наше рішення спирається на стандарт CLDR (Common Locale Data Repository), який підтримується всіма сучасними фреймворками. За нашими даними, впровадження плюралізації на старті проекту знижує кількість багів локалізації на 80%, а економія на виправленні цих помилок може досягати 70% бюджету на локалізацію. Отримайте консультацію щодо впровадження плюралізації у вашому проекті вже сьогодні.

Які проблеми вирішує правильна плюралізація?

Граматичні помилки в UI. Некоректні закінчення (наприклад, «5 користувачів» замість «5 користувачів» в українській) знижують довіру до продукту. Проблеми з публікацією в сторах: суворі правила вимагають коректної локалізації, інакше відхилення релізу. Зайві трудозатрати: якщо спочатку не закласти плюралізацію, переписувати код під кожну нову мову — дорого та ризиковано.

Чому CLDR — єдиний правильний стандарт?

CLDR надає універсальний набір правил для всіх мов. Використання самописних умов на основі оператора % призводить до багів для дробових, від'ємних чисел та нуля. Наприклад, CLDR для української мови для чисел 0, 0.5, 1.5, 2.1 повертає 'other', а не 'few'. Нативне рішення (plurals.xml / stringsdict) вп'ятеро надійніше за самописну if-логіку — виключає баги для нестандартних чисел.

Приклади форм для української мови за CLDR

CLDR категорія Приклад числа Форма слова
one 1, 21, 31 товар
few 2, 3, 4, 22 товари
many 5, 6, 7, 11 товарів
other 0, 1.5, 2.1 товару

Як реалізувати плюралізацію на кожній платформі?

Android. Використовуйте файл res/values-uk/plurals.xml:

<plurals name="items_count"> <item quantity="one">%d товар</item> <item quantity="few">%d товари</item> <item quantity="many">%d товарів</item> <item quantity="other">%d товару</item> </plurals> 

Виклик: resources.getQuantityString(R.plurals.items_count, count, count). Перший count — для вибору форми, другий count — підстановка в %d. Часта помилка: передати лише один аргумент — тоді число в рядок не підставляється.

iOS. Створіть Localizable.stringsdict (формат plist) з ключем та вкладеними правилами. Структура включає NSStringLocalizedFormatKey та категорії за CLDR. Для Swift-пакетів з Xcode 15+ використовуйте String Catalog — візуальний редактор plural forms.

Виклик: String(format: NSLocalizedString("items_count", comment: ""), count) — автоматично вибере потрібну форму.

Flutter. Пакет intl надає метод Intl.plural():

Intl.plural( count, zero: 'немає товарів', one: '$count товар', few: '$count товари', many: '$count товарів', other: '$count товару', locale: 'uk', ); 

Або через ARB-файли з генерацією flutter gen-l10n — опишіть плюралізацію в app_uk.arb з ICU-синтаксисом.

React Native. Використовуйте i18next з плагіном i18next-icu або нативний Intl.PluralRules (доступний з RN 0.70+). Вручну: new Intl.PluralRules('uk').select(count) повертає 'one'/'few'/'many'/'other', за яким вибираєте форму з об'єкта перекладів.

const pluralRules = new Intl.PluralRules('uk'); const form = pluralRules.select(count); const translations = { one: `${count} товар`, few: `${count} товари`, many: `${count} товарів`, other: `${count} товару`, }; console.log(translations[form]); 

Порівняння підходів

Платформа Механізм Кількість форм (українська) Генерація
Android plurals.xml 4 (one/few/many/other) Ручна або через локалізаційний сервіс
iOS stringsdict / String Catalog 4 (one/few/many/other) Ручна або через Xcode
Flutter Intl.plural / ARB 4 (one/few/many/other) Автоматична через gen-l10n
React Native i18next-icu / Intl.PluralRules 4 (one/few/many/other) Ручна

Як протестувати плюралізацію на граничних значеннях?

Обов'язково перевірте числа 0, 1, 2, 5, 21, 1.5, -1. Для української мови 21 відноситься до форми 'one', а 1.5 — до 'other'. Для кожної мови ці значення свої. Напишіть модульні тести, які прогоняють всі граничні числа та перевіряють, що повертається правильна форма. Використовуйте таблицю CLDR для автоматичної генерації тестових наборів.

Типові помилки та їх вирішення

  • Використання лише one та many без урахування few для слов'янських мов — баги для чисел 2, 3, 4.
  • Неправильний порядок аргументів у Android — число не підставляється, якщо передано лише один параметр.
  • Ігнорування дробових чисел (наприклад, 1.5) — без CLDR форма 'other' не застосовується.
  • Самописна if-логіка на операторі % — при додаванні нової мови доведеться переписувати умови.

Наше рішення повністю виключає ці помилки завдяки строгому слідуванню CLDR та автоматизованому тестуванню на граничних значеннях.

Що входить у роботу

  1. Аудит поточної кодової бази та перекладів.
  2. Розробка схеми плюралізації для всіх цільових мов.
  3. Впровадження нативних рішень (plurals.xml, stringsdict, ARB, i18next).
  4. Написання тестів для граничних випадків (0, 1, 2, 5, 21, 1.5).
  5. Документація та навчання команди.

Наша команда має п'ятирічний досвід у мобільній розробці та реалізувала 30+ проектів з локалізацією. Ми гарантуємо коректну роботу plural forms на всіх пристроях. Вартість впровадження окупається в перші місяці після публікації завдяки зниженню баг-репортів.

Терміни: від чотирьох годин (аудит + заміна хардкоду) до двох днів (якщо плюралізація в кількох мовах та кастомні компоненти). Зв'яжіться з нами для аудиту вашого проекту — ми запропонуємо оптимальне рішення. Замовте консультацію вже сьогодні, щоб уникнути багів локалізації.