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

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

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

圖 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」連結。

設定不可翻譯的列

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

選取「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. 在「Translations Editor」中按一下地球圖示
  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」複製到儲存格中,即可修正錯誤。鍵盤的複製貼上操作可正確將帶有變音符號的文字複製到儲存格中。

管理及測試本地化文字

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

支援 RTL 語言

Jetpack Compose 原生支援從右到左 (RTL) 的版面配置。版面配置修飾符和 API 是以方向概念 (例如 startend) 為基礎建構而成,而非絕對方向 (例如 leftright)。當系統語言變更為 RTL 語言代碼時,Compose 會自動為您鏡像處理這些版面配置。

如要讓應用程式辨識 RTL 語言代碼並觸發鏡像功能,您必須使用應用程式的資訊清單檔案選擇啟用。

如要啟用 RTL 支援,請按照下列步驟操作:

  1. 開啟 AndroidManifest.xml 檔案。
  2. <application> 元素中新增 android:supportsRtl="true" 屬性:
<manifest ... >
    <application
        ...
        android:supportsRtl="true">
    </application>
</manifest>

如要進一步瞭解 Compose 如何處理文字版面配置、鏡像和自訂 RTL 設定,請參閱「使用 RTL 語言」。

手動設定文字方向

在 Jetpack Compose 中,您不會使用視覺化「Properties」視窗強制版面配置或文字方向。Compose 會根據系統語言代碼自動處理 RTL 鏡像。

不過,如要手動覆寫特定文字元素的方向 (例如在 RTL 版面配置中顯示 LTR 字串),可以將 TextDirection 物件傳遞至 TextStyle

支援的值包括:

如要進一步瞭解如何在 Compose 中設定文字樣式和手動設定文字方向,請參閱「設定文字樣式」。

在應用程式中使用本地化字串

使用翻譯編輯器新增及翻譯字串後,系統會自動更新所屬的 res/values/strings.xml 檔案,您可以直接在 UI 中使用本地化資源。

如要瞭解如何顯示本地化文字、以原生方式處理 RTL,以及使用 @Preview 測試不同的語言代碼和虛擬語言代碼,請參閱 Compose 的「資源」字串部分

虛擬語言代碼

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

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

其他資源

Views content