Создание и извлечение ресурсов в приложениях для Магазина Windows
В операционной системе Windows 8 появилась новая модель ресурсов для приложений Магазин Windows, которая заменяет привычную для настольных приложений .NET Framework модель "звезда". В этом разделе обсуждается эта новая модель ресурсов и описывается порядок создания, развертывания и получения ресурсов в приложениях Магазин Windows.
Ресурсы в приложениях Магазин Windows
В настольных приложениях .NET Framework для упаковки и развертывания ресурсов используется модель "звезда". Как правило, ресурсы для нейтрального языка и региональных параметров приложения ("язык и региональные параметры", используемые при отсутствии локализованных ресурсов) встраиваются в основной исполняемый файл приложения. Локализованные ресурсы для каждого дополнительного языка и региональных параметров, встраиваются в отдельную вспомогательную сборке, которая содержит только ресурсы без исполняемого кода.
В приложениях Магазин Windows, напротив, используют единый файл ресурсов. Этот файл называется файлом индекса ресурсов пакета (PRI) и содержит ресурсы для всех языков, региональных параметров и коэффициентов масштабирования.
Важно!
Правила резервного переключения ресурсов определяют, какие ресурсы будут загружаться, если не найдены ресурсы для конкретного языка и региональных параметров или текущего языка и региональных параметров.
В настольных приложения для создания ресурсов можно использовать текстовые файлы или XML-файлы (с расширением RESX). Для компиляции этих файлов в двоичные файлы ресурсов (с расширением RESOURCES служит Генератор файлов ресурсов (Resgen.exe). Чтобы встроить ресурсы нейтрального языка и региональных параметров в основную сборку приложения, воспользуйтесь компилятором, а чтобы встроить остальные локализованные ресурсы во вспомогательные сборки, воспользуйтесь компоновщиком сборок (AL.exe). После этого можно получать отдельные ресурсы с помощью класса ResourceManager или выполнять перебор ресурсов с помощью класса ResourceReader.
В приложениях Магазин Windows для создания ресурсов используются RESW-файлы. Несмотря на разницу в расширениях, формат файла RESW идентичен формату файла RESX, за тем исключением, что RESW-файлы могут содержать только строки и пути к файлам. В Visual Studio можно создавать и изменять ресурсы с помощью редакторов ресурсов. Во время компиляции все RESW-файлы приложения упаковываются в один PRI-файл программой MakePRI и включаются в пакет развертывания приложения. Во время выполнения класс Windows.ApplicationModel.Resources.ResourceLoader и типы в пространстве имен Windows.ApplicationModel.Resources.Core обеспечивают доступ к ресурсам приложения.
Важно!
Хотя Генератор файлов ресурсов (Resgen.exe) в основном используется в настольных приложениях, его также можно использовать и для декомпиляции вспомогательных сборок в RESW-файлы, которые затем будут компилироваться в PRI-файл.
Предупреждение
Хотя класс ResourceManager включен в Приложения .NET для Магазина Windows, использовать его не рекомендуется. Используйте ResourceManager только в библиотеках, которые разрабатываются в виде проектов Переносимая библиотека классов и которые предназначены для нескольких платформ.
Создание файлов ресурсов
Редакторы ресурсов Visual Studio являются наиболее простым и удобным способом создания RESW-файлов. Эти редакторы содержат пользовательский интерфейс, который скрывает исходный XML-формат RESW-файла. Использование Visual Studio для создания и редактирования файлов ресурсов имеет два основных преимущества:
отпадает необходимость создания файлов ресурсов вручную и контроля правильности XML-формата;
редактор также обеспечивает использование программы MakePRI для компиляции ресурсов, их упаковки в PRI-файлы и включения в пакеты развертывания приложений.
Чтобы создать файл ресурсов, откройте приложение Магазин Windows в обозревателе решений, затем откройте контекстное меню для имени проекта и последовательно выберите Добавить, Создать элемент и Файл ресурсов в списке элементов.
В настольных приложениях для указания нейтрального языка и региональных параметров использовался атрибут NeutralResourcesLanguageAttribute. В приложениях Магазин Windows этот атрибут не учитывается при создании PRI-файлов и при извлечении ресурсов с помощью класса Windows ResourceLoader.
В приложениях Магазин Windows имена локализованных файлов ресурсов задаются путем создания папки для хранения ресурсов и изображений определенного поддерживаемого языка и региональных параметров. Затем ресурсы можно задавать с помощью имен языков и региональных параметров (например, "ru-ru"), за которыми следует имя ресурса по умолчанию и расширение файла ресурсов (например, "ru-ru\Resources.resw").
Развертывание файлов ресурсов
В Visual Studio все параметры развертывания файлов ресурсов в приложениях обрабатываются в рамках проектов Visual Studio. Visual Studio автоматически создает файл конфигурации для всех ресурсов, которые являются частью проекта, с помощью средства MakePRI включает ресурсы в один PRI-файл и помещает PRI-файл в пакет развертывания приложения.
Поскольку все ресурсы включаются в один PRI-файл, а не в набор отдельных файлов, изменение существующего файла ресурсов или добавление поддержки нового локализованного языка и региональных параметров предполагает повторное построение и распространение всего приложения.
Извлечение ресурсов из файлов ресурсов
Чтобы извлечь ресурсы в приложение Магазин Windows, необходимо создать экземпляр объекта Среда выполнения Windows Windows.ApplicationModel.Resources.ResourceLoader или одного из типов в пространстве имен Windows.ApplicationModel.Resources.Core. Хотя класс .NET Framework ResourceManager поддерживается в Магазин Windows, использовать его не рекомендуется. Используйте ResourceManager только при разработке проектов Переносимая библиотека классов, предназначенных для нескольких платформ. В следующей таблице перечислены члены ResourceManager и их простые эквиваленты в классе Windows.ApplicationModel.Resources.ResourceLoader или типы в пространстве имен Windows.ApplicationModel.Resources.Core.
Член ResourceManager |
Эквивалентный член ResourceLoader или другого типа Среда выполнения Windows |
---|---|
ResourceManager.GetString(String) |
Windows.ApplicationModel.Resources.ResourceLoader.GetString(String) |
ResourceManager.GetString(String, CultureInfo) |
Windows.ApplicationModel.Resources.Core.ResourceMap.GetValue(String, ResourceContext) |
ResourceManager.#ctor(String, Assembly) |
Windows.ApplicationModel.Resources.ResourceLoader.ResourceLoader() -или- Windows.ApplicationModel.Resources.ResourceLoader.ResourceLoader(String) |
Простой пример "Hello World"
Ниже приведен простой пример приложения Магазин Windows, в котором отображаются локализованные строки. Его нейтральный язык и региональные параметры — "Русский (Россия)", но оно также включает ресурсы для языков "Английский (США)" и "Французский (Франция)". Если запустить приложение в системе, в которой установлен текущий язык и региональные параметры "Английский (США)", то появится приветствие на английском языке; в противном случае будет показано русское приветствие по умолчанию. Наконец, независимо от текущего языка и региональных параметров, приложение использует объекты Windows.ApplicationModel.Resources.Core.ResourceContext и Windows.ApplicationModel.Resources.Core.ResourceMap для отображения приветствия на французском языке.
Для отображения текста в элементе управления TextBlock необходимо добавить в файл BlankPage.xaml следующий тег <TextBlock>:
<Grid Background="{StaticResource PageBackgroundBrush}">
<TextBlock x:Name="outputBlock" />
</Grid>
Затем код приложения вызывается из конструктора класса BlankPage следующим образом:
Пример требует создания следующих ресурсов:
русский языковой ресурс с именем "Greeting" и значением "Привет!". Строка должна быть добавлена в файл ресурсов Resources.resw на корневом уровне проекта;
английский языковой ресурс с именем "Greeting" и значением "Hi there!". Для создания файла ресурсов добавьте в проект папку с именем en-US, а затем добавьте в нее файл ресурсов с именем Resources.resw;
французский языковой ресурс с именем "Greeting" и значением "Bonjour!". Для создания файла ресурсов добавьте в проект папку с именем fr-FR, а затем добавьте в нее файл ресурсов с именем Resources.resw.
В следующем примере показаны соответствующие локализованные строки в элементе управления TextBlock.
После компиляции и запуска приложения будет выведен текст следующего вида (для системы с языком и региональными параметрами "Английский (США)"):
The current culture is en-US.
Hi there!
Culture of Current Context: fr-FR
Bonjour!
См. также
Ссылки
Редакторы ресурсов Visual Studio