Локализация приложений
Если приложение не в состоянии найти соответствие по двузначному коду, оно попытается найти соответствие по трехзначному коду, обозначающему язык по стандарту ISO. Так, если в приведенном нами примере приложению не удастся найти папку под названием fr_FR. lproj, оно попытается найти папку локализации под названием fre fR или fra_FR.
Все языки обозначаются, по меньшей мере, одним трехзначным кодом, а некоторые — даже двумя трехзначными кодами, одним — для английского написания языка, другим — для местного написания. Если же язык обозначается как двузначным, так и трехзначным кодом, то предпочтение отдается первому.
Если приложению не удастся найти папку, точно соответствующую искомому языку, оно попытается найти в пакете приложения папку локализации, которая соответствует только коду искомого языка, но без кода региона. Поэтому если продолжить приведенный нами пример с франкоязычным пользователем из Франции, то приложение будет далее искать проект локализации под названием fг. lproj. Если ему не удастся найти проект под таким названием, оно попытается сначала найти проект fre.lproj, а затем проект fra.lproj. Последняя конструкция существует лишь для поддержки устаревших приложений под Мае OS X, и, вообще говоря, ее применения следует избегать.
Если же приложению не удастся найти проект локализации, соответствующий заданной комбинации языка и региона или только выбранному языку, оно воспользуется ресурсами из базового языка разработки. Если оно все же найдет подходящий проект локализации, то впредь будет искать любые необходимые ему ресурсы только в этом месте. Например, если объект типа Ullmage загружается методом imageNamed, приложение будет сначала искать изображение по указанному имени в проекте локализации. Если приложение найдет такое изображение, то воспользуется им, а иначе оно обратится к ресурсу базового языка.
При наличии в приложении нескольких проектов локализации, соответствующих критериям поиска локализованных ресурсов, например, одного проекта под названием f г FR. lproj и другого проекта под названием fг. lproj, оно будет сначала искать ресурс, соответствующий более конкретному критерию поиска (в данном случае — это проект fг FR. lproj). Если нужный ресурс не будет найден в данном месте, приложение попытается найти его в проекте f г. lproj. Это дает возможность предоставлять в одном проекте локализации ресурсы, являющиеся общими для всех говорящих на выбранном языке, локализуя только те ресурсы, на которые оказывают влияние различия в диалекте и географическом регионе.
- Дата: 1-02-2015, 13:24