Реализация локализации мобильного приложения на русский язык
Вы интегрировали в приложение перевод строк через strings.xml или Localizable.strings — и всё работает на английском. Но как только дело доходит до русского, начинаются сюрпризы. Числительные: '1 уведомление', '3 уведомления', '5 уведомлений' — стандартная плюрализация требует четырёх форм. Падежи: 'заказ Ивана' против 'заказ Марины'. Длинные слова: 'Политика конфиденциальности' вместо 'Privacy Policy'. А ещё RTL-нейтральный layout начинает вести себя непредсказуемо. Недавно клиент из финтех-сектора столкнулся с тем, что после локализации кнопка 'Submit' превратилась в 'Отправить' и вылезла за границы экрана на iPhone SE. Мы решили эту проблему за два дня, применив автолэйаут и динамическую высоту. Мы — команда мобильных разработчиков с 10+ лет опыта — решаем такие задачи под ключ, гарантируя корректную локализацию на русский язык. Прошли сертификацию Apple и Google, имеем более 15 проектов с русской локализацией. Оценим ваш проект бесплатно.
Как правильно обработать плюрализацию в Android и iOS?
Русский язык использует шесть форм множественного числа для существительных в зависимости от числа. Android поддерживает это нативно через <plurals> в strings.xml:
<plurals name="notification_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.notification_count, count, count).
На iOS используется String(localized:) с .init(format:) и NSLocalizedString, которые поддерживают CLDR plural rules через .stringsdict. Формат .stringsdict более громоздкий, но работает корректно с NSString.localizedStringWithFormat. В React Native применяются i18n-js или react-i18next с returnObjects: true. Без явной поддержки plurals приходится писать helper вручную. Нативный механизм плюрализации (Android <plurals> / iOS .stringsdict) в 2 раза точнее кастомных решений, особенно для чисел 21, 31 и т.д.
Подстановка с согласованием («Привет, %@» → «Привет, Иван») достаточно проста с именованными плейсхолдерами. Проблема возникает при согласовании: «заказ Ивана» vs «заказ Марины» — окончание разное. Для таких случаев либо переформулируем строку без согласования, либо добавляем отдельные ключи для разных форм.
Почему русский текст ломает UI?
Русские слова в среднем длиннее английских эквивалентов на 20–40%. «Settings» → «Настройки» — нормально. «Notifications» → «Уведомления» — длиннее. «Privacy Policy» → «Политика конфиденциальности» — почти вдвое. Фиксированная ширина кнопок, truncation вместо wrap, иконки с hardcoded отступами — всё это ломается при локализации. Проверяем UI в псевдолокализации на этапе разработки: аccoutability → [аccoutàbïlïтý~~] — выявляет проблемные места до перевода. Xcode поддерживает Pseudo-localization в схеме (Application Language: Double-Length Pseudolanguage). Это экономит до 50% времени на правках вёрстки.
Что делать с клавиатурой и вводом?
Для полей ввода на русском: keyboardType и returnKeyType не меняются, но autocapitalizationType стоит проверить — русская автокапитализация иногда ведёт себя иначе. spellCheckingType с русским словарём доступен на iOS и Android системно, включается автоматически при выборе языка.
Сравнение подходов к плюрализации
| Платформа | Механизм | Количество форм | Пример кода |
|---|---|---|---|
| Android | <plurals> в strings.xml |
4 (one, few, many, other) | getQuantityString() |
| iOS | .stringsdict с CLDR |
4+ (one, few, many, other) | NSLocalizedString() + stringsdict |
| React Native | i18n-js или react-i18next |
Зависит от плагина | i18n.t('key', {count}) |
Из трёх вариантов Android и iOS обеспечивают встроенную поддержку русских правил, в то время как React Native требует дополнительной библиотеки. Для больших проектов рекомендуем нативные решения.
Что входит в локализацию на русский язык?
| Этап | Описание | Срок |
|---|---|---|
| Аудит строк | Выявляем все строки UI, включая скрытые (toast, errors) | 0.5 дня |
| Перевод строк | Перевод + проверка plurals и падежей | 1 день |
| Настройка локали | Адаптация форматов дат, чисел, валют под ru_RU |
0.5 дня |
| UI-тестирование | Проверка переполнений, обрезаний, псевдолокализация | 1 день |
| Итоговое тестирование | Тест на устройствах с русской локалью | 0.5 дня |
Общий срок — от 2 до 4 рабочих дней для приложения с 200–500 строками. Для экспорта строк используем формат XLIFF, который поддерживается всеми основными платформами. При публикации в App Store обязательно соблюдайте раздел 5.1 App Store Review Guidelines, касающийся локализации.
Как мы гарантируем качество?
Используем автоматизированное тестирование с XCTest/Espresso на псевдолокализованном UI, проверяем plurals на граничных значениях (0, 1, 2, 3, 10, 21, 100). Для iOS — .stringsdict обязателен, для Android — <plurals> с правильными quantity. Наш опыт: более 15 проектов, сертифицированные специалисты. Согласно документации Apple, использование .stringsdict критично для корректной плюрализации. Получите консультацию — оценим ваш проект бесплатно и подберём оптимальный план.
Типичные ошибки при локализации на русский
- Игнорирование
stringsdict/plurals — приводит к ошибкам «1 уведомления». Всегда используйте системные механизмы. - Фиксированная ширина кнопок — для русского используйте
wrap_content(Android) илиsizeThatFits(iOS). - Неправильные форматы дат —
DateFormatterсru_RUдаёт «26 марта 2026», а не «03/26/2026». - Забытые системные строки —
Cancel,OK,Save— их тоже нужно локализовать черезNSLocalizedStringилиstrings.xml. - Ссылки на сторонние сервисы — если в приложении есть веб-вью или кнопки «Позвонить», проверьте, что поддерживается русский язык.
Что дальше?
Свяжитесь с нами для консультации: мы предложим оптимальное решение для вашего проекта. Получите предварительную оценку сроков и бюджета в течение одного дня.







