Подготовка файла конфигурации ресурсов

И 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-разрядном числе.
Язык Нет Язык, указанный с использованием формата имени, совместимого с RFC 4646 (Windows Vista и более поздних версий), например en-US для английского языка (США).
ultimateFallbackLanguage Нет Язык для вставки в данные конфигурации ресурсов для LN-файла, представляющий конечный резервный язык для использования в поиске соответствующего файла ресурсов конкретного языка. Если загрузчику ресурсов не удается загрузить запрошенный файл ресурсов из предпочтительных языков пользовательского интерфейса потока, он использует конечный резервный язык в качестве последней попытки. Язык указывается с использованием формата имени, соответствующего стандарту RFC 4646 (Windows Vista и более поздних версий), например en-US для английского языка (США).
ultimateFallbackLocation Нет Резервное расположение. Укажите "internal", если конечные резервные ресурсы компилируются в LN-файл. Укажите "external" (по умолчанию), если LN-файл ссылается на файл ресурсов конкретного языка для своих конечных резервных ресурсов.

 

В файле конфигурации ресурсов элемент win32Resources содержит вложенные элементы, описанные в следующей таблице.

Имя элемента Описание
localizedResources Ресурсы, которые инкапсулируют сведения о типах ресурсов и отдельных ресурсах, содержащихся в файле ресурсов для конкретного языка.
neutralResources Ресурсы, которые инкапсулируют сведения о типах ресурсов, содержащихся в файле LN.

 

Элемент localizedResources

Локализованный элемент ресурсов. По умолчанию этот элемент не имеет атрибутов и только один тип вложенного элемента. Это просто контейнер для элементов resourceType.

Имя атрибута Описание
тип_ресурса Тип отдельного ресурса, содержащегося в файле ресурсов для конкретного языка.

 

Элемент neutralResources

Нейтральный элемент ресурсов. Этот элемент является только контейнером для элементов resourceType.

Имя атрибута Описание
тип_ресурса Тип одного ресурса, содержащегося в файле LN.

 

Элемент resourceType

Элемент resourceType инкапсулирует сведения об одном типе ресурса или отдельном ресурсе. Он содержит перечисленные ниже атрибуты.

Внимание!

Некоторые дефекты конфигурации ресурсов перехватываются только компилятором RC или 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 указан без явного имени элемента, идентификатора элемента или строкового идентификатора, все элементы указанного типа ресурса помещаются в файл ресурсов, зависящий от языка. Элементы или типы, не перечисленные в любом элементе localizedResource, помещаются в файл 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)
  • VERSION(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>

Remarks

Если в элемент neutralResources включен тип ресурса ICON(3), DIALOG(5), STRING(6) или VERSION(16), необходимо дублировать эту запись в элементе localizedResources. Это показано в приведенном выше примере, где тип ресурса 16 отображается как в нейтральных, так и локализованных разделах ресурсов.

Подготовка ресурсов