使用翻譯編輯器將使用者介面本地化

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

翻譯編輯器提供整合性的編輯介面,方便您處理所有預設及已翻譯的字串資源

如需將應用程式翻譯成不同語言的相關介紹,請參閱「針對不同語言和文化提供支援」。

圖 1. 翻譯編輯器顯示尚未翻譯的應用程式文字

字串資源

專案的字串資源會包含在 strings.xml 檔案中。系統會為您的專案產生預設的 strings.xml 檔案,內含應用程式預設語言的字串資源,也就是您期望多數應用程式使用者所使用的語言。如果您希望應用程式也能顯示其他語言,則可配置含有該語言字串資源的翻譯版 strings.xml 檔案。

完成預設的 strings.xml 檔案後,您可以自行新增翻譯,或付費聘請專業翻譯人員進行翻譯。無論採用哪種方式,您都可以運用 Android Studio 功能來管理及測試本地化文字。如需專業翻譯服務的相關資訊,請參閱「預訂翻譯服務」。

開啟翻譯編輯器

您可以透過 Android Studio 的以下位置存取翻譯編輯器。

透過 Android 檢視畫面開啟

  1. 在左側面板中依序點選「Project」>「Android」,再依序選取「ModuleName」>「res」>「values」
  2. 在「strings.xml」檔案上按一下滑鼠右鍵,然後選取「Open Translations Editor」

    翻譯編輯器會顯示 strings.xml 檔案中的鍵與值組合。

    注意事項:如果您有翻譯版的 strings.xml 檔案,您的專案就會有多個對應的「values」資料夾,其名稱結尾會附帶語言代碼 (例如西班牙文的資料夾為 values-es )。預設的 strings.xml 檔案一律位於「values」(不含後置字串) 資料夾中。

圖 1 顯示某個簡易應用程式在翻譯編輯器中尚未經過翻譯的預設應用程式文字 (本例為英文)。翻譯版的 strings.xml 檔案會顯示在「Untranslatable」資料欄的右側,每個語言各有一欄 (如圖 2 所示)。

從 strings.xml 中開啟

您可以在任一 strings.xml 檔案中存取翻譯編輯器

  1. 在左側面板中依序點選「Project」>「Android」,再依序選取「ModuleName」>「res」>「values」
  2. 按兩下 strings.xml 即可開啟該檔案進行編輯。
  3. strings.xml 中,按一下右上角的「Open editor」連結。

注意事項:如果您點選「Hide notification」連結,「Open editor」連結就會消失。如要恢復顯示該連結,請先關閉該專案再重新開啟。

從設計編輯器開啟

只要在版面配置編輯器的設計編輯器中開啟翻譯編輯器,即可編輯預設和翻譯文字,讓文字更貼近版面配置設計。如要瞭解如何在設計編輯器中切換語言,請參閱「在設計編輯器中顯示譯文」。

  1. 在左側面板中依序點選「Project」>「Android」,再依序選取「ModuleName」>「res」>「layout」
  2. 按兩下 content_main.xml 即可開啟該檔案進行編輯。
  3. 按一下左下角的「Design」分頁標籤,即可顯示「設計」編輯器。
  4. 在設計編輯器中,選取「Language」(語言) 下拉式清單。
  5. 選取「編輯翻譯」圖示

設定不可翻譯的列

您可以在翻譯編輯器中選取「Unstranslatable」,表示您不要翻譯該資料列的文字。舉例來說,您可以將商號和商標等產品專屬文字以及沒有對應翻譯的術語,設為不可翻譯的文字

當您勾選「Untranslatable」時,系統會在預設 strings.xml 檔案中的對應行加上 translatable="false"。在以下範例中,系統不會翻譯第一行的 EasyApp,因為這是產品名稱。

