Skip to main content
語言規範會宣告區塊中的內容適用於哪種語言。如果您以一或多個語言規範標記安裝套件中的區塊,主機會在安裝時執行下列動作。
  1. 判斷哪些區塊在使用者所需語言與套件中的語言之間最相符
  2. 只下載標記為該語言的區塊,以及沒有語言規範的區塊
如果找不到完全相符的項目,可以使用語言規範宣告後援語言。

感知語言的安裝

Intelligent Delivery 語言規範會標記內容,讓套件中所有當地語系化資產只有一部分會安裝在主機上。這可為以數位方式安裝的客戶節省頻寬,也能為所有客戶節省硬碟空間。 若要表示內容專屬於一或多種語言,請在 layout.xml 檔案中的區塊加上 Languages 屬性。下列範例顯示的區塊,只會安裝在已判定法文為其執行語言最佳相符項目的主機上。此區塊會安裝在設定為法文且地區設定為加拿大 (fr-CA) 或法國 (fr-FR) 的主機上。沒有語言規範的區塊會安裝在所有主機上,除非它被其他規範 (例如裝置類型) 排除。

判斷使用者選擇的語言

使用 XPackageGetUserLocale 函式查詢作業系統判定 與使用者系統上的遊戲安裝最相符的地區設定 名稱。 傳回的地區設定由一個演算法決定,該演算法大致會執行下列動作, 依據使用者的所有可用資料判斷最佳的相符項目。
  1. 產生與使用者目前語言設定最相符的語言清單。
  2. 產生 MicrosoftGame.config/資訊清單中宣告的所有語言清單。
  3. 產生套件中目前已安裝且可用的所有語言清單。
  4. 資訊清單中宣告的第一個語言,是語言選取的最終後援。
  5. 結果一律會是 MicrosoftGame.config/資訊清單中宣告的語言;如果未宣告任何語言,則為使用者語言。
使用的演算法可能會隨時間變更,且不一定與 上述說明完全相同。
XPackageGetUserLocale 傳回的語言不一定會 與 GetUserDefaultLocaleName 或其他國家語言支援 (NLS) 及當地語系化相關 Win32 API 函式傳回的語言相符,因此應優先呼叫此函式。 如需當地語系化及 MicrosoftGame.config 中語言設定的詳細資訊,請參閱 National Language Support API 和 Localization GDK 範例。
您必須確保 layout.xml 檔案中參照的所有語言也都存在於 MicrosoftGame.config 檔案中。如果不是如此,MakePkg 工具會產生錯誤。

使用者切換至不同語言後啟動遊戲時的行為

如果使用者啟動您的遊戲,而使用者的最佳地區設定可在您的套件中取得 但尚未安裝 (例如,使用者在您的遊戲未執行時切換了語言), 則下次啟動您的遊戲時,系統會讓使用者選擇是否安裝最相符的語言。
如果使用者選擇安裝某種語言,在新語言下載完成之前,他們仍可以先前選擇的已安裝語言 執行遊戲。我們假設 如果使用者一開始使用另一種語言,他們很可能理解該語言,並可能想在 等待其偏好語言下載期間遊玩遊戲。請注意,此行為曾讓許多開發人員感到困惑。測試時,您應該在啟動遊戲之前 監視遊戲安裝佇列,以確認 新語言已完成安裝。如果使用者選擇安裝某種語言,XPackageGetUserLocale 在該語言下載完成之前不會回報該語言。

在遊戲中提供其他語言

有些遊戲允許使用者選擇語言 (在初次遊玩時或透過選單),而不考慮主機的語言設定。在安裝時,Intelligent Delivery 會依據主機的語言設定和 layout.xml 檔案中指定的語言,只為特定套件安裝一種語言。您的遊戲預設應以此語言呈現。 此外,XBOX 殼層允許安裝次要語言。您可以使用自己的 UI,從遊戲內公開此選項。您的遊戲可以呼叫 XPackageEnumeratePackages 方法來判斷可安裝的語言。依據所選語言和安裝來源,安裝可能來自光碟或 XBOX Live。當使用者選取預設以外的語言時,您的遊戲應呼叫 XPackageFindChunkAvailability 方法,以判斷標記為該語言之區塊的安裝狀態。此 API 會傳回 XPackageChunkAvailability 物件,其值為下表所示的其中之一。 如果 XPackageChunkAvailability 傳回 Unavailable,表示指定的語言無法在線上或光碟上的遊戲版本中取得。 如果使用者選擇安裝可用但目前未安裝的語言,您的遊戲應以指定要安裝之語言的 XPackageChunkSelector 物件呼叫 XPackageInstallChunks 方法。此呼叫會顯示系統轉譯的 UI,提示使用者接受額外的下載和安裝。您的遊戲可以使用傳回的安裝監視器控制代碼,搭配 XPackageGetInstallationProgress 方法或 XPackageRegisterInstallationProgressChanged 方法,來監視新資料的下載和安裝,或判斷使用者是否已拒絕額外的安裝。 您的遊戲可以呼叫 XPackageUninstallChunks 方法來解除安裝語言。如果只安裝了一種語言,此呼叫會被無聲忽略。

與 XBOX One 軟體開發套件的差異

如果您先前曾在 XBOX One 軟體開發套件上使用 Intelligent Delivery,請注意語言的宣告和對應方式有所不同。如果您已在區塊中加入 Languages 屬性,該語言也必須在 MicrosoftGame.config 中宣告。現在判斷要為某語言安裝哪些區塊,是以最相符語言的單一值為依據。例如,如果您的配置檔案包含一個標記為 ‘en’ 的區塊和另一個標記為 ‘en-US’ 的區塊,當使用者的語言設定為 ‘en-US’ 時,將不會安裝 ‘en’ 區塊。如果您想要這種舊版行為,請以區塊應安裝的所有語言來宣告該區塊:en;en-US。

參考 API 文件

另請參閱

Intelligent Delivery
Last modified on October 6, 2026