共用方式為


多語應用程式工具組常見問題集和疑難排解指南

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

安裝

系統需求是什麼?

支援的作業系統: Windows 8 (RTM 或更新版本,32 位元或 64 位元版本)。

**必要的軟體:**Microsoft Visual Studio。

磁碟空間需求: 10MB (32 位元)、10MB (64 位元)。

工具組支援哪些程式設計語言?

工具組支援使用 Windows 執行階段 (WinRT) 環境的所有 Windows 應用程式開發。 這包含 .resw (XAML) 和 .resjson (JavaScript) 檔案,但在本文件的其他部分中,我們將僅以 .resjson 檔案表示。

啟用多語應用程式工具組

我是否需要使用多個語言的 .resjson 檔案?

否。工具組的其中一個主要優點就是不需要使用多個語言的 .resjson 檔案。 工具組會使用專案的 .xlf 檔案來管理和同步應用程式的資源。 這解決了在多個 .resjson 檔案中維持內容同步的挑戰。

包含相符 .resjson 和 .xlf 檔案的專案會忽略來自 .xlf 檔案的翻譯。 發生這種情況時,會在建置期間顯示警告,通知您最終的應用程式中未包含 .xlf 翻譯。當 .resjson 檔案與 .xlf 檔案的目標語言擁有相同的語言代碼時,這兩個檔案會相符。相符配對的範例是 target-language 屬性為 "de-DE" 的 strings\de-DE\resources.resjson 與德國 (德文).xlf。

我是否可以使用多個語言的 .resjson 檔案

是,但不建議這樣做。 如果您想要在專案中加入多個語言的 .resjson 檔案並使用工具組,請確認您沒有相符的 .resjson 和 .xlf 檔案。

我在 [工具] 功能表中找不到 [啟用多語應用程式工具組] 選項。

請嘗試依照下列步驟執行:

  1. 確認您選取的是專案名稱,而不是方案,然後再選取 [工具]。
  2. 確認已使用 [擴充管理員]**** 來安裝工具組擴充。
  3. 確認您的專案是 Windows 市集應用程式專案。

我建置專案時,多語應用程式工具組建置並未啟動。

確認您已使用 [工具] 功能表的 [啟用多語應用程式工具組]**** 啟用您的專案。 如果您使用舊版來啟用應用程式,則必須先停用,然後再使用 [工具] 功能表來啟用多語應用程式工具組。 這會更新專案,讓它可以使用新版的工具組。

確認已安裝「適用於所有 Visual Studio 版本的建置工作」""元件。 此建置元件會與擴充一起安裝,但是可以在安裝時手動取消選取。 這個元件必須存在,.xlf 檔案才能更新,並新增翻譯到 PRI 檔案中。 當這個元件已正確安裝並可正常運作時,您將看到下列建置訊息:

1> Multilingual App Toolkit build started.
1> Multilingual App Toolkit build completed successfully.

工具組回報在建置期間找不到任何 XLIFF 語言檔案。

訊息:

No XLIFF language files were found.  The app will not contain any localized resources.

當工具組在專案中找不到任何副檔名為 .xlf 的檔案時,就會收到這個訊息。 這些檔案預設放置在 "MultilingualResources" 資料夾中。 您可以移除這些檔案,但最好讓它們留在這個資料夾中,因為這樣編輯器才可以找到相關的中繼資料檔案。

以滑鼠右鍵按一下專案名稱,並從方案總管視窗中選取 [新增翻譯語言...]****。這會顯示用來新增 .xlf 語言的對話方塊。 由工具組找到的任何現有 .xlf 語言,系統會先預先核取它們的選取方塊,以表示專案中已經包含該語言。

建置時工具組處理的檔案清單中不包括我的 .xlf 檔案。

如果您先將某個 .xlf 檔案移除,然後再將它重新加入專案,則它的檔案類型元素可能會設定不正確。 若要檢查是否有這個情況,請直接開啟專案檔案,然後查看 .xlf 檔案的包含類型。 類型元素必須設定為 [無]"",工具組才能處理檔案。 如果設定為 [內容]"" 或其他值,請將它變更為 [無]""。 儲存專案檔,然後重新載入專案。

範例:German (Germany).xlf 類型不正確:

<Content Include="MultilingualResources\German (Germany).xlf" />
<None Include="MultilingualResources\Pseudo Language %28Pseudo%29.xlf" />

我已經加入 .xlf 語言,可是我的字串在哪裡?

您選取的語言已新增到 "MultilingualResources" 資料夾。語言檔案剛建立時都是空的。您的 .resjson 檔案字串會在下次重建期間填入這些 .xlf 檔案。

當我建置專案時,.xlf 檔案還是空的。

請嘗試依照下列步驟執行:

  1. 使用 [重建],確保已更新 .xlf 檔案。Visual Studio 已最佳化 [建置]**** 命令,現在只會建置上次執行 [建置] 後變更的檔案。Visual Studio 無法在新增 .xlf 檔案後偵測變更。
  2. 確認您的應用程式支援 Windows 市集應用程式的全球化和當地語系化設計模型。 請參閱全球化應用程式的其他主題。