<resources>
    <string name="app_name" translatable="false">EasyApp</string>
    <string name="action_settings">Settings</string>
    <string name="easy_app">I am a Simple App!</string>
    <string name="next_page">Next Page</string>
    <string name="second_page_message">I am the Second Page!</string>
    <string name="title_activity_second">SecondActivity</string>
</resources>

新增及刪除語言

翻譯編輯器支援 BCP 47,會將語言代碼和地區 (國家) 代碼合併為單一本地化版本。語言代碼所定義的內容比語言更精確。語言代碼包括各種國家/地區的專屬格式設定,例如日期和時間、貨幣和小數。

如要新增語言,請執行下列步驟:

  1. 在「翻譯編輯器」中按一下地球圖示
  2. 在下拉式清單中,選取您要新增的語言。

    翻譯編輯器會隨即顯示新語言,並將內含 strings.xml 檔案的「values-*」資料夾加入專案 (例如 values-es 為西班牙文)。

如要刪除語言,請執行下列步驟:

您可以在翻譯編輯器中刪除資料欄中的每個值 (請參閱「編輯、新增或刪除文字」),或者刪除該語言的專案資料夾。操作步驟如下:

  1. 在左側面板中依序點選「Project」>「Android」,再依序選取「ModuleName」>「res」
  2. 找到要刪除的語言,然後在對應的「values-*」資料夾上按一下滑鼠右鍵 (例如 values-hi 為北印度文)。
  3. 在下拉式清單中選取「Delete」,即可刪除該資料夾及其 strings.xml 檔案。

編輯、新增及刪除文字

您可以直接在 strings.xml 檔案中或透過翻譯編輯器配置文字設定。本節將說明採用翻譯編輯器的方法。在翻譯編輯器中,只要透過清單檢視畫面或翻譯編輯器底部的「Translations」欄位,即可編輯、新增或刪除文字。

圖 2. 頂端的清單檢視畫面和底部的「Translation」欄位

清單檢視

如要編輯或新增文字,請執行下列步驟:

  1. 按兩下您要編輯或新增文字的儲存格。
  2. 使用鍵盤執行複製/貼上;如果您的鍵盤支援變音符號,請直接在清單檢視畫面中輸入文字內容。
  3. 使用 Tab 鍵或將游標移出欄位外。

如要刪除文字,請執行下列步驟:

  1. 按兩下您要刪除的儲存格。
  2. 在清單檢視畫面中選取文字,然後按下 Delete 鍵。
  3. 使用 Tab 鍵或將游標移出欄位外。

翻譯欄位

如要編輯或新增文字,請執行下列步驟:

  1. 在清單檢視畫面中,按一下您要編輯或新增文字的儲存格。
  2. 在「Translation」欄位中,使用鍵盤執行複製/貼上;如果您的鍵盤支援變音符號,請直接在「Translation」欄位中輸入文字內容。
  3. 使用 Tab 鍵或將游標移出欄位外。

如要刪除文字,請執行下列步驟:

  1. 按一下您要刪除的儲存格。
  2. 在「Translation」欄位中選取文字,然後按下 Delete 鍵。

新增及刪除索引鍵

在翻譯編輯器中,「Key」資料欄會列出 strings.xml 檔案中每個資料項目的專屬 ID。您可以透過翻譯編輯器新增及刪除索引鍵。當您刪除索引鍵時,翻譯編輯器會一併刪除所有與該索引鍵相關聯的翻譯。翻譯編輯器會使用「安全刪除」重構功能來刪除索引鍵,以便您確認該索引鍵的文字是否用於其他位置,並在刪除前視需要進行調整。「安全刪除」重構功能可確保系統在您刪除索引鍵後仍可正常編譯程式碼。

如要新增索引鍵,請執行下列步驟:

  1. 翻譯編輯器中按一下「Add Key
  2. 在對話方塊中,輸入索引鍵名稱、預設值和預設 strings.xml 檔案的位置。

    圖 3. 新增索引鍵

