Архитектура локализации
Локализация не вызывает особых трудностей, если код приложения написан корректно. Но настроить приложение на поддержку локализации намного труднее, чем написать его корректно с самого начала. В этой статье сначала будет показано, как написать код приложения, чтобы его можно было легко локализовать, а затем особенности локализации приложений будут продемонстрированы на конкретном примере.
Когда выполняется нелокализованное приложение, весь его текст будет представлен на родном языке его разработчиков, называемом также базовым языком разработки (development base language).
Когда же разработчики решают локализовать свое приложение, они создают подкаталог в пакете приложения для каждого поддерживаемого языка. В подкаталоге каждого языка содержится подмножество ресурсов приложения, переведенных на этот язык. Каждый такой подкаталог называется проектом локализации (localization project), или папкой локализации (localization folder). Имена папок локализации всегда оканчиваются расширением . lpro j.
В стандартном приложении Settings пользователю предоставляется возможность выбрать язык и региональный формат. Так, если родным языком пользователя является английский, к числу доступных для него регионов могут быть отнесены Соединенные Штаты, Австралия или Гонконг, т.е. все регионы, где говорят по-английски.
Когда локализованному приложению требуется загрузить ресурс, например изображение, список свойств или nib-файл, оно проверяет выбранный пользователем язык и регион и осуществляет поиск папки локализации, соответствующей данной настройке. Если приложение найдет такую папку, оно загрузит локализованную версию ресурса вместо базовой версии.
Так, если пользователь выбрал французский в качестве языка iOS и Францию в качестве региона, приложение будет сначала искать папку локализации fr_FR.lproj. Две первые буквы в имени этой папки соответствуют коду страны по стандарту ISO, обозначающему французский язык. Еще две буквы после подчеркивания соответствуют двузначному коду по стандарту ISO, обозначающему францию.
- Дата: 31-01-2015, 19:54