Локалізація мобільної програми на російску мову
Додати російську мову до вже готової програми — завдання, яке виглядає простіше, ніж є насправді. Технічні строки в strings.xml або Localizable.strings перекладаються за день. Проблеми починаються там, де строки — не просто строки: числівники («1 повідомлення», «3 повідомлення», «5 повідомлень»), відмінки при підстановці імен, довгі слова які ломають UI, або RTL-нейтральний layout який перестає працювати.
Plurals та відмінки — головна складність російської
Російська мова має шість форм множинного числа для іменників залежно від числа. 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 XML-тяжкий, але працює коректно з NSLocalizedString("notification_count", comment: "") + stringsdict файл.
У React Native: i18n-js або react-i18next з returnObjects: true для plural forms. Без явної підтримки бібліотекою — напишіть helper вручну.
Підстановка з узгодженням («Привіт, %@» → «Привіт, Іване») — тут достатньо іменованих плейсхолдерів. Проблема виникає коли потрібно узгодження: «замовлення Івана» vs «замовлення Марини» — закінчення різне. Для таких випадків або переформулюємо строку без узгодження, або додаємо окремі ключі для різних форм.
Довжина строк та UI
Російські слова в середньому довші за англійські еквіваленти на 20–40%. «Settings» → «Настройки» — нормально. «Notifications» → «Уведомления» — довше. «Privacy Policy» → «Политика конфиденциальности» — майже вдвічі. Фіксована ширина кнопок, truncation замість wrap, hardcoded іконки з відступами — все це ломається при локалізації.
Перевіряємо UI у псевдолокалізації на етапі розробки: аccoutability → [аccoutàbïlïтý~~] — виявляє проблемні місця до перекладу. Xcode підтримує Pseudo-localization у схемі (Application Language: Double-Length Pseudolanguage).
Клавіатура та ввід
Для полів вводу на російській: keyboardType та returnKeyType не змінюються, але autocapitalizationType варто перевірити — російська автокапіталізація іноді поводиться інакше, ніж очікується. spellCheckingType з російським словником доступний на iOS та Android системно, включається автоматично при виборі мови.
Процес
Аудит існуючих строк → експорт у XLIFF (iOS) або Android String Resources → переклад + перевірка plurals → імпорт → тестування на пристрої з російською локаллю → перевірка переповнення UI. Окремо перевіряємо формати дат та чисел: DateFormatter та NumberFormatter з Locale(identifier: "ru_RU") дають «26 марта 2026» та «1 234,56» замість «03/26/2026» та «1,234.56».
Часові рамки: два-чотири робочих дні для програми з 200–500 строками, включаючи тестування UI.