如要刪除索引鍵,請執行下列步驟:

  1. 在翻譯編輯器中選取您要刪除的索引鍵。
  2. 按一下「Remove Keys」(移除索引鍵)圖示
  3. 在「Delete」對話方塊中,決定是否要使用安全刪除功能,以及是否要在註解和字串中進行搜尋,然後按一下「OK」。

    圖 4.「Delete」對話方塊

    如果您要刪除的索引鍵沒有任何參照項目 (使用情形),或者所有參照項目都可安全收合,系統就會刪除該索引鍵。否則,翻譯編輯器就會顯示「Usages Detected」對話方塊,提供系統偵測到的問題相關資訊。

    圖 5.「Delete」對話方塊

  4. 選取「View Usages」,即可查看即將刪除的內容。「Find Safe Delete Conflicts」對話方塊會顯示所有無法安全刪除的使用情形,以便您編輯對應的程式碼。

    圖 6. 不安全的使用情形

  5. 在某個使用情形上按一下滑鼠右鍵,並選取「Jump to Source」,就能進行必要的變更。
  6. 在「Find Safe Delete Conflicts」面板中,選取「Rerun Safe Delete」,確保沒有任何其他需要注意的使用情形。
  7. 使用情形清理完成後,按一下「Do Refactor」即可刪除索引鍵。

修正錯誤

圖 7 為翻譯編輯器顯示英文、西班牙文和法文的 strings.xml 檔案內容。紅色文字代表該行出現錯誤。

圖 7. 紅色文字代表您必須修正的錯誤狀況

如要修正錯誤,只要將游標懸停在紅色文字上,即可顯示問題說明和解決方法。

當您在翻譯編輯器中進行變更時,所屬的 strings.xml 檔案會隨著變更內容而更新。當您在 strings.xml 檔案中進行變更時,翻譯編輯器中的對應資料欄也會隨之更新。

翻譯編輯器修正內容範例:

  • 圖 7 顯示 app_name 資料列已勾選「Untranslatable」,但卻有西班牙文譯文。只要刪除西班牙文翻譯即可修正錯誤。
  • 圖 7 顯示 next_page 資料列缺少法文翻譯。只要使用鍵盤將「Page Suivante」複製到儲存格中,即可修正錯誤。鍵盤的複製貼上操作可正確將帶有變音符號的文字複製到儲存格中。

在設計編輯器中顯示譯文

如要瞭解譯文在應用程式版面配置中的顯示方式,請在設計編輯器中切換文字的預設版本和翻譯版本,操作步驟如下:

  1. 在左側面板中依序點選「Project」>「Android」,再依序選取「ModuleName」>「res」>「layout」
  2. 按兩下 content_main.xml 即可開啟該檔案進行編輯。
  3. 按一下左下角的「Design」分頁標籤,即可顯示「設計」編輯器。
  4. 在設計編輯器中,選取「Language」(語言) 下拉式清單。
  5. 選取「編輯翻譯」圖示
  6. 選取您要用來瀏覽應用程式的語言。

    圖 8. 語言下拉式清單,已選取「Spanish」(西班牙文)

設計編輯器會以選取的語言顯示應用程式版面配置 (本範例為西班牙文)。

圖 9. 設計編輯器顯示西班牙文的譯文

設定設計編輯器的預設語言

如要恢復預設語言,請依序選取「es」>「Language」(語言)圖示

圖 10. 設為預設語言

管理及測試本地化文字

Android 平台和 Android Studio 提供多種功能,可協助您管理及測試本地化的應用程式文字。您可以透過這些功能提供的相關選項,處理由右至左 (RTL) 字集 (例如阿拉伯文或希伯來文) 所產生的問題。測試本地化文字後,您就能調整使用者介面文字及其版面配置,再將訊息內容提交至來源存放區,留待稍後翻譯。

重構專案以支援由右至左 (RTL) 的字集

