Setting Up Pluralization in Mobile Apps

Imagine: you launch an app with Russian localization, and the user sees '2 товаров' instead of '2 товара'. Sound familiar? Our team of mobile developers with five years of experience has encountered this dozens of times. Proper pluralization is not a whim—it's a requirement for store publication and

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Setting Up Pluralization in Mobile Apps
Simple
from 4 hours to 2 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

Imagine: you launch an app with Russian localization, and the user sees '2 товаров' instead of '2 товара'. Sound familiar? Our team of mobile developers with five years of experience has encountered this dozens of times. Proper pluralization is not a whim—it's a requirement for store publication and the foundation of user trust. English has only two forms: one and other. Russian has four: one, few, many, and other. Ignoring this is a guaranteed bug when localizing to any Slavic language. Our solution relies on the CLDR (Common Locale Data Repository) standard, which is supported by all modern frameworks. According to our data, implementing pluralization at the start of a project reduces localization bugs by 80%, and savings on fixing these errors can reach 70% of the localization budget. Get a consultation on implementing pluralization in your project today.

What Problems Does Correct Pluralization Solve?

Grammatical errors in the UI. Incorrect endings (e.g., '5 пользователей' instead of '5 пользователей' in Russian) reduce trust in the product. Problems with store publication: strict rules require correct localization, otherwise release rejection. Extra labor costs: if you don't plan for pluralization initially, rewriting code for each new language is expensive and risky.

Why CLDR Is the Only Correct Standard

CLDR provides a universal set of rules for all languages. Using custom conditions based on the % operator leads to bugs for fractional, negative numbers, and zero. For example, CLDR for Russian returns 'other' for numbers 0, 0.5, 1.5, 2.1, not 'few'. The native solution (plurals.xml / stringsdict) is five times more reliable than custom if-logic—it eliminates bugs for non-standard numbers.

Examples of Forms for Russian According to CLDR

CLDR category Example number Word form
one 1, 21, 31 товар
few 2, 3, 4, 22 товара
many 5, 6, 7, 11 товаров
other 0, 1.5, 2.1 товара

How to Implement Pluralization on Each Platform?

Android. Use the file 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> 

Call: resources.getQuantityString(R.plurals.items_count, count, count). The first count is for form selection, the second count for substitution in %d. Common mistake: passing only one argument—then the number is not substituted into the string.

iOS. Create a Localizable.stringsdict (plist format) with the key and nested rules. The structure includes NSStringLocalizedFormatKey and CLDR categories. For Swift packages with Xcode 15+, use String Catalog—a visual editor for plural forms.

Call: String(format: NSLocalizedString("items_count", comment: ""), count)—automatically selects the correct form.

Flutter. The intl package provides the Intl.plural() method:

Intl.plural( count, zero: 'нет товаров', one: '$count товар', few: '$count товара', many: '$count товаров', other: '$count товара', locale: 'ru', ); 

Or via ARB files with flutter gen-l10n generation—describe pluralization in app_ru.arb with ICU syntax.

React Native. Use i18next with the i18next-icu plugin or native Intl.PluralRules (available from RN 0.70+). Manually: new Intl.PluralRules('ru').select(count) returns 'one'/'few'/'many'/'other', based on which you select the form from the translations object.

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]); 

Comparison of Approaches

Platform Mechanism Number of forms (Russian) Generation
Android plurals.xml 4 (one/few/many/other) Manual or via localization service
iOS stringsdict / String Catalog 4 (one/few/many/other) Manual or via Xcode
Flutter Intl.plural / ARB 4 (one/few/many/other) Automatic via gen-l10n
React Native i18next-icu / Intl.PluralRules 4 (one/few/many/other) Manual

How to Test Pluralization on Edge Cases?

Be sure to check numbers 0, 1, 2, 5, 21, 1.5, -1. For Russian, 21 belongs to the 'one' form, and 1.5 to 'other'. For each language, these values are different. Write unit tests that run through all edge numbers and check that the correct form is returned. Use the CLDR table to automatically generate test sets.

Typical Errors and Their Solutions

  • Using only one and many without considering few for Slavic languages—bugs for numbers 2, 3, 4.
  • Wrong argument order in Android—the number is not substituted if only one parameter is passed.
  • Ignoring fractional numbers (e.g., 1.5)—without CLDR the 'other' form is not applied.
  • Custom if-logic based on % operator—when adding a new language, you'll have to rewrite conditions.

Our solution completely eliminates these errors by strictly following CLDR and automated testing on edge values.

What's Included in the Work

  1. Audit of the current codebase and translations.
  2. Development of a pluralization scheme for all target languages.
  3. Implementation of native solutions (plurals.xml, stringsdict, ARB, i18next).
  4. Writing tests for edge cases (0, 1, 2, 5, 21, 1.5).
  5. Documentation and team training.

Our team has five years of experience in mobile development and has implemented 30+ projects with localization. We guarantee correct plural form behavior on all devices. The implementation cost pays off in the first months after publication due to reduced bug reports.

Timeline: from four hours (audit + replacement of hardcode) to two days (if pluralization in multiple languages and custom components). Contact us for an audit of your project—we'll propose the optimal solution. Request a consultation today to avoid localization bugs.