使用 Translations Editor 本地化界面

Translations Editor 提供了一个合并的可修改视图,方便您查看所有默认和已翻译的字符串资源

有关将应用翻译成不同语言的说明,请参阅支持不同的语言和文化

图 1. 显示翻译前的应用文本的 Translations Editor

字符串资源

项目的字符串资源包含在 strings.xml 文件中。您的项目有一个默认的 strings.xml 文件,其中包含采用应用默认语言(即您预计大多数应用用户都会使用的语言)的字符串资源。您还可以拥有一些经过翻译的 strings.xml 文件,其中包含您希望应用支持的其他语言的字符串资源。

完成默认的 strings.xml 文件后,您可以自己添加译文,也可以付费请专业服务提供翻译。 无论采用哪种方式,您都应该利用 Android Studio 功能帮助您管理和测试可本地化的文本。如需了解专业翻译服务,请参阅翻译服务

打开 Translations Editor

您可以从 Android Studio 中的以下位置访问 Translations Editor。

从 Android 视图打开

  1. 在左侧的 Project > Android 面板中,依次选择 ModuleName > res > values
  2. 右键点击 strings.xml 文件,然后选择 Open Translations Editor

    Translations Editor 会显示 strings.xml 文件中的键值对。

    注意:当您翻译完 strings.xml 文件后,项目会有多个对应的 values 文件夹,文件夹名称带有表示语言的后缀,例如 values-es 表示西班牙语。默认 strings.xml 文件始终位于 values(无后缀)文件夹中。

图 1 显示了在翻译工作完成之前一个简单应用在 Translations Editor 中的默认应用文本(在本例中为英语)。翻译后的 strings.xml 文件的内容将显示在 Untranslatable 列的右侧,每种语言一列,如图 2 所示。

从 strings.xml 中打开

您可以从任一 strings.xml 文件中访问 Translations Editor

  1. 在左侧的 Project > Android 面板中,依次选择 ModuleName > res > values
  2. 双击 strings.xml 将其打开,以供修改。
  3. strings.xml 中,点击右上角的 Open editor 链接。

配置不可翻译的行

Translations 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>

添加和删除语言

Translations Editor 支持 BCP 47,并将语言区域和区域(国家/地区)代码组合到一个目标本地化选择中。语言区域不仅定义了语言,语言区域还包含日期和时间、货币和小数等内容的国家/地区相关格式。

如需添加语言,请执行以下操作:

  1. Translations Editor 中,点击地球图标
  2. 从下拉列表中选择要添加的语言。 Translations Editor 中会显示新语言,并且包含 `strings.xml` 文件的 values-* 文件夹会添加到项目中。例如,values-es 表示西班牙语。

如要删除语言,请执行以下操作:

您可以在 Translations Editor 中删除相应列中的每个值来删除对应的语言(请参阅修改、添加和删除文本),也可以删除该语言对应的项目文件夹,如下所示:

  1. 在左侧的 Project > Android 面板中,依次选择 ModuleName > res
  2. 右键点击要删除的语言对应的 values-* 文件夹。例如,values-hi 表示印地语。
  3. 从列表中,选择 Delete 以删除该文件夹及其 strings.xml 文件。

修改、添加和删除文本

您可以直接在 strings.xml 文件中或通过 Translations Editor 对文本设置执行操作。本部分介绍了 Translations Editor 方法。在 Translations Editor 中,您可以通过列表视图或通过 Translations Editor 底部的 Translation 字段来修改、添加或删除文本。

图 2. 顶部的列表视图以及底部的 Translation 字段

列表视图

如要修改或添加文本,请执行以下操作:

  1. 双击要修改或添加文本的单元格。
  2. 使用键盘复制粘贴文本;或者,如果您的键盘支持输入变音符号,可直接在列表视图中输入文本。
  3. Tab 键或将光标移出字段。

