Настройка плюрализации строк в мобильном приложении

Представьте: вы запускаете приложение с русской локализацией, а пользователь видит «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-ru/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: 'ru', ); 

Или через ARB-файлы с генерацией flutter gen-l10n — опишите плюрализацию в app_ru.arb с ICU-синтаксисом.

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

const pluralRules = new Intl.PluralRules('ru'); 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 на всех устройствах. Стоимость внедрения окупается в первые месяцы после публикации за счёт снижения баг-репортов.

Сроки: от четырёх часов (аудит + замена хардкода) до двух дней (если плюрализация в нескольких языках и кастомные компоненты). Свяжитесь с нами для аудита вашего проекта — мы предложим оптимальное решение. Закажите консультацию уже сегодня, чтобы избежать багов локализации.