Реализация локализации мобильного приложения на английский язык
Английская локализация — это первый выход на международный рынок и одновременно техническая точка, которую часто делают неправильно. Не потому что сложно перевести, а потому что en-локализация нередко становится базовой, и все остальные языки наследуют от неё структуру. Если структура неправильная — проблемы будут в каждом следующем языке.
En как базовый язык: правильная настройка
На iOS Base Internationalization в настройках проекта — обязательно включена. Base локализация содержит storyboard/XIB файлы, остальные языки — только .strings файлы с переводами. Без Base Internationalization каждый новый язык требует отдельный storyboard.
en.lproj/Localizable.strings — базовый файл. Ключи должны быть смысловыми, не строками на русском. Плохо: "Войти" = "Sign In". Хорошо: "auth.login.button.title" = "Sign In". Смысловые ключи позволяют изменить русский текст без переименования ключа во всех языках.
На Android: res/values/strings.xml — базовый (по умолчанию это en), res/values-ru/strings.xml — русский. Структура ключей та же: <string name="auth_login_button">Sign In</string>.
Plural forms в английском
В английском только две формы: one (1) и other (всё остальное). Это проще русского, но ошибку делают так: пишут «%d notification(s)» вместо правильного plural resource. Скобки — не локализация, это костыль.
Android:
<plurals name="notification_count">
<item quantity="one">%d notification</item>
<item quantity="other">%d notifications</item>
</plurals>
iOS .stringsdict:
<key>notification_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count@</string>
<key>count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>one</key>
<string>%d notification</string>
<key>other</key>
<string>%d notifications</string>
</dict>
</dict>
Форматы дат и чисел
Английская локаль неоднородна. en_US и en_GB используют разные форматы дат (MM/DD/YYYY vs DD/MM/YYYY) и разные разделители чисел. DateFormatter и NumberFormatter с явным locale — не опциональная оптимизация, а требование корректности.
Для приложения с аудиторией в нескольких англоязычных странах: используем Locale.current для форматирования, а не хардкодим en_US.
Длина строк и UI
Английские строки короче русских. Если UI проектировался под английский, при добавлении русского могут быть проблемы с длиной. Если наоборот — при английской локализации появится лишнее пустое пространство. Решение: sizeToFit для лейблов, hugging priority для кнопок, тестирование псевдолокализацией Double-Length в обе стороны.
Сроки: один-три рабочих дня, включая настройку инфраструктуры локализации и тестирование.