Android Studio 提供重構指令,可支援 TextViewConstraintLayoutLinearLayout 元素中的雙向文字,還能讓使用者編輯由左至右 (LTR) 及由右至左 (RTL) 的字集。這個指令也會針對應用程式 UI 版面配置和所有檢視畫面小工具,提供自動鏡像畫面。如要查看文字方向變更以及版面配置鏡像設定,您也必須在版面配置編輯器中設定文字和版面配置方向屬性

下列流程說明如何重構專案以支援 RTL 文字:

  1. 依序選取「Refactor」>「Add RTL support where possible」,即可開啟如圖 11 所示的對話方塊。

    圖 11. 新增 RTL 支援功能

    • 如果 AndroidManifest.xml 檔案中的 <application> 元素沒有 android:supportsRTL="true" 屬性,請勾選「Update AndroidManifest.xml」核取方塊。
    • 如果應用程式的 targetSdkVersion 為 17 以上版本,請選取「Replace Left/Right Properties with Start/End Properties」。在這個情況下,您應該使用「start」和「end」屬性,而不是「left」和「right」屬性。舉例來說,android:paddingLeft 會變為 android:paddingStart
    • 如果應用程式的 targetSdkVersion 為 16 以下版本,請選取「Generate -v17 Versions」。在這種情況下,XML 應同時使用這兩組屬性。舉例來說,XML 應同時使用 android:paddingLeftandroid:paddingStart
  2. 如要顯示「Find Refactoring Preview」視窗,請按一下「Run」。

    圖 12. 查看預覽

  3. 按一下「Do Refactor」

如要進一步瞭解如何重構專案以支援 RTL 文字,請參閱「Android 4.2 中 RTL 原生支援服務」。

文字和版面配置方向屬性

如要變更文字方向和版面配置元件,可使用右側「Properties」視窗中提供的 textDirection 屬性 (可與文字小工具搭配使用) 和 layoutDirection 屬性 (可與版面配置小工具搭配使用)。右側「Properties」視窗會列出方向屬性,適用於 API 級別 17 以上版本。

如要查看文字方向變更以及版面配置鏡像設定,您也必須重構專案才能支援 RTL 字集。在英文中,文字方向變更只會將標點符號從文字右側移至左側 (例如「Hello World!」會變成「!Hello World」)。如要查看 LTR 文字切換為 RTL 的顯示情形,您必須在應用程式中使用 RTL 語言。假設您要使用英文,並測試文字切換為 RTL 的顯示情形,請使用虛擬語言代碼。虛擬語言代碼與重構指令和方向屬性無關。

如要存取及使用方向屬性,請執行下列步驟:

  1. 版面配置編輯器中選取文字小工具。
  2. 開啟「Properties」視窗,然後搜尋您要使用的 RTL 屬性。

    如要設定屬性值,請選取下列其中一個選項:

    • firstStrong:根層級檢視畫面的預設選項。第一個特定書寫方向的字元會決定段落的閱讀方向。如果沒有特定書寫方向的字元,段落方向則根據檢視畫面設定的版面配置方向而定。
    • anyRtl:只要段落含有僅能由右至左書寫的 RTL 字元,段落方向為 RTL。如果沒有這類字元,段落方向則根據檢視畫面設定的版面配置方向而定。
    • ltr:段落方向為 LTR。
    • rtl:段落方向為 RTL。
    • locale:段落方向由系統語言代碼而定。
    • inherit:預設值。請使用父項中設定的方向。
  3. 如要查看反向文字和版面配置,請執行應用程式。

虛擬語言代碼

虛擬語言代碼是模擬的語言代碼,其用途是假設應用程式在翻譯過後會出現的 UI、版面配置、RTL 和其他翻譯問題。虛擬語言代碼可針對所有可翻譯的訊息,提供能以英文判讀的即時自動翻譯功能,因此您仍可在原始碼中擷取無法翻譯的訊息。

如要進一步瞭解如何使用虛擬語言代碼,請參閱「使用虛擬語言代碼測試應用程式」。