Локализация виджетов

Локализация Вашего виджета предоставляет более удобный и приятный опыт динамикам иностранного языка. Если Ваш виджет используется в областях, где на языках кроме английского языка говорят, необходимо локализовать его.

Существует две стороны к локализации Вашего виджета:

В дополнение к локализации Вашего содержания эта глава касается, как локализовать имя Вашего виджета в Средстве поиска и панели виджета.

Проекты языка

Прежде, чем говорить о локализации виджета Инструментальной панели, необходимо быть знакомы с тем, как OS X обрабатывает локализацию. Для большинства приложений на OS X локализованные ресурсы, такие как изображения, строки и файлы пера существуют в пакете приложения в Contents/Resources/. Каждый язык получает свой собственный каталог, названный в честь языка, ресурсы которого он содержит. Имена и расположение в пакете строги, поскольку OS X ожидает, что они будут там, если будут требовать локализацию. Эти папки вызывают каталогами проекта языка и всегда заканчиваются в расширении .lproj.

Когда приложение запускается, исполнимая программа просит у OS X определенные локализованные ресурсы. Когда это происходит, OS X ищет проект языка в пакете приложения, соответствующем первой записи в списке приоритета языка, как установлено в Установках системы. Если никакой проект языка для предпочтительного языка не найден, OS X ищет соответствие проекта языка следующему языку в списке приоритета и т.д. Обратите внимание на то, что этот процесс является главным образом автоматическим, в котором приложение не делает ни одного фактического поиска проектов языка; это просто запрашивает ресурсы, и OS X обеспечивает их.

Больше на изменяющемся языке и локальных предпочтениях может быть найден на Языке и Локальных Предпочтениях.

Что инструментальная панель делает для Вас

Виджеты, работающие в Инструментальной панели, используют подобный процесс в качестве приложений Mac при попытке загрузить ресурсы. Любое время загрузка ресурса происходит в Вашем коде, Инструментальная панель сначала, ищет его в каталогах проекта языка в пакете Виджета. Если Инструментальная панель находит ресурс в том каталоге проекта языка, это обеспечивает его назад для виджета. В противном случае перерывает остальную часть каталогов проекта языка, на основе набора приоритета в Установках системы. Наконец, если ресурс не найден ни в каких проектах языка, взглядах Инструментальной панели относительно корневого уровня пакета.

Инструментальная панель будет искать локализованные ресурсы в следующих контекстах:

Что необходимо обеспечить инструментальную панель

При локализации виджета предоставьте Инструментальной панели локализованные версии ресурсов. Они включают, но не ограничиваются, никакие строки, что Ваши дисплеи виджетов, изображения, изменяющиеся на основе языка или области и специфичных для языка разметок. При импорте таблицы стилей в виджет вместо включения его в файле HTML Вы будете в состоянии обеспечить локализованные таблицы стилей также.

Каждый язык Вы локализуете свой виджет в потребности его собственный каталог проекта языка. В нем Вы помещаете все локализованные ресурсы для того языка. Каждый каталог проекта языка должен быть расположен на корневом уровне Вашего виджета. Табличные 16 списки общих языков и их соответствующих имен каталога проекта языка:

Табличные 16  Общие языки и соответствующие названия проекта языка

Язык

Имя каталога проекта языка

(Упрощенный) китайский язык

zh-Hans.lproj

(Традиционный) китайский язык

zh-Hant.lproj

Датский язык

da.lproj

Нидерландский язык

nl.lproj

Английский язык

en.lproj

Финский язык

fi.lproj

Французский язык

fr.lproj

Немецкий язык

de.lproj

Итальянский язык

it.lproj

Японский язык

ja.lproj

Корейский язык

ko.lproj

Норвежский язык

nb.lproj

Португальский язык

pt.lproj

Шведский язык

sv.lproj

Испанский язык

es.lproj

Обратите внимание на то, что это просто некоторые возможные доступные локализации. OS X и Инструментальная панель поддерживают еще много языков и локальных переменных. Обозначения языка и Локали обсуждают соглашения о присвоении имен каталога проекта языка, используемые для локализации приложений на OS X.

Пример локализованных строк

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

Первый шаг к реализации этой схемы должен иметь унифицированно именованный файл, содержащий строки в должным образом именованных каталогах проекта языка. Например, называя файл LocalizedStrings.js в каждом из Ваших каталогов проекта языка. Файл похож на это для немецкой локализации:

var localizedStrings = new Array;
 
localizedStrings['Hello, World!'] = 'Hallo, Welt!';
localizedStrings['Default'] = 'German';

Заметьте что индекс в localizedStrings массив является строкой. Это полезно, когда объединено с методом доступа, пытающимся получить локализованную строку:

function getLocalizedString (key)
{
    try {
        var ret = localizedStrings[key];
        if (ret === undefined)
            ret = key;
        return ret;
    } catch (ex) {}
 
    return key;
}

Преимущества для этого являются двукратными: во-первых, индекс для строки незабываем, и во-вторых, если строковое извлечение перестало работать, строка ключа возвращается. Таким образом, Вас уверяют, что некоторая строка будет всегда возвращаться, независимо от того обстоятельства. Это особенно ценно при тестировании виджета в Safari.

Наконец, необходимо будет использовать локализованную строку в виджете. Этот код связывает все эти предыдущие понятия и вставляет строку в Ваш виджет:

function setup()
{
 
    document.getElementById('helloText').innerText = getLocalizedString('Hello, World!');
    document.getElementById('language').innerText = getLocalizedString('Default');
}

Так как надлежащий файл локализованных строк уже загружается, это выберет локализованный эквивалент «Привет, Мир!» в localizedStrings массив и размещение его в Вашем расположении.

Локализованные имена виджета

В дополнение к локализации содержания Вашего виджета необходимо локализовать имя виджета. Имя выводят на экран в Средстве поиска и панели виджета и вытягивают от Вашего Info.plist информационный файл списка свойств и локализованный InfoPlist.strings файлы.

В Вашем Info.plist необходимо указать ключ CFBundleDisplayName и обеспечьте соответствующее значение:

<key>CFBundleDisplayName</key>
<string>Hello World</string>

Это значение является значением по умолчанию, это используется, если не может быть найдена никакая локализованная строка. Это также должно быть имя Вашего виджета на диске, без .wdgt расширение файла. В каждом каталоге проекта языка в Вашем виджете, поместите названный файл InfoPlist.strings и в нем обеспечивают надлежащее локализованное имя с помощью этого формата:

CFBundleDisplayName = "Hallo Welt";

Для более всестороннего взгляда на использование CFBundleDisplayName, считайте Инструкции по Конфигурации Во время выполнения.