Аудит и тестирование локализации мобильных приложений

Мы сталкиваемся с тем, что кнопка «Зарегистрироваться» на немецком стала «Registrieren» и вышла за границы `UIButton` — дизайнер не учёл, что немецкий в среднем длиннее русского на 35%. Или арабский RTL-текст перемешался с LTR-числами и выглядит как мусор. Это классика локализационного тестирования,

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Аудит и тестирование локализации мобильных приложений
Средний
~2-3 дня

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

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

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

  • 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

Мы сталкиваемся с тем, что кнопка «Зарегистрироваться» на немецком стала «Registrieren» и вышла за границы UIButton — дизайнер не учёл, что немецкий в среднем длиннее русского на 35%. Или арабский RTL-текст перемешался с LTR-числами и выглядит как мусор. Это классика локализационного тестирования, которую автотесты на английском не поймают никогда. Мы предлагаем комплексную проверку локализации под ключ — от аудита кода до фиксации дефектов. Наш опыт работы с 15+ локалями позволяет гарантировать, что приложение корректно отображается в любой культуре. Оценим ваш проект за 1 день.

Как псевдолокализация экономит время?

Pseudolocalization — первый и самый дешёвый тест. Заменяем все строки псевдолокализованной версией: добавляем акценты к буквам и удлиняем строки на 30–40% ([Ñéṁö Ŝţŕïñĝ!!!!!]). Это выявляет все обрезанные строки и хардкод до того, как вы заплатили переводчику. На iOS — пункт меню Scheme → Run → Options → App Language: «Pseudolanguage - Accented Latin». На Android — LocaleList.setDefault(Locale("ar")) в Application.onCreate для тестирования RTL, или псевдолокаль en-XA через adb:

adb shell settings put global locale_overlay en-XA 

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

Что проверять в RTL-локалях?

При арабской или иврит-локали layoutDirection меняется на RTL. Иконки «назад/вперёд» зеркалятся, отступы меняются местами. На iOS semanticContentAttribute = .forceRightToLeft на уровне view hierarchy. На Android — android:supportsRtl="true" в манифесте и layoutDirection="locale" в layout-файлах. Если хоть одна кастомная view рисует текст через Canvas.drawText без учёта RTL — будет баг. Мы проверяем это на реальных устройствах с арабской локалью.

Самые частые проблемы

Хардкод строк. В Xcode localizedString(forKey:table:bundle:) не вызвали — вместо этого label.text = "Welcome" прямо в коде. Инструмент для поиска: genstrings или SwiftLint правило no_direct_string_use (кастомное). На Android аналогично — строки в strings.xml vs inline в XML-лэйаутах vs конкатенация в Kotlin.

Форматирование дат, чисел, валюты. DateFormatter без явного locale использует системную локаль пользователя, но NumberFormatter или просто String(format: "%.2f", price) — нет. Американский формат 1,234.56 в немецкой локали должен быть 1.234,56. Ошибки такого рода не ломают UI, но выглядят непрофессионально.

Инструменты и подход

Скриншот-тестирование по локалям. Paparazzi (Android) или SnapshotTesting (iOS) позволяют прогнать один тест с набором локалей:

@Test fun allLocales() { for (locale in listOf("en", "de", "ar", "ja", "ru")) { paparazzi.snapshot(locale = locale) { RegistrationScreen() } } } 

Каждый прогон CI генерирует скриншоты — рецензент видит разницу визуально. Это ловит обрезанные кнопки автоматически.

Ручное тестирование с нативным носителем. Для семантики нет замены. Машинный перевод может дать грамматически верный, но контекстуально странный текст. «Нажмите сюда» в японском звучит грубо — нужно «お進みください». Это не автоматизируется.

Проверка Инструмент Когда
Хардкод строк SwiftLint / Android Lint В CI на каждый PR
Обрезка UI Pseudolocalization При разработке
Скриншоты по локалям Paparazzi / SnapshotTesting В CI
RTL layout Device/emulator с арабской локалью Перед релизом
Форматирование чисел и дат Unit-тесты с конкретными локалями При разработке
Семантика перевода Нативный носитель Перед релизом

Сравнение подходов: автоматизация vs ручная проверка

Характеристика Автоматизация (Pseudolocalization + скриншоты) Ручная проверка носителем
Скорость Минуты на CI Дни на каждую локаль
Выявление обрезки 95% 70% (зависит от внимательности)
Семантические ошибки 0% 100%
Затраты Однократная настройка Сопоставимо с наймом носителя

Как настроить псевдолокализацию за 3 шага

  1. Включите псевдолокаль в схеме (iOS) или через adb (Android).
  2. Запустите приложение и пройдите все экраны.
  3. Исправьте все обрезанные строки и хардкод.

Эти 3 шага занимают 30 минут и предотвращают 90% проблем с UI.

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

Аудит текущих локалей — сколько поддерживается, есть ли RTL. Настройка pseudolocalization в Scheme/build config. Добавление скриншот-тестов по ключевым экранам с набором локалей. Ручное тестирование самых сложных языков (арабский, японский, немецкий). Список найденных дефектов с воспроизведением.

Сроки — 2–4 дня на проект с 3–5 локалями. RTL-локали добавляют 1–2 дня, если layout не готовился к RTL с нуля.

Что входит в работу

  • Аудит кода на хардкод и неправильное форматирование.
  • Настройка псевдолокализации в сборочном окружении.
  • Скриншот-тесты на всех экранах для 5+ локалей.
  • Ручное тестирование с носителями языка (до 3 сложных локалей).
  • Отчёт с найденными дефектами и рекомендациями.
  • Консультация по исправлению RTL-вёрстки.

Получите консультацию по вашему проекту — мы оценим объём работ за 1 день. Закажите аудит локализации уже сегодня.

Подробнее о псевдолокализации на Wikipedia и в официальной документации Apple.