資源公用程式中所述的 MUIRCT 和 RC 編譯程式公用程式 提供命令行選項,可讓您指定基底語言資源的資源組態檔。 使用此公用且人類可讀的 XML 檔案,可讓您更充分掌控資源分割,這比使用公用程式的一般命令行引數來實現的資源分割更為有效。 不過,即使您未提供資源組態檔做為輸入,LN 和語言特定的資源檔也會包含資源組態數據。
Win32 應用程式的所有資源組態檔都以相同方式開始和結束:
<?xml version="1.0" encoding="utf-8"?>
<localization>
<resources>
<!-- a single win32Resources element goes here -->
</resources>
</localization>
本主題著重於在 Windows Vista 和更新版本上建置 Unmanaged 程式代碼時很有用的 XML 架構層面。 特別是,它只會與 win32Resources 元素的行為有關。
win32Resources 元素
win32Resources 元素具有下表所述的屬性。
| 屬性名稱 | 強制的 | 描述 |
|---|---|---|
| 檔案類型 | 不 | 檔案類型。 應一律為「應用程式」。 |
| 校驗和 | 不 | 校驗碼值會顯示在 LN 檔案的資源組態資料中,以及特定語言的資源檔案中。 例如,這個屬性允許您將檢查碼從一個語言特定的資源檔案中複製,通常是英文(美國)的檔案,然後將該檢查碼放到不同語言的資源檔案中。 總和檢查碼可以指定為不超過 32 個字元的十六進位數位字串。 數值必須包含在128位的數位中。 |
| 語言 | 不 | 語言標記符合 IETF BCP 47(Windows Vista 和更新版本),例如,en-US 英文(美國)。 |
| ultimateFallbackLanguage | 不 | 要插入 LN 檔案之資源組態數據的語言,代表用於搜尋對應語言特定資源文件的最終後援語言。 如果資源載入器無法從線程慣用的UI語言載入要求的資源檔,它會使用最終後援語言作為其最後一次嘗試。 語言標記符合 IETF BCP 47(Windows Vista 和更新版本),例如,en-US 英文(美國)。 |
| 最終備援位置 | 不 | 後援位置。 如果最終後援資源編譯成 LN 檔案,請指定 「內部」。 如果 LN 檔案參考語言特定資源檔,以取得其最終後援資源,請指定 “external” (default)。 |
在資源組態檔中,win32Resources 元素具有下表中所述的子元素。
| 元素名稱 | 描述 |
|---|---|
| 在地化資源 | 封裝語言特定資源檔中所包含之資源類型和個別資源相關信息的資源。 |
| neutralResources | 包含有關 LN 檔案中資源類型信息的資源。 |
localizedResources 元素
本地化資源元素。 根據預設,這個項目沒有屬性,而且只有一種類型的子元素。 它只是 resourceType 元素的容器。
| 屬性名稱 | 描述 |
|---|---|
| 資源類型 | 包含在語言特定資源檔中的個別資源類型。 |
中立資源元素
中性資源元素。 這個元素只是 resourceType 元素的容器。
| 屬性名稱 | 描述 |
|---|---|
| 資源類型 | LN 檔案中包含的單一資源類型。 |
resourceType 元素
resourceType 元素會封裝單一資源類型或個別資源的相關信息。 其具有下列屬性。
謹慎
根據輸入資源檔或二進位檔內容,某些資源組態缺陷只會由 RC 編譯程式或 MUIRCT 攔截。 在資源組態檔中,有的resourceType錯誤不在輸入檔中存在,因此未被攔截,導致非預期的行為。 使用者可能正在使用有缺陷的資源組態檔,並且在引入使用這些有問題部分的二進位檔之前,沒有意識到故障情況,這使得問題看起來是來自目前的二進位檔。
| 屬性名稱 | 強制的 | 描述 |
|---|---|---|
| typeNameId | 是的 | 輸入資源的名稱或識別碼。 指定字串名稱或數位。 如果使用數位,請在字串前面加上 “#” 以表示它代表數位。 每個 resourceType 元素都必須只有一個 typeNameId 屬性。 |
| 項目名稱 | 不 | 要放在語言特定資源檔中的資源項目名稱字串。 您可以指定多個名稱,以空格分隔,例如“HTML MOFDATA”。 |
| 項目ID | 不 | 要放在語言特定資源檔中的個別資源項目的標識碼。 項目可以指定為範圍(例如“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 檔案和語言特定的資源檔中。 |
如果您在 localizedResource 元素下為特定的資源類型指定 itemName、itemId和/或 stringId 屬性,則只有這些指定的專案或字串會被放置在語言特定的資源檔中。 如果指定了 resourceType 元素,但未指定任何明確的項目名稱、項目識別元或字符串標識符,則指定資源類型的所有項目都會放在特定語言的資源檔案中。 未列在任何localizedResource元素中的項目或類型會放在 LN 檔案中。
以下是標準資源類型和其數值識別碼:
- CURSOR(1)
- BITMAP(2)
- 圖示(3)
- 選單(4)
- DIALOG(5)
- 字串(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 同時出現在中性資源和本地化的資源區段中。