Локализация Windows Phone 8 приложений. Часть 2.

Во второй части статьи о локализации приложений для Windows Phone 8 я расскажу о том, как локализовать название приложения, которое отображается в списке всех установленных на телефоне приложений, и заголовок тайла приложения. Дело в том, для того, чтобы добиться подобного эффекта недостаточно проделать манипуляции, описанные в первой части статьи. Необходимо создать специальную ресурсную библиотеку (.dll) для нейтрального языка и файлы.mui для каждой поддерживаемой локали.

Для того, чтобы создать библиотеку ресурсов, потребуется Visual Studio с установленным пакетом для языка Visual C++. Последовательность действий по созданию библиотеки ресурсов для нейтрального языка выглядит следующим образом:

  1. Создать в Visual Studio новый проект из шаблона Installed — Templates — Visual C++ — Win32 — Win32 Project.
  2. Назвать проект AppResLib
  3. Нажать OK. Появится мастер проекта приложения Win32
  4. Нажать Next (Далее)
  5. В поле Application Type выбрать DLL
  6. В секции Additional Options выбрать Empty project
  7. Там же снять галочку Security Development Lifecycle (SDL)
  8. Нажать Finish. Проект будет создан и открыт в студии.
  9. В меню Build выбрать Build Solution

Далее необходимо создать строковые ресурсы для нейтрального языка приложения:

  1. Добавьте ресурс в проект AppResLib (правой кнопкой по проекту в дереве проектов — Add Resource). Откроется диалоговое окно
  2. В выпадающем списке Resource type выберите String Table и нажмите New. Откроется таблица строковых ресурсов.
  3. Создайте два ресурса со следующими значениями:
    IDValueCaption
    AppTitle100Lang-Neutral App Title
    AppTileTitle200Lang-Neutral Tile Title
  4. Затем необходимо настроить проект AppResLib таким образом, чтобы он собирался как resource-only DLL.
  5. На панели инструментов Standart выбрать тип сборки Release.
  6. Открыть свойства проекта AppResLib
  7. В окне свойств в разделе Configuration Properties раскройте раздел Linker и затем нажмите Advanced.
  8. Выберите вариант YES (/NOENTRY) в поле No Entry Point.
  9. Нажмите OK и выполните сборку проекта (Build).
  10. Откройте в проводнике папку с проектом AppResLib и в папке Release найдите файл AppResLib.dll
  11. Переименуйте файл AppResLib.dll в AppResLibLangNeutral.dll. Позднее он понадобится в проекте локализуемого приложения Windows Phone.

После этого приступим к созданию локализованных версий библиотеки в виде файлов *.mui. Для этого будем использовать все тот же проект AppResLib.

  1. Откройте файл ресурсов AppResLib.rc в редакторе ресурсов или редакторе кода
  2. Замените значения для строк ресурсов AppTitle и AppTileTitle в соответствии с выбранной локалью, например русской (ru-RU)
  3. Сохраните файл и соберите проект (Build)
  4. Получившийся файл AppResLib.dll переименуйте в AppResLib.dll.####.mui, где #### — код локали из таблицы (для русского языка получится файл AppResLib.dll.0419.mui)
  5. Повторить описанные выше действия для всех локализуемых языков

После того как все *.mui файлы готовы, необходимо их вместе с файлом AppResLibLangNeutral.dll добавить в проект локализуемого приложения для Windows Phone. Файл AppResLibLangNeutral.dll надо переименовать обратно в AppResLib.dll (собственно все действия по переименовыванию этого файла были нужны для того, чтобы при сборке локализованных версий библиотек, они не перетирали первоначальную нейтральную библиотеку). Для импортированных файлов AppResLib.dll и AppResLib.dll.*.mui установить свойство Build Action в значение Content.

Итак, финальные шаги. Открываем файл манифеста WMAppManifest.xml. На вкладке Application UI устанавливаем значение поля Display Name равным @AppResLib.dll,-100, а поля Tile Title равным @AppResLib.dll,-200.
Сохраняем и билдим наше Windows Phone приложение.

Для того, чтобы проверить, как все локализовалось, можно в эмуляторе телефона изменить языковые настройки на нужные — в списке приложений наше приложение будет с локализованным названием.

Tue, 26.02.2013

Теги: руководство, Windows Phone 8