準備資源組態檔
資源 公用 程式中所述的 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 元素具有下表所述的屬性。
屬性名稱 | 強制性 | 描述 |
---|---|---|
fileType | No | 檔案類型。 應一律為「應用程式」。 |
總和檢查碼 | No | 總和檢查碼值會顯示在 LN 檔案的資源組態資料和語言特定資源檔中。 例如,此屬性可讓您依照英文 (美國) 慣例,從單一語言特定資源檔案複製總和檢查碼,並將總和檢查碼放在不同的語言特定資源檔中。 總和檢查碼可以指定為不超過 32 個字元的十六進位數位字串。 數值必須包含在 128 位的數位中。 |
語言 | No | 語言標記符合 IETF BCP BCP 47 (Windows Vista 和更新版本) ,例如 en-US for English (美國) 。 |
ultimateFallbackLanguage | No | 要插入 LN 檔案之資源組態資料的語言,代表搜尋對應語言特定資源檔時要使用的最終後援語言。 如果資源載入器無法從執行緒慣用 UI 語言載入所要求的資源檔,它會使用最終後援語言作為其最後一次嘗試。 符合 IETF BCP 47 (Windows Vista 和更新版本) 的語言標記,例如 en-US for English (美國) 。 |
ultimateFallbackLocation | No | 後援位置。 如果最終後援資源編譯成 LN 檔案,請指定 「內部」。 如果 LN 檔案是要參考語言特定的資源檔作為最終後援資源,請指定 「外部」 (預設) 。 |
在資源組態檔中,win32Resources 元素具有下表所述的子項目。
元素名稱 | Description |
---|---|
localizedResources | 封裝特定語言資源檔中所包含之資源類型和個別資源相關資訊的資源。 |
neutralResources | 封裝 LN 檔案中所含資源類型相關資訊的資源。 |
localizedResources 元素
當地語系化的資源專案。 根據預設,這個專案沒有屬性,而且只有一種子項目類型。 它只是 resourceType 元素的容器。
屬性名稱 | 描述 |
---|---|
resourceType | 包含在語言特定資源檔中的個別資源類型。 |
neutralResources 元素
中性資源專案。 此元素只是 resourceType 元素的容器。
屬性名稱 | 描述 |
---|---|
resourceType | LN 檔案中包含的單一資源類型。 |
resourceType 元素
resourceType 元素會封裝單一資源類型或個別資源的相關資訊。 其具有下列屬性。
警告
根據輸入資源檔或二進位檔案內容而定,RC 編譯器或 MUIRCT 只會攔截某些資源組態缺失。 資源組態檔中不存在於輸入檔中的 resourceType 錯誤不會被攔截,導致非預期的行為。 使用者可以使用損壞的資源組態檔,而且在引進使用資源組態檔中斷部分的二進位檔之前不知道,這會建立中斷來自目前二進位檔的外觀。
屬性名稱 | 強制性 | 描述 |
---|---|---|
typeNameId | Yes | 輸入資源的名稱或識別碼。 指定字串名稱或數位。 如果使用數位,請在字串前面加上 「#」,表示它代表數位。 每個 resourceType 元素只能有一個 typeNameId 屬性。 |
itemName | No | 要放在語言特定資源檔中的資源專案名稱字串。 您可以指定多個名稱,並以空格分隔,例如「HTML MOFDATA」。 |
itemId | No | 要放在語言特定資源檔中的個別資源專案的識別碼。 專案可以指定為範圍 (例如,「1-12」) 或以空格分隔的個別識別碼 (,例如「1 3 4」) 。 |
stringId | No | 要放在語言特定資源檔中的個別資源專案的字串識別碼。 字串可以指定為範圍 (,例如「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)
- STRING (6)
- FONTDIR (7)
- FONT (8)
- ACCELERATORS (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 同時出現在中性和當地語系化的資源區段中。