將語言新增到您的應用程式

什麼是 Microsoft Translator 服務?

Microsoft Translator 是一種提供機器翻譯的雲端式服務。 在無法取得價格合理的人工翻譯時,機器翻譯是取得翻譯的理想方法。 若要深入了解,請參閱 Microsoft Translator

工具組使用 Microsoft Translator 服務為開發人員提供翻譯建議。當 [新增翻譯語言] 視窗中出現 Microsoft Translator 圖示時,您可以查看 Microsoft Translator 支援的語言。

若要使用 Microsoft Translator 快速翻譯您的應用程式,只要在多語系編輯器內選取某個字串,然後按一下 [翻譯] 按鈕即可。

虛擬語言。

虛擬語言會以人為方式修改軟體產品,目的是模擬實際的當地語系化語言,但仍讓以原始產品語言為母語的人能夠理解修改後的內容。 在專案早期且實際開始當地語系化之前,虛擬翻譯會利用取代字元和加長資源字串的長度來偵測潛在的當地語系化問題或錯誤。如需利用虛擬語言進行當地語系化測試的詳細資料,請參閱當地語系化測試

什麼是虛擬資源追蹤項?

除了取代和加長字元之外,虛擬引擎也會為每個資源提供唯一的追蹤識別項? 這個追蹤項會加在每個字串的開頭,並以角括弧括住,像是 [xxxxx]。 您可以在視覺 UI 檢查測試期間使用這些追蹤項。追蹤項可協助追蹤產品中的特定資源,特別是多項資源擁有類似或重複的文字時。

在下列 "Hello World" 文字範例中,虛擬翻譯會延伸並多佔用 30% 的螢幕空間,然後套用資源追蹤項:

"Hello World" -> "Ĥèĺļõ Ŵòŗłđ" -> "[!!_Ĥèĺļõ Ŵòŗłđ_!!]" -> “[hJ8s1][!!_Ĥèĺļõ Ŵòŗłđ_!!]"

資源追蹤項預設會開啟,您可以在 PseudoSettings.config 檔案的 "EnableResourceTracker = true" 屬性底下查看它。如有需要,可以將這個參數變更為 false。

我在 Windows 8 語言喜好設定清單中找不到虛擬語言?

在 Windows 8 語言喜好設定清單中,預設不會顯示英文 (qps-ploc)。 新增英文 (qps-ploc):

  1. 開啟 [控制台],然後選取 [時鐘、語言和區域]**** > [語言]。
  2. 按一下 [新增語言]****。
  3. 在搜尋方塊中,輸入 qps-ploc。務必輸入完整語言代碼;如果有任何不完整,搜尋結果就不會傳回虛擬語言。
  4. 選取 [英文 (偽 qps)],然後按一下 [新增]****。
  5. 確認 [英文 (qps-ploc)] 位於您喜好的語言清單頂端。

測試

啟動我的應用程式時,我沒有看到任何翻譯,或我的應用程式只有部分被翻譯。

  1. 確認您的 .xlf 檔案包含翻譯。

    在多語系編輯器中開啟 .xlf 檔案,查看裡面是否包含翻譯。 當 .resjson 或 .resw 檔案中的字串更新時,任何相關的翻譯都會被移除。 這是為了確保翻譯能對應到相關字串。 翻譯字串並重建。

  2. 我的字串已經翻譯,但仍未顯示在我的應用程式中。

    使用 [重建] 來確認您應用程式的 PRI 檔案內含經過更新的 .xlf 檔案。Visual Studio 已最佳化 [建置]**** 命令,現在只會建置上次執行 [建置] 後變更的檔案。 .xlf 檔案目前不會自動觸發重建需求。

  3. 檢查您的語言喜好設定順序。

    確認您正在測試的語言列在語言喜好設定清單的最上方。 應用程式會以這個順序顯示語言,如果應用程式的預設語言不是位於清單最上方,您可能永遠看不到您的翻譯。

使用虛擬語言時會找到哪些類型的當地語系化問題?

  • **UI 截斷。**虛擬語言會在字串中加入字元,以顯示字串翻譯後可能的外觀。
  • **硬式編碼字串。**如果在虛擬語言應用程式中看到普通的英文字串,您就能知道該字串是硬式編碼字串,工具組將無法翻譯這些字串。

如需虛擬語言以及使用虛擬語言進行當地語系化測試的詳細資料,請參閱當地語系化測試

應用程式沒有依照我的語言喜好設定顯示。

語言喜好設定由您語言的排列順序決定 (由上到下)。部署應用程式之前,請先確認這個順序是正確的。開啟 [控制台],選取 [時鐘、語言和區域] > [語言],選取一個語言,然後按一下 [上移] 或 [下移] 來變更順序。

工具組在建置輸出中回報 0x80004004 錯誤。

訊息:

Merge of Loc PRI file failed calling makepri.exe: "0x80004004"

當地區格式與工具組建置作業發生衝突時,就會發生這個錯誤。 解決辦法是在建置時將您的地區碼變更為 en-US。

