Подготовка файла конфигурации ресурса
Как программы 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 содержит атрибуты, описанные в следующей таблице.
Имя атрибута | Обязательный | Описание |
---|---|---|
тип файла | Нет | Тип файла. Следует всегда использовать "Application". |
контрольная сумма | Нет | Значение контрольной суммы, отображаемое в файле конфигурации ресурсов LN и в файлах ресурсов, специфичных для языка. Например, этот атрибут позволяет скопировать контрольную сумму из файла ресурсов для конкретного языка, по соглашению используется файл для английского языка (США), и поместить контрольную сумму в другой файл ресурсов для конкретного языка. Контрольная сумма может быть указана в виде шестнадцатеричной строки чисел, которая не превышает 32 символов. Числовое значение должно содержаться в 128-разрядном номере. |
Язык | Нет | Тег языка, соответствующий IETF BCP 47 (Windows Vista и более поздних версий), например en-US для английского языка (США). |
ultimateFallbackLanguage | Нет | Язык для вставки в данные конфигурации ресурсов для LN-файла, представляющий конечный резервный язык, используемый в поиске соответствующего файла ресурсов для конкретного языка. Если загрузчик ресурсов не загружает запрошенный файл ресурсов из предпочитаемых языков пользовательского интерфейса потока, он использует конечный резервный язык в качестве последней попытки. Тег языка, соответствующий IETF BCP 47 (Windows Vista и более поздних версий), например, en-US для английского языка (США). |
ultimateFallbackLocation | Нет | Резервное местоположение. Укажите "внутренний", если конечные резервные ресурсы компилируются в LN-файл. Укажите "external" (по умолчанию), если LN-файл ссылается на файл ресурсов, зависящий от языка, для его конечных резервных ресурсов. |
В файле конфигурации ресурсов элемент win32Resources имеет подэлементы, описанные в следующей таблице.
Имя элемента | Описание |
---|---|
локализованные ресурсы | Ресурсы, которые инкапсулируют сведения о типах ресурсов и отдельных ресурсах, содержащихся в файле ресурсов для конкретного языка. |
neutralResources | Ресурсы, которые инкапсулируют сведения о типах ресурсов, содержащихся в LN-файле. |
Элемент локализованных ресурсов
Локализованный элемент ресурсов. По умолчанию этот элемент не имеет атрибутов и имеет только один тип подэлемента. Это просто контейнер для элементов resourceType.
Имя атрибута | Описание |
---|---|
тип ресурса | Тип отдельного ресурса, содержащегося в файле ресурсов для конкретного языка. |
Элемент neutralResources
Нейтральный элемент ресурсов. Этот элемент является просто контейнером для элементов resourceType.
Имя атрибута | Описание |
---|---|
тип ресурса | Тип одного ресурса, содержащегося в LN-файле. |
Элемент типа ресурса
Элемент resourceType инкапсулирует сведения о одном типе ресурса или отдельном ресурсе. Он содержит атрибуты, перечисленные ниже.
Осторожность
Некоторые дефекты конфигурации ресурсов перехватываются только компилятором RC или MUIRCT в зависимости от входного файла ресурсов или содержимого двоичного файла. Ошибки resourceType в файле конфигурации ресурсов, которые отсутствуют во входном файле, не обнаруживаются, что приводит к неожиданному поведению. Пользователи могут использовать дефектный файл конфигурации ресурса и не знать об этом до тех пор, пока не начнут использовать двоичные файлы, которые задействуют поврежденные части этого файла, создавая впечатление, что проблемы вызваны текущими двоичными файлами.
Имя атрибута | Обязательный | Описание |
---|---|---|
typeNameId | Да | Имя или идентификатор типа ресурса. Укажите строковое имя или число. Если используется число, добавьте строку с символом "#", чтобы указать, что он представляет число. Каждый элемент resourceType должен иметь только один атрибут typeNameId. |
название элемента | Нет | Строка имени элемента для ресурса, помещаемая в файл ресурсов для конкретного языка. Можно указать несколько имен, разделенных пробелами, например 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)
- ICON(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>
Замечания
Если включить любой тип ресурса ICON(3), DIALOG(5), STRING(6) или VERSION(16) в нейтральный элементResources, необходимо дублировать эту запись в локализованном элементеResources. Это показано в приведенном выше примере, где тип ресурса 16 отображается как в нейтральных, так и локализованных разделах ресурсов.