如要删除文本,请执行以下操作:

  1. 双击要删除的单元格。
  2. 在列表视图中,选择相应文本并按 Delete 键。
  3. Tab 键或将光标移出字段。

“Translation”字段

如要修改或添加文本,请执行以下操作:

  1. 在列表视图中,点击要修改或添加文本的单元格。
  2. Translation 字段中,使用键盘复制粘贴文本;或者,如果您的键盘支持输入变音符号,可直接在 Translation 中输入文本。
  3. Tab 键或将光标移出字段。

如要删除文本,请执行以下操作:

  1. 点击一下要删除的单元格。
  2. Translation 字段中,选择相应文本并按 Delete 键。

添加和删除键

在 Translations Editor 中,Key 列列出了 strings.xml 文件中每个数据项的唯一标识符。您可以通过 Translations Editor 添加和删除键。当您删除键时,Translations Editor 会删除该键及其所有相关翻译。Translations Editor 会使用安全删除重构来删除键,以便您知晓该键文本是否用在别处,并且可以在删除该键之前进行必要的调整。安全删除重构可确保您在删除键后仍然可以编译代码。

如要添加键,请执行以下操作:

  1. Translations Editor 中,点击 Add Key 图标
  2. 在对话框中,输入键名称、默认值以及默认 strings.xml 文件的位置。

    图 3. 添加键

如要删除键,请执行以下操作:

  1. 在 Translations Editor 中,选择要删除的键。
  2. 点击 Remove Keys 图标
  3. Delete 对话框中,确定您是否要执行安全删除以及是否要在注释和字符串中进行搜索,然后点击 OK

    图 4. “Delete”对话框

    如果没有任何对已删除键的引用(使用),或者所有引用均能安全地解除,则删除该键。否则,Translations Editor 会显示 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 所示的 Translations Editor 显示了英语、法语和西班牙语 strings.xml 文件的内容。红色文本表示有错误的行。

图 7. 红色文本表示您必须修正的错误情况

如要更正错误,请将鼠标悬停在红色文本上,以显示问题的说明及其解决方法。

当您在 Translations Editor 中进行更改时,底层的 strings.xml 文件会根据您所做的更改而更新。当您在 strings.xml 文件中进行更改时,Translations Editor 中的相应列会根据您所做的更改而更新。

Translations Editor 更正示例:

  • 图 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. android:supportsRtl="true" 属性添加到 <application> 元素中:
<manifest ... >
    <application
        ...
        android:supportsRtl="true">
    </application>
</manifest>

如需详细了解 Compose 如何处理文本布局、镜像和自定义 RTL 配置,请参阅使用 RTL 语言

手动设置文字方向

在 Jetpack Compose 中,您不会使用可视化“属性”窗口来强制设置布局或文字方向。Compose 会根据系统语言区域自动处理 RTL 镜像。

不过,如果您需要手动替换特定文本元素的方向(例如,在 RTL 布局中显示 LTR 字符串),可以将 TextDirection 对象传递到 TextStyle 中。

支持的值包括:

如需详细了解如何在 Compose 中设置文本样式和配置手动文本方向,请参阅设置文本样式

在应用中使用本地化字符串

使用 Translations Editor 添加并翻译字符串后,底层的 res/values/strings.xml 文件会自动更新,您可以直接在界面中使用本地化资源。

如需了解如何显示本地化文本、以原生方式处理 RTL 以及使用 @Preview 测试不同的语言区域和伪语言区域,请参阅“Compose 中的资源”的字符串部分

伪语言区域

伪语言区域是一种模拟语言区域,旨在呈现在翻译应用时会导致出现界面、布局、RTL 和其他翻译问题的语言特征。伪语言区域为所有可本地化的消息提供可用英语表达的即时自动翻译。这样,您就可以捕获源代码中无法翻译的消息。

如需了解如何使用伪语言区域,请参阅使用伪语言区域测试应用

其他资源

查看内容