工具組在建置輸出中回報 0x80004005 錯誤。

訊息:

Merge of Loc PRI file failed calling makepri.exe: "0x80004005"

當 .xlf 檔案包含不支援的目標語言時,就會發生這個錯誤。 多語應用程式工具組客戶預覽版中錯誤地在繁體中文使用目標文化 "zh-cht" 以及在簡體中文使用目標文化 "zh-chs"。 這個錯誤已在上個版本中更正。

若要更正這個錯誤,請手動修改包含錯誤地區碼的 .xlf 檔案。 將 "zh-cht" 變更為 "zh-hant",以及將 "zh-chs" 變更為 "zh-hans"。

是否有辦法可以取得與所看到錯誤相關的詳細資料呢?

是,您可以在 Visual Studio 中開啟詳細資訊記錄。 選取 [工具] > [選項]**** 功能表以顯示 [選項] 對話方塊。 接著展開 [專案和方案],然後選取 [建置並執行]。 將 [MSBuild 專案建置輸出詳細等級] 從 [最小] 變更為 [一般]**** 或較高的等級。

注意  從命令列執行 msbuild 也可以產生額外的訊息。嘗試從 Visual Studio 命令列建置專案:

msbuild /t:rebuild <projectname>

 

匯入/匯出 XLIFF 檔案

匯入翻譯失敗

匯入處理程序會在匯入之前執行基本驗證,確保現有 .xlf 與正要匯入的 .xlf 之間的目標文化特性資訊相符。在多語系編輯器中開啟 .xlf 檔案,並確認文化特性相符。

如果我的譯者沒有安裝 Windows 8 / Visual Studio / 多語應用程式工具組,該怎麼辦?

沒關係!當您選取 [傳送] 以進行翻譯工作時,電子郵件內會包含下載和安裝多語應用程式工具組的連結。不會提供 Windows 8 和 Visual Studio,唯一可安裝的元件是多語系編輯器。

當翻譯檔案準備好並已傳回給您時,以滑鼠右鍵按一下 .xlf 檔案並選取 [匯入翻譯]****,然後選取傳回的 .xlf 檔案。

過時的功能

MarkupRules.xml 和 ResourcesLocks.xml 檔案發生什麼事?

多語應用程式工具組的發行版本已不再使用專屬資源鎖定檔案。 改為直接在 .xlf 檔案中加入 XLIFF 1.2 標記 <mrk> 來識別機器翻譯期間未修改的字串。 這可讓 XLIFF 檔案獨立運作,並允許針對每個檔案個別進行資源鎖定。

因此,已不再需要這些額外的支援檔案,您可以安全地從使用舊版工具組建立的專案刪除這些檔案。

.TPX 檔案發生什麼事?

在傳出 .xlf 檔案以進行翻譯時,.TPX 檔案會提供一個簡單的方法來包含 MarkupRules.xml 和 ResourcesLocks.xml 檔案。 移除這兩個支援檔案之後,已不再需要這個功能。

如果您需要抓取 .TPX 檔案中的翻譯,只要將 .TPX 檔案的副檔名重新命名為 .ZIP 即可。 這可以讓您使用檔案總管或任何 .ZIP 相容工具來開啟並解壓縮內容。

其他問題

我已經正確無誤地執行所有動作,但仍然無法順利進行。

請嘗試依照下列步驟執行:

  1. 使用上述的其中一個方法新增翻譯。

  2. 傾印 .pri 檔案 (位於 MakePRI.exe 設定中),查看您的翻譯是否位於 .pri 檔案中。翻譯將與語言代碼和翻譯後的值一起出現:

    <Candidate qualifiers="Language-QPS-PLOC" type="String">
        <Value>[!!_Ŝéãřćĥ_!!]</Value>
    </Candidate>
    
  3. 從命令提示字元建置,這裡所產生的錯誤資訊可能比建置輸出所回報的錯誤更加詳細。

我使用了 Visual Studio 11 Beta 或 RC 的多語應用程式工具組來啟用應用程式。 是否需要進行其他特別的動作?

是。如果您安裝了多語應用程式工具組 v1.0,您必須先停用,然後再使用 [工具] 功能表啟用多語應用程式工具組。 這將會更新專案,讓它可以使用新版的工具組。

我安裝了 Windows 8 和 Visual Studio 2012,以及 Visual Studio 11 Beta 的多語應用程式工具組。

如果您使用 [程式和功能]**** 來解除安裝多語應用程式工具組,則仍無法安裝工具組的 Release Preview,因為擴充仍安裝在 Visual Studio 中。

若要修正這個問題,請執行 Visual Studio,並透過擴充管理員解除安裝多語應用程式工具組擴充。

我的應用程式無法通過 Windows 市集的認證。

請確認您的應用程式僅包含支援的語言。 開始認證程序之前,您應該先從專案排除虛擬語言 (虛擬).xlf 檔案。虛擬語言不是 Windows 市集可以選擇使用的語言,在應用程式中包含它對客戶而言沒有任何價值。

相關主題

全球化應用程式

Microsoft Translator

當地語系化測試

MakePRI.exe 設定