Всем доброго времени суток! Меня зовут Николай, я iOS-Lead в компании Touch Instinct. В процессе разработки часто приходится иметь дело с проектами, которые должны работать на нескольких языках. Расскажу, к какому подходу мы пришли при работе с локализацией.
Минусы базовых подходов
Есть несколько основных подходов для локализации iOS-приложения. Сперва стоит определиться, разрабатывается приложение с использованием storyboards или нет.
С использованием storyboards
Можно локализовывать строки напрямую в storyboard. Однако, при таком подходе есть ряд минусов:
- в случае наличия большого количества storyboards, локализованные строки разбросаны по проекту;
- невозможность использования атрибутных строк, а также строк, которые состоят из нескольких составных частей;
- вам всё равно придется часть строк локализовывать в коде. Это ведет к еще большему разбросу в приложении;
- фактически отсутствует возможность что-то проверить другому разработчику при проведении code review.
Без storyboards
В этом случае локализуем всё в коде. Однако и тут есть ряд минусов. Дело в том, что файлы со строками локализации localizable.strings — магические. При изменении таких файлов очень велика вероятность возникновения ошибки из-за человеческого фактора. Изменения нельзя отследить, пока ошибка не будет найдена в процессе тестирования.
Таким образом, хотя для локализации уже есть готовые механизмы в iOS SDK, они имеют существенные минусы. Более подробно смотрите здесь.