Реализация мультиязычности (i18n) мобильного приложения

Отметим: когда языков становится больше двух, прямолинейная локализация перестаёт работать: пропущенные строки, сломанные plurals, неправильное форматирование дат. Наша команда — 7+ лет опыта в мобильной разработке и более 30 проектов с мультиязычностью — знает, как спроектировать i18n-инфраструктур

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация мультиязычности (i18n) мобильного приложения
Средний
~3-5 дней

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

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • 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

Отметим: когда языков становится больше двух, прямолинейная локализация перестаёт работать: пропущенные строки, сломанные plurals, неправильное форматирование дат. Наша команда — 7+ лет опыта в мобильной разработке и более 30 проектов с мультиязычностью — знает, как спроектировать i18n-инфраструктуру, которая масштабируется без боли. Грамотная архитектура окупается на третьем языке: каждый следующий язык требует на 60% меньше усилий, а бюджет на переводы сокращается на 40–50%. Получите консультацию — мы оценим ваш проект.

Архитектура i18n: от простого к правильному

iOS

Стандарт — Localizable.strings + .stringsdict для plurals + XLIFF для обмена с переводчиками. String(localized:) API (Swift 5.5+) — предпочтительный способ, потому что поддерживает interpolation, plural rules и comment для переводчика в одном вызове:

let message = String(localized: "notifications.count \(count)", comment: "Number of unread notifications in tab bar") 

Для больших проектов с 1000+ строками — String Catalog (.xcstrings, Xcode 15+). Он заменяет разрозненные .strings файлы единым JSON-файлом с встроенным diff и предупреждениями о непереведённых строках. Apple рекомендует String Catalog для новых проектов.

Android

strings.xml в res/values/ (базовый) + res/values-{lang}/ для каждого языка. plurals в том же файле. Для параметрических строк — именованные аргументы:

<string name="welcome_user">Добро пожаловать, %1$s!</string> 

%1$s вместо %s — обязательно при множественных аргументах, так как порядок слов в разных языках разный.

React Native

react-i18next — де-факто стандарт. Namespace-ы для разбивки по модулям, lazy loading для экономии трафика. Plural forms через i18next-icu с ICU Message Format — корректно обрабатывает русские, украинские, польские правила.

Flutter

flutter_localizations + intl пакет. ARB-файлы — стандарт. flutter gen-l10n генерирует type-safe Dart-классы, исключая опечатки:

Text(AppLocalizations.of(context)!.notificationCount(count)) 

Plural forms описываются в ARB через ICU syntax.

Сравнение подходов к i18n

Платформа Формат строк Plural forms Интеграция с TMS
iOS .strings / .xcstrings .stringsdict XLIFF / API
Android strings.xml XLIFF / API
React Native .json / .po i18next-icu API
Flutter ARB ICU syntax API

Все платформы поддерживают автоматическую синхронизацию через TMS, что снижает ручной труд на 90%.

Динамическая смена языка

Системная локаль — не всегда то, что нужно. iOS поддерживает выбор языка через CFBundleLocalizations + хранение в UserDefaults. Android — AppCompatDelegate.setApplicationLocales() (AndroidX) или ручная замена Resources.updateConfiguration(). При смене языка пересоздавайте все форматтеры с новой locale.

Plural forms: сводная таблица

Язык Количество форм Сложность
Английский 2 (one/other) Низкая
Украинский 3 (one/few/many) Средняя
Русский 3 (one/few/many) Средняя
Польский 4 (one/few/many/other) Высокая
Арабский 6 форм Очень высокая
Китайский 1 форма Нет

ICU Message Format обрабатывает все эти варианты автоматически. Ручное ветвление — антипаттерн.

Почему автоматизированное управление переводами лучше ручного?

Ручной экспорт/импорт XLIFF — основной источник ошибок. Автоматизированный пайплайн через TMS (Phrase, Lokalise, Crowdin) синхронизирует строки между кодом и переводчиками без файлового обмена. Экономия до 60% времени на каждом новом языке.

Как правильно организовать plural forms для сложных языков?

Используйте готовые решения фреймворка: iOS .stringsdict, Android plurals, Flutter ICU в ARB, React Native i18next-icu. Они берут на себя корректные правила для любых языков. Не пишите собственные switch — это сломается на польском (4 формы) или арабском (6).

CI/CD и качество переводов

Интегрируем проверки в пайплайн:

  • Lint для строк: twine (iOS), android-strings-lint — находят пропущенные переводы, неиспользуемые ключи, неэкранированные спецсимволы
  • Screenshot тесты: fastlane snapshot (iOS) или screengrab (Android) — автоматически делают скриншоты на всех языках, регрессию UI заметно сразу
  • Translation Management System: Phrase, Lokalise, Crowdin — синхронизируют строки между кодом и командой переводчиков

Что вы получите в результате

  • Документированная архитектура i18n под вашу платформу
  • Готовая интеграция с TMS и автоматическая синхронизация
  • Настроенный CI/CD пайплайн с линтерами и скриншот-тестами
  • Обучение команды добавлению новых языков и работе с переводами

Процесс работы

  1. Аудит текущей архитектуры и выявление болевых точек (2–3 часа)
  2. Проектирование i18n-инфраструктуры под платформу (iOS, Android, Flutter, React Native)
  3. Вынос всех строк в ресурсы с поддержкой plurals и интерполяции (1–2 дня на первый язык)
  4. Интеграция TMS и настройка автоматической синхронизации (1 день)
  5. Настройка CI/CD линтеров и скриншот-тестов для контроля переводов (1 день)
  6. Обучение команды и документация (0.5 дня)

Сроки

Ориентировочные сроки: от 3 до 10 рабочих дней в зависимости от платформы, количества языков и готовой инфраструктуры. Стоимость рассчитывается индивидуально. Получите консультацию — мы оценим ваш проект.