Android Studio 的 Translations Editor工具
前一小節(jié)我們介紹了如何使用 Resource Manager 管理界面資源,本小結(jié)我們學(xué)習(xí)如何使用 Translations Editor 處理字符串多語(yǔ)言翻譯。
1. 多語(yǔ)言支持
Android 應(yīng)用可以包含特定于文化的字符串,這些字符串將轉(zhuǎn)換為當(dāng)前語(yǔ)言區(qū)域的語(yǔ)言。Android 會(huì)根據(jù)系統(tǒng)語(yǔ)言區(qū)域設(shè)置來(lái)解析特定于語(yǔ)言和文化的資源。我們可以使用 Android 項(xiàng)目中的資源目錄為不同的語(yǔ)言區(qū)域提供支持,我們可以提供適合用戶(hù)的語(yǔ)言和文化的任何資源類(lèi)型。
例如,以下圖片顯示了一個(gè)應(yīng)用,它按設(shè)備的默認(rèn) (en_US) 語(yǔ)言區(qū)域和西班牙語(yǔ) (es_ES) 語(yǔ)言區(qū)域顯示字符串和可繪制資源。
要添加對(duì)更多語(yǔ)言區(qū)域的支持,我們需要在 res/ 內(nèi)創(chuàng)建額外的目錄。每個(gè)目錄的名稱(chēng)都應(yīng)遵循以下格式:
<resource type>-b+<language code>[+<country code>]
例如,values-es-rUS/ 包含適用于語(yǔ)言代碼為 es 的語(yǔ)言區(qū)域的字符串資源,Android 在運(yùn)行時(shí)根據(jù)設(shè)備的語(yǔ)言區(qū)域設(shè)置加載適當(dāng)?shù)馁Y源。
例如:
FirstApp/
res/
values/
strings.xml
values-es-rUS/
strings.xml
- 英語(yǔ)字符串(默認(rèn)語(yǔ)言區(qū)域),/values/strings.xml:
<resources>
<string name="hello_world">Hello World!</string>
</resources>
- 西班牙語(yǔ)字符串(語(yǔ)言區(qū)域?yàn)?es),/values-es-rUS/strings.xml:
<resources>
<string name="hello_world">?Hola Mundo!</string>
</resources>
2. Translations Editor
Translations Editor 提供了一個(gè)合并的可修改字符串資源的視圖,方便我們查看所有默認(rèn)和已翻譯的字符串資源。
2.1 打開(kāi) Translations Editor
從 Android 視圖打開(kāi)
-
在左側(cè)的 Project > Android 面板中,依次選擇 ModuleName > res > values;
-
右鍵點(diǎn)擊 strings.xml 文件,然后選擇 Open Translations Editor。
從 strings.xml 中打開(kāi)
我們可以從任一 strings.xml 文件中訪問(wèn) Translations Editor。
-
在左側(cè)的 Project > Android 面板中,依次選擇 ModuleName > res > values;
-
雙擊 strings.xml 將其打開(kāi),以供修改;
-
在 strings.xml 中,點(diǎn)擊右上角的 Open editor 鏈接。
從 Design Editor 中打開(kāi)
我們可以從 Layout Editor 的 Design Editor 中打開(kāi) Translations Editor,以修改默認(rèn)譯文,使其更好地匹配我們的布局。
-
在左側(cè)的 Project > Android 面板中,依次選擇 ModuleName > res > layout;
-
雙擊 activity_main.xml 以將其打開(kāi)進(jìn)行修改;
-
點(diǎn)擊左下角的 Design 標(biāo)簽頁(yè)以顯示 Design Editor;
-
在 Design Editor 中,選擇 Language 下拉列表;
-
選擇 Edit Translations 圖標(biāo) 。
2.2 添加和刪除語(yǔ)言
ranslations Editor 支持 BCP 47,并會(huì)將語(yǔ)言區(qū)域和區(qū)域(國(guó)家/地區(qū))代碼合并到一個(gè)目標(biāo)本地化選擇中。 語(yǔ)言區(qū)域不僅定義了語(yǔ)言,還包含日期和時(shí)間、貨幣和小數(shù)等內(nèi)容的國(guó)家/地區(qū)相關(guān)格式。要添加語(yǔ)言,請(qǐng)執(zhí)行以下操作:
-
在 Translations Editor 中,點(diǎn)擊地球圖標(biāo);
-
從下拉列表中選擇要添加的語(yǔ)言。
Translations Editor 中會(huì)顯示新語(yǔ)言,并且包含 strings.xml 文件的 values-* 文件夾會(huì)添加到項(xiàng)目中。例如,values-es 表示西班牙語(yǔ)。
要?jiǎng)h除語(yǔ)言,請(qǐng)執(zhí)行以下操作:
我們可以在 Translations Editor 中刪除相應(yīng)列中的每個(gè)值來(lái)刪除對(duì)應(yīng)的語(yǔ)言,也可以刪除該語(yǔ)言對(duì)應(yīng)的項(xiàng)目文件夾,如下所示:
-
在左側(cè)的 Project > Android 面板中,依次選擇 ModuleName > res;
-
右鍵點(diǎn)擊要?jiǎng)h除的語(yǔ)言對(duì)應(yīng)的 values-* 文件夾。例如,values-hi 表示印地語(yǔ);
-
從下拉列表中,選擇 Delete 以刪除該文件夾及其 strings.xml 文件。
2.3 添加和刪除鍵
在 Translations Editor 中,Key 列列出了 strings.xml 文件中每個(gè)數(shù)據(jù)項(xiàng)的唯一標(biāo)識(shí)符。我們可以通過(guò) Translations Editor 添加和刪除鍵。當(dāng)我們刪除鍵時(shí),Translations Editor 會(huì)刪除該鍵及其所有相關(guān)翻譯。Translations Editor 會(huì)使用安全刪除重構(gòu)來(lái)刪除鍵,以便我們知曉該鍵文本是否用在別處,并且可以在刪除該鍵之前進(jìn)行必要的調(diào)整。安全刪除重構(gòu)可確保我們?cè)趧h除鍵后仍然可以編譯代碼。
要添加鍵,請(qǐng)執(zhí)行以下操作:
-
在 Translations Editor 中,點(diǎn)擊 Add Key (加號(hào)圖標(biāo));
-
在對(duì)話框中,輸入鍵名稱(chēng)、默認(rèn)值以及默認(rèn) strings.xml 文件的位置。
要?jiǎng)h除鍵,請(qǐng)執(zhí)行以下操作:
-
在 Translations Editor 中,選擇要?jiǎng)h除的鍵;
-
點(diǎn)擊 Remove Keys (減號(hào)圖標(biāo)) ;
-
在 Delete 對(duì)話框中,確定我們是否要執(zhí)行安全刪除以及是否要在注釋和字符串中進(jìn)行搜索,然后點(diǎn)擊 OK ;
如果沒(méi)有任何對(duì)已刪除鍵的引用(使用),或者所有引用均能安全地解除,則刪除該鍵。否則,Translations Editor 會(huì)顯示 Usages Detected 對(duì)話框,其中包含檢測(cè)到的問(wèn)題的相關(guān)信息。
- 選擇 View Usages,以查看將被刪除的內(nèi)容。Find Safe Delete Conflicts 對(duì)話框顯示了無(wú)法安全刪除的所有用例,以便我們可以修改相應(yīng)的代碼;
-
右鍵點(diǎn)擊相應(yīng)用例以顯示上下文菜單,然后選擇 Jump to Source 以進(jìn)行所需的更改;
-
在 Find Safe Delete Conflicts 面板中,選擇 Rerun Safe Delete 以確保沒(méi)有任何其他需要注意的使用情況;
-
清理相關(guān)使用情況后,點(diǎn)擊 Do Refactor 以刪除鍵。
2.4 修改、添加和刪除文本
在 Translations Editor 中,我們可以通過(guò)列表視圖或通過(guò) Translations Editor 底部的 Translation 字段來(lái)修改、添加或刪除文本。
Tips:列表視圖位于頂部,Translation 字段位于底部。
2.4.1 列表視圖
要修改或添加文本,請(qǐng)執(zhí)行以下操作:
-
雙擊要修改或添加文本的單元格;
-
使用鍵盤(pán)復(fù)制粘貼文本;如果我們的鍵盤(pán)支持輸入變音符號(hào),則直接在列表視圖中輸入文本;
-
按 Tab 鍵或?qū)⒐鈽?biāo)移出字段。
要?jiǎng)h除文本,請(qǐng)執(zhí)行以下操作:
-
雙擊要?jiǎng)h除的單元格;
-
在列表視圖中,選擇相應(yīng)文本并按 Delete 鍵;
-
按 Tab 鍵或?qū)⒐鈽?biāo)移出字段。
2.4.2 Translation 字段
要修改或添加文本,請(qǐng)執(zhí)行以下操作:
-
在列表視圖中,點(diǎn)擊要修改或添加文本的單元格;
-
在 Translation 字段中,使用鍵盤(pán)復(fù)制粘貼文本;如果我們的鍵盤(pán)支持輸入變音符號(hào),則直接在 Translation 中輸入文本;
-
按 Tab 鍵或?qū)⒐鈽?biāo)移出字段。
要?jiǎng)h除文本,請(qǐng)執(zhí)行以下操作:
-
點(diǎn)擊一下要?jiǎng)h除的單元格;
-
在 Translation 字段中,選擇相應(yīng)文本并按 Delete 鍵。
2.5 配置不可翻譯的行
在 Translations Editor 中,我們可以選擇 Unstranslatable 以指示不想翻譯此行中的文本。我們不想翻譯的文本可能是特定于產(chǎn)品的文本(如商品名稱(chēng)和商標(biāo)),或者是沒(méi)有譯文的技術(shù)術(shù)語(yǔ)。
當(dāng)我們選中 Untranslatable 后,默認(rèn) strings.xml 文件中的對(duì)應(yīng)行會(huì)添加 translatable=“false”。在以下示例中,頂部行中的 FirstApp 未翻譯,因?yàn)樗钱a(chǎn)品名稱(chēng)。
<resources>
<string name="app_name" translatable="false">FirstApp</string>
</resources>
3. 顯示預(yù)覽
要查看譯文在應(yīng)用布局中的顯示效果,可以在 Design Editor 中切換默認(rèn)版和翻譯版文本,如下所示:
-
在左側(cè)的 Project > Android 面板中,依次選擇 ModuleName > res > layout。
-
雙擊 activity_main.xml 以將其打開(kāi)進(jìn)行修改。
-
點(diǎn)擊左下角的 Design 標(biāo)簽頁(yè)以顯示 Design Editor。
-
在 Design Editor 中,選擇 Language 下拉列表。
-
選擇要以何種語(yǔ)言查看應(yīng)用。
4. 小結(jié)
本節(jié)課程我們主要學(xué)習(xí)了使用 Translations Editor 工具進(jìn)行字符串多語(yǔ)言支持。本節(jié)課程的重點(diǎn)如下:
- 掌握 Android 如何支持多語(yǔ)言;
- 掌握 Translations Editor 編輯字符串多語(yǔ)言翻譯。