Подготовка файла конфигурации ресурсов
Программы MUIRCT и компилятора rc, описанные в разделе "Служебные программы ресурсов ", предоставляют параметр командной строки, позволяющий указать файл конфигурации ресурсов для базовых языковых ресурсов. Использование этого общедоступного XML-файла, доступного для чтения, позволяет управлять разделением ресурсов больше, чем с помощью обычных параметров командной строки служебных программ. Однако даже если не указать файл конфигурации ресурсов в качестве входных данных, файлы ресурсов LN и языка будут содержать данные конфигурации ресурсов.
Все файлы конфигурации ресурсов для приложений Win32 начинаются и заканчиваются одинаково:
<?xml version="1.0" encoding="utf-8"?>
<localization>
<resources>
<!-- a single win32Resources element goes here -->
</resources>
</localization>
В этом разделе рассматриваются аспекты СХЕМЫ XML, которые полезны при создании неуправляемого кода в Windows Vista и более поздних версиях. В частности, он касается только поведения элемента win32Resources.
Элемент win32Resources
Элемент win32Resources содержит атрибуты, описанные в следующей таблице.
Имя атрибута | Обязательный | Описание |
---|---|---|
fileType | Нет | Тип файла. Всегда должно иметь значение "Application". |
контрольная сумма | Нет | Значение контрольной суммы, которое будет отображаться в данных конфигурации ресурсов файла LN и файлов ресурсов для конкретного языка. Например, этот атрибут позволяет скопировать контрольную сумму из одного файла ресурсов для конкретного языка по соглашению для английского языка (США) и поместить контрольную сумму в другой файл ресурсов для конкретного языка. Контрольная сумма может быть указана в виде шестнадцатеричной числовой строки длиной не более 32 символов. Числовое значение должно содержаться в 128-разрядном числе. |
Язык | Нет | Тег языка, соответствующий IETF BCP 47 (Windows Vista и более поздних версий), например en-US для английского языка (США). |
ultimateFallbackLanguage | Нет | Язык для вставки в данные конфигурации ресурсов для LN-файла, представляющий конечный резервный язык, используемый при поиске соответствующего файла ресурсов для конкретного языка. Если загрузчику ресурсов не удается загрузить запрошенный файл ресурсов из предпочитаемых языков пользовательского интерфейса потока, он использует конечный резервный язык в качестве последней попытки. Языковой тег, соответствующий IETF BCP 47 (Windows Vista и более поздних версий), например en-US для английского языка (США). |
ultimateFallbackLocation | Нет | Резервное расположение. Укажите "internal", если конечные резервные ресурсы компилируются в файл LN. Укажите "external" (по умолчанию), если LN-файл ссылается на файл ресурсов для конкретного языка для его конечных резервных ресурсов. |
В файле конфигурации ресурсов элемент win32Resources содержит вложенные элементы, описанные в следующей таблице.
Имя элемента | Описание |
---|---|
localizedResources | Ресурсы, инкапсулируют сведения о типах ресурсов и отдельных ресурсах, содержащихся в файле ресурсов для конкретного языка. |
neutralResources | Ресурсы, которые инкапсулируют сведения о типах ресурсов, содержащихся в файле LN. |
Элемент localizedResources
Локализованный элемент resources. По умолчанию этот элемент не имеет атрибутов и только один тип вложенного элемента. Это просто контейнер для элементов resourceType.
Имя атрибута | Описание |
---|---|
тип_ресурса | Тип отдельного ресурса, содержащегося в файле ресурсов для конкретного языка. |
Элемент neutralResources
Нейтральный элемент resources. Этот элемент является просто контейнером для элементов resourceType.
Имя атрибута | Описание |
---|---|
тип_ресурса | Тип одного ресурса, содержащегося в LN-файле. |
Элемент resourceType
Элемент resourceType инкапсулирует сведения об одном типе ресурса или отдельном ресурсе. Он содержит атрибуты, перечисленные ниже.
Внимание!
Некоторые дефекты конфигурации ресурсов перехватываются только компилятором-кандидатом или MUIRCT в зависимости от входного файла ресурсов или содержимого двоичного файла. Ошибки resourceType в файле конфигурации ресурсов, которые не существуют во входном файле, не перехватываются, что приводит к непредвиденному поведению. Пользователи могут использовать неисправный файл конфигурации ресурсов и не знают, пока не введут двоичные файлы, использующие неработающие части файла конфигурации ресурсов, что создает видимость разрывов из текущих двоичных файлов.
Имя атрибута | Обязательный | Описание |
---|---|---|
typeNameId | Да | Введите имя или идентификатор ресурса. Укажите строковое имя или число. Если используется число, добавьте к строке символ "#", чтобы указать, что она представляет собой число. Каждый элемент resourceType должен иметь только один атрибут typeNameId . |
itemName | Нет | Строка имени элемента для ресурса, помещаемая в файл ресурсов для конкретного языка. Можно указать несколько имен, разделенных пробелами, например "HTML MOFDATA". |
itemId | Нет | Идентификатор отдельного элемента ресурса, помещаемого в файл ресурсов для конкретного языка. Элемент можно указать как диапазон (например, "1–12") или отдельные идентификаторы, разделенные пробелами (например, "1 3 4"). |
stringId | Нет | Строковый идентификатор для отдельного элемента ресурса, помещаемый в файл ресурсов для конкретного языка. Строка может быть указана как диапазон (например, "1–12") или отдельные идентификаторы, разделенные пробелами (например, "1 3 4"). Этот атрибут позволяет задавать как локализуемые, так и нелокируемые записи строковой таблицы. Он должен использоваться в сочетании со значением typeNameId "6", обозначая тип ресурса записи строковой таблицы. Строки хранятся в блоках по 16 в строковой таблице. Например, строки от 0 до 15 хранятся в одном блоке элемента ресурса и могут ссылаться в файле конфигурации ресурсов как itemId 1 или stringId "0-15". Например, если имеется пять локализуемых строк и три нелокируемые строки, следует назначить идентификаторы строк 0–4 для локализуемых строк и идентификаторы строк 16–18 для нелокализируемых строк. Если не упорядочить строки таким образом, затронутые блоки строк помещаются как в файл LN, так и в файл ресурсов для конкретного языка. |
Если указать атрибуты itemName, itemId и (или ) stringId для определенного типа ресурса в элементе localizedResource, в файл ресурсов для определенного языка будут помещены только указанные элементы или строки для указанного типа ресурса. Если элемент resourceType указан без явного имени элемента, идентификатора элемента или строкового идентификатора, все элементы указанного типа ресурса помещаются в файл ресурсов для конкретного языка. Элементы или типы, не перечисленные ни в одном из локализованных элементовResource, помещаются в LN-файл.
Ниже приведены стандартные типы ресурсов и их числовые идентификаторы.
- CURSOR(1)
- BITMAP(2)
- ЗНАЧОК(3)
- MENU(4)
- DIALOG(5)
- STRING(6)
- FONTDIR(7)
- FONT(8)
- УСКОРИТЕЛИ(9)
- RCDATA(10)
- MESSAGETABLE(11)
- GROUP_CURSOR(12)
- GROUP_ICON(14)
- ВЕРСИЯ(16)
- HTML(23)
Пример
<?xml version="1.0" encoding="utf-8"?>
<localization>
<resources>
<win32Resources fileType="Application">
<neutralResources>
<resourceType
typeNameId="#16"
/>
</neutralResources>
<localizedResources>
<resourceType
typeNameId="#2"
itemId="5 6 7 8 9 10 11 12"
itemName="HTML PRI"
/>
<resourceType
typeNameId="#4"
/>
<resourceType
typeNameId="#5"
/>
<resourceType
typeNameId="#6"
/>
<resourceType
typeNameId="#9"
/>
<resourceType
typeNameId="#11"
/>
<resourceType
typeNameId="#16"
/>
<resourceType
typeNameId="HTML"
/>
<resourceType
typeNameId="#23"
/>
<resourceType
typeNameId="#240"
/>
<resourceType
typeNameId="#1024"
/>
<resourceType
typeNameId="MY_TYPE"
/>
</localizedResources>
</win32Resources>
</resources>
</localization>
Комментарии
Если в элемент neutralResources включен любой тип ресурса ICON(3), DIALOG(5), STRING(6) или VERSION(16), необходимо дублировать эту запись в элементе localizedResources. Это можно увидеть в приведенном выше примере, где тип ресурса 16 отображается как в нейтральных, так и локализованных разделах ресурсов.