如果您想与不同国家和文化的 Android 用户建立联系,您需要本地化您的应用以支持多种语言。 这一过程从 Android 国际化 (i18n) 开始,为无缝本地化奠定了基础。
国际化您的 Android 应用意味着设计它以适应多种语言,而无需进行工程更改。 这会让您的应用对于来自其他地区或文化的用户来说感觉很熟悉,从而提高可用性并打开新市场的大门。 该过程仅需执行一次,从而节省每次后续本地化的时间和金钱。
本分步指南将引导您完成 Android 应用国际化和本地化的过程。 您将学习如何准备您的应用程序、处理动态内容以及跨各种语言和地区进行测试。
如何为 Android 应用本地化做准备
国际化为您的 Android 应用的本地化做好准备。 此过程在 Android Studio 中建立了坚实的基础,以确保您的应用支持多种语言和地区。 以下是如何开始的方法:
-
安装 Android Studio
首先下载并安装 Android Studio。 Android Studio 是 Android 的官方开发环境,提供国际化、本地化和测试应用所需的一切。
-
创建新的 Android 项目
打开Android Studio并创建一个新项目。 “空活动”模板提供了一个简单的起点。
然后,像这样配置你的项目设置:
- 名称:输入您的应用名称(例如“LocalizedApp”)。
- 包名称:使用唯一标识符,如“com.example.localizedappi18n”。
- 语言:选择 Kotlin(推荐)或 Java。
- 最低 SDK:设置您的应用支持的最低 Android 版本。
然后,确认您的选择以生成项目结构。
-
添加具有灵活布局的 UI 元素
添加 UI 元素时,设计时请考虑本地化。 德语等语言通常比英语需要更多的空间,而汉字则更紧凑。 避免为文本元素设置固定宽度,因为某些语言的较长翻译可能会超出容器大小。
考虑使用 ConstraintLayout 之类的工具,允许 UI 元素根据翻译文本的长度动态调整位置和大小。
以下是 XML 示例:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:应用程序=http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
机器人:文本=“@string/welcome_message”
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这里,TextView用于显示字符串资源(例如欢迎消息)。 通过使用wrap_content作为宽度,元素会自动调整大小以适合翻译文本的长度,而不受固定尺寸的限制。 此外,无论文本长度或屏幕尺寸如何,ConstraintLayout 都会使 TextView 在屏幕内保持正确的位置。
从一开始就创建灵活的布局可以使您的应用看起来很棒,无论它本地化为哪种语言。
-
使用外部化文本准备本地化
为 Android 应用进行本地化的准备的最后一步要求您将所有面向用户的文本存储在单独的资源文件中,而不是对其进行硬编码。 使用像 strings.xml 这样的集中资源文件, 您不需要手动替换分散在代码中的文本。
具体操作如下:
- 在您的项目目录中找到“res/values/”文件夹。
- 打开“strings.xml” 文件(如果不存在,则创建一个)。
- 使用名称-值对将文本添加到文件中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="welcome_message">欢迎使用我的应用程序!</string>
</resources>
返回activity_main.xml文件并更新 TextView 以引用字符串资源:
<TextView
机器人:文本=“@string/welcome_message”
以这种方式组织您的项目将使您的 Android 应用国际化,使您能够轻松地划分需要本地化为不同语言的内容。
如何通过 4 个步骤本地化 Android 应用
现在您已经准备好 Android 应用程序,接下来是时候逐步完成本地化过程,从设置特定于语言的资源到动态更改 Android 应用程序语言环境。
-
扩展 strings.xml 以进行本地化
在准备阶段,您创建了一个 strings.xml 文件来管理 Android 应用中的所有文本。 现在,是时候通过为每种支持的语言创建特定于语言版本的文件来扩展它了。
首先,在项目的 res 目录中为每种目标语言创建新文件夹。 使用包含适当语言代码的文件夹名称(例如,西班牙语为“res/values-es/”,法语为“res/values-fr/”)。
将默认的 strings.xml 文件复制到每个文件夹中。 然后,手动翻译每种语言的文本。 例如,默认的英文文件可能会说:
<TextView
<string name="hello_world">Hello, World!string>
西班牙语版本在“values-es/strings.xml”中 将是:
<TextView
<string name="hello_world">¡Hola, Mundo!string>
一旦您创建这些特定于语言的 XML 文件,Android 就会根据用户的设备语言设置自动选择正确版本的 strings.xml。
-
处理复数以实现准确翻译
复数比较棘手,因为每种语言对复数的处理方式都不同。 例如,在英语中“一件物品”是单数,但其他所有数字都是复数,无论是“零件物品”还是“两百件物品”。 然而,俄语、威尔士语和捷克语等语言使用基于数字的更具体的复数规则。
以下是在 strings.xml 中定义英语复数字符串的方法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="item_count">
<item quantity="one">%d item</item>
<item amount="other">%d 件商品</item>
</plurals>
</resources>
这解释了以下数量值:
- One:用于单数形式(例如,一项)。
- 其他:用于复数形式(例如,零项、两项、三项)。
英语仅要求“一”和“其他”,但其他语言有更多的分类。 为了管理这一点,Android 在 strings.xml 中提供了一个标签。 Android 支持零、一、二、少数、许多和其他标签。以下是使用每个标签的语言示例:
- 阿拉伯语对零采用了特殊的语法约定。
- 俄语对以“1”结尾的任何数字都区别对待,除非该数字以“11”结尾。
- 当有两个事物时,威尔士语会使用不同的复数形式。
- 捷克语和马耳他语等语言区分小数和大数。
- 汉语不加区分。
以下是在 Kotlin 中检索和格式化复数字符串的方法:
val 项目数 = 3
val 消息 = 资源.getQuantityString(R.plurals.item_count, 物品数量,物品数量)
在此代码中, R.plurals.item_count 是复数资源 ID。 第一个 项目数量根据设备语言环境的复数规则选择复数字符串,第二个itemCount替换%d占位符。
例如,以下是英语的输出:
- 对于 itemCount = 1: “1 件商品”
- 对于 itemCount = 3: “3 件商品”
-
使用占位符表示动态值
应用程序通常会显示个性化或动态内容,例如用户的姓名或收到的通知数量。 您无需对这些内容进行硬编码,而是可以在字符串中使用占位符,如下所示:
<resources>
<string name="welcome_message">欢迎,%1$s! 您有 %2$d 条新消息。</string>
</resources>
工作原理如下:
- %1$s 是字符串(如名称)的占位符。
- %2$d 是数字的占位符(例如消息计数)。
当应用程序运行时,这些占位符会被用户输入的值及其动态数据动态替换。
-
添加上下文提示
翻译人员并不总是知道字符串在您的应用中是如何使用的。 例如,“菜单”这样的词可能表示下拉列表、餐厅的食物列表或设置页面。 为了避免混淆,您可以直接在 strings.xml 中添加注释:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- This string is used as a label for the navigation menu →
<string name="menu_label">Menu</string>
<!-- This string is used for the settings button in the app →
<string name="settings_label">Settings</string>
</resources>
这些注释告诉翻译人员“菜单”一词是指应用程序中的导航功能,而不是餐厅菜单。
在 Android 中测试本地化
测试本地化的 Android 应用对于确保其适用于各种语言和地区至关重要。 通过在模拟器和真实设备上进行测试,您可以发现问题并为全球用户提供感觉自然且实用的应用程序。
为什么要在真实设备上测试?
真实设备可以最接近地模拟用户与您的应用的交互方式。 它们向您展示翻译后的文本在实际手机屏幕上的显示效果——是否太长或被截断。
为什么要用模拟器测试?
模拟器是在多种配置中测试应用程序的实用方法。 它们让您可以快速在语言和地区之间切换以检查翻译、布局调整和用户界面行为。
结合这两种方法,您可以在多种语言和地区保持最佳功能和用户体验。
如何使用 Smartling 进行 Android 本地化
Smartling 消除了 Android 本地化的复杂性。 Smartling 凭借人工智能工具、无缝的 Android XML 文件集成以及专业翻译团队,提供多种服务,以简化从开始到结束的整个翻译流程并实现手动工作流程的自动化。
您的企业可以利用 Smartling 的自动化系统和数据驱动的洞察力来更快地实现本地化并在全球市场保持品牌一致性,从而超越竞争对手,同时提供无与伦比的用户体验。
准备好以更聪明的方式而不是更努力地进行本地化吗? 下载我们的免费电子书“提高翻译效率的 10 种策略”。 您将学习如何通过可操作的策略和真实示例来提高翻译速度、质量和成本。
如果您想与不同国家和文化的 Android 用户建立联系,您需要本地化您的应用以支持多种语言。 这一过程从 Android 国际化 (i18n) 开始,为无缝本地化奠定了基础。
国际化您的 Android 应用意味着设计它以适应多种语言,而无需进行工程更改。 这会让您的应用对于来自其他地区或文化的用户来说感觉很熟悉,从而提高可用性并打开新市场的大门。 该过程仅需执行一次,从而节省每次后续本地化的时间和金钱。
本分步指南将引导您完成 Android 应用国际化和本地化的过程。 您将学习如何准备您的应用程序、处理动态内容以及跨各种语言和地区进行测试。
如何为 Android 应用本地化做准备
国际化为您的 Android 应用的本地化做好准备。 此过程在 Android Studio 中建立了坚实的基础,以确保您的应用支持多种语言和地区。 以下是如何开始的方法:
-
安装 Android Studio
首先下载并安装 Android Studio。 Android Studio 是 Android 的官方开发环境,提供国际化、本地化和测试应用所需的一切。
-
创建新的 Android 项目
打开Android Studio并创建一个新项目。 “空活动”模板提供了一个简单的起点。
然后,像这样配置你的项目设置:
- 名称:输入您的应用名称(例如“LocalizedApp”)。
- 包名称:使用唯一标识符,如“com.example.localizedappi18n”。
- 语言:选择 Kotlin(推荐)或 Java。
- 最低 SDK:设置您的应用支持的最低 Android 版本。
然后,确认您的选择以生成项目结构。
-
添加具有灵活布局的 UI 元素
添加 UI 元素时,设计时请考虑本地化。 德语等语言通常比英语需要更多的空间,而汉字则更紧凑。 避免为文本元素设置固定宽度,因为某些语言的较长翻译可能会超出容器大小。
考虑使用 ConstraintLayout 之类的工具,允许 UI 元素根据翻译文本的长度动态调整位置和大小。
以下是 XML 示例:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:应用程序=http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
机器人:文本=“@string/welcome_message”
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这里,TextView用于显示字符串资源(例如欢迎消息)。 通过使用wrap_content作为宽度,元素会自动调整大小以适合翻译文本的长度,而不受固定尺寸的限制。 此外,无论文本长度或屏幕尺寸如何,ConstraintLayout 都会使 TextView 在屏幕内保持正确的位置。
从一开始就创建灵活的布局可以使您的应用看起来很棒,无论它本地化为哪种语言。
-
使用外部化文本准备本地化
为 Android 应用进行本地化的准备的最后一步要求您将所有面向用户的文本存储在单独的资源文件中,而不是对其进行硬编码。 使用像 strings.xml 这样的集中资源文件, 您不需要手动替换分散在代码中的文本。
具体操作如下:
- 在您的项目目录中找到“res/values/”文件夹。
- 打开“strings.xml” 文件(如果不存在,则创建一个)。
- 使用名称-值对将文本添加到文件中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="welcome_message">欢迎使用我的应用程序!</string>
</resources>
返回activity_main.xml文件并更新 TextView 以引用字符串资源:
<TextView
机器人:文本=“@string/welcome_message”
以这种方式组织您的项目将使您的 Android 应用国际化,使您能够轻松地划分需要本地化为不同语言的内容。
如何通过 4 个步骤本地化 Android 应用
现在您已经准备好 Android 应用程序,接下来是时候逐步完成本地化过程,从设置特定于语言的资源到动态更改 Android 应用程序语言环境。
-
扩展 strings.xml 以进行本地化
在准备阶段,您创建了一个 strings.xml 文件来管理 Android 应用中的所有文本。 现在,是时候通过为每种支持的语言创建特定于语言版本的文件来扩展它了。
首先,在项目的 res 目录中为每种目标语言创建新文件夹。 使用包含适当语言代码的文件夹名称(例如,西班牙语为“res/values-es/”,法语为“res/values-fr/”)。
将默认的 strings.xml 文件复制到每个文件夹中。 然后,手动翻译每种语言的文本。 例如,默认的英文文件可能会说:
<TextView
<string name="hello_world">Hello, World!string>
西班牙语版本在“values-es/strings.xml”中 将是:
<TextView
<string name="hello_world">¡Hola, Mundo!string>
一旦您创建这些特定于语言的 XML 文件,Android 就会根据用户的设备语言设置自动选择正确版本的 strings.xml。
-
处理复数以实现准确翻译
复数比较棘手,因为每种语言对复数的处理方式都不同。 例如,在英语中“一件物品”是单数,但其他所有数字都是复数,无论是“零件物品”还是“两百件物品”。 然而,俄语、威尔士语和捷克语等语言使用基于数字的更具体的复数规则。
以下是在 strings.xml 中定义英语复数字符串的方法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="item_count">
<item quantity="one">%d item</item>
<item amount="other">%d 件商品</item>
</plurals>
</resources>
这解释了以下数量值:
- One:用于单数形式(例如,一项)。
- 其他:用于复数形式(例如,零项、两项、三项)。
英语仅要求“一”和“其他”,但其他语言有更多的分类。 为了管理这一点,Android 在 strings.xml 中提供了一个标签。 Android 支持零、一、二、少数、许多和其他标签。以下是使用每个标签的语言示例:
- 阿拉伯语对零采用了特殊的语法约定。
- 俄语对以“1”结尾的任何数字都区别对待,除非该数字以“11”结尾。
- 当有两个事物时,威尔士语会使用不同的复数形式。
- 捷克语和马耳他语等语言区分小数和大数。
- 汉语不加区分。
以下是在 Kotlin 中检索和格式化复数字符串的方法:
val 项目数 = 3
val 消息 = 资源.getQuantityString(R.plurals.item_count, 物品数量,物品数量)
在此代码中, R.plurals.item_count 是复数资源 ID。 第一个 项目数量根据设备语言环境的复数规则选择复数字符串,第二个itemCount替换%d占位符。
例如,以下是英语的输出:
- 对于 itemCount = 1: “1 件商品”
- 对于 itemCount = 3: “3 件商品”
-
使用占位符表示动态值
应用程序通常会显示个性化或动态内容,例如用户的姓名或收到的通知数量。 您无需对这些内容进行硬编码,而是可以在字符串中使用占位符,如下所示:
<resources>
<string name="welcome_message">欢迎,%1$s! 您有 %2$d 条新消息。</string>
</resources>
工作原理如下:
- %1$s 是字符串(如名称)的占位符。
- %2$d 是数字的占位符(例如消息计数)。
当应用程序运行时,这些占位符会被用户输入的值及其动态数据动态替换。
-
添加上下文提示
翻译人员并不总是知道字符串在您的应用中是如何使用的。 例如,“菜单”这样的词可能表示下拉列表、餐厅的食物列表或设置页面。 为了避免混淆,您可以直接在 strings.xml 中添加注释:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- This string is used as a label for the navigation menu →
<string name="menu_label">Menu</string>
<!-- This string is used for the settings button in the app →
<string name="settings_label">Settings</string>
</resources>
这些注释告诉翻译人员“菜单”一词是指应用程序中的导航功能,而不是餐厅菜单。
在 Android 中测试本地化
测试本地化的 Android 应用对于确保其适用于各种语言和地区至关重要。 通过在模拟器和真实设备上进行测试,您可以发现问题并为全球用户提供感觉自然且实用的应用程序。
为什么要在真实设备上测试?
真实设备可以最接近地模拟用户与您的应用的交互方式。 它们向您展示翻译后的文本在实际手机屏幕上的显示效果——是否太长或被截断。
为什么要用模拟器测试?
模拟器是在多种配置中测试应用程序的实用方法。 它们让您可以快速在语言和地区之间切换以检查翻译、布局调整和用户界面行为。
结合这两种方法,您可以在多种语言和地区保持最佳功能和用户体验。
如何使用 Smartling 进行 Android 本地化
Smartling 消除了 Android 本地化的复杂性。 Smartling 凭借人工智能工具、无缝的 Android XML 文件集成以及专业翻译团队,提供多种服务,以简化从开始到结束的整个翻译流程并实现手动工作流程的自动化。
您的企业可以利用 Smartling 的自动化系统和数据驱动的洞察力来更快地实现本地化并在全球市场保持品牌一致性,从而超越竞争对手,同时提供无与伦比的用户体验。
准备好以更聪明的方式而不是更努力地进行本地化吗? 下载我们的免费电子书“提高翻译效率的 10 种策略”。 您将学习如何通过可操作的策略和真实示例来提高翻译速度、质量和成本。
如果您想与不同国家和文化的 Android 用户建立联系,您需要本地化您的应用以支持多种语言。 这一过程从 Android 国际化 (i18n) 开始,为无缝本地化奠定了基础。
国际化您的 Android 应用意味着设计它以适应多种语言,而无需进行工程更改。 这会让您的应用对于来自其他地区或文化的用户来说感觉很熟悉,从而提高可用性并打开新市场的大门。 该过程仅需执行一次,从而节省每次后续本地化的时间和金钱。
本分步指南将引导您完成 Android 应用国际化和本地化的过程。 您将学习如何准备您的应用程序、处理动态内容以及跨各种语言和地区进行测试。
如何为 Android 应用本地化做准备
国际化为您的 Android 应用的本地化做好准备。 此过程在 Android Studio 中建立了坚实的基础,以确保您的应用支持多种语言和地区。 以下是如何开始的方法:
-
安装 Android Studio
首先下载并安装 Android Studio。 Android Studio 是 Android 的官方开发环境,提供国际化、本地化和测试应用所需的一切。
-
创建新的 Android 项目
打开Android Studio并创建一个新项目。 “空活动”模板提供了一个简单的起点。
然后,像这样配置你的项目设置:
- 名称:输入您的应用名称(例如“LocalizedApp”)。
- 包名称:使用唯一标识符,如“com.example.localizedappi18n”。
- 语言:选择 Kotlin(推荐)或 Java。
- 最低 SDK:设置您的应用支持的最低 Android 版本。
然后,确认您的选择以生成项目结构。
-
添加具有灵活布局的 UI 元素
添加 UI 元素时,设计时请考虑本地化。 德语等语言通常比英语需要更多的空间,而汉字则更紧凑。 避免为文本元素设置固定宽度,因为某些语言的较长翻译可能会超出容器大小。
考虑使用 ConstraintLayout 之类的工具,允许 UI 元素根据翻译文本的长度动态调整位置和大小。
以下是 XML 示例:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:应用程序=http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
机器人:文本=“@string/welcome_message”
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这里,TextView用于显示字符串资源(例如欢迎消息)。 通过使用wrap_content作为宽度,元素会自动调整大小以适合翻译文本的长度,而不受固定尺寸的限制。 此外,无论文本长度或屏幕尺寸如何,ConstraintLayout 都会使 TextView 在屏幕内保持正确的位置。
从一开始就创建灵活的布局可以使您的应用看起来很棒,无论它本地化为哪种语言。
-
使用外部化文本准备本地化
为 Android 应用进行本地化的准备的最后一步要求您将所有面向用户的文本存储在单独的资源文件中,而不是对其进行硬编码。 使用像 strings.xml 这样的集中资源文件, 您不需要手动替换分散在代码中的文本。
具体操作如下:
- 在您的项目目录中找到“res/values/”文件夹。
- 打开“strings.xml” 文件(如果不存在,则创建一个)。
- 使用名称-值对将文本添加到文件中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="welcome_message">欢迎使用我的应用程序!</string>
</resources>
返回activity_main.xml文件并更新 TextView 以引用字符串资源:
<TextView
机器人:文本=“@string/welcome_message”
以这种方式组织您的项目将使您的 Android 应用国际化,使您能够轻松地划分需要本地化为不同语言的内容。
如何通过 4 个步骤本地化 Android 应用
现在您已经准备好 Android 应用程序,接下来是时候逐步完成本地化过程,从设置特定于语言的资源到动态更改 Android 应用程序语言环境。
-
扩展 strings.xml 以进行本地化
在准备阶段,您创建了一个 strings.xml 文件来管理 Android 应用中的所有文本。 现在,是时候通过为每种支持的语言创建特定于语言版本的文件来扩展它了。
首先,在项目的 res 目录中为每种目标语言创建新文件夹。 使用包含适当语言代码的文件夹名称(例如,西班牙语为“res/values-es/”,法语为“res/values-fr/”)。
将默认的 strings.xml 文件复制到每个文件夹中。 然后,手动翻译每种语言的文本。 例如,默认的英文文件可能会说:
<TextView
<string name="hello_world">Hello, World!string>
西班牙语版本在“values-es/strings.xml”中 将是:
<TextView
<string name="hello_world">¡Hola, Mundo!string>
一旦您创建这些特定于语言的 XML 文件,Android 就会根据用户的设备语言设置自动选择正确版本的 strings.xml。
-
处理复数以实现准确翻译
复数比较棘手,因为每种语言对复数的处理方式都不同。 例如,在英语中“一件物品”是单数,但其他所有数字都是复数,无论是“零件物品”还是“两百件物品”。 然而,俄语、威尔士语和捷克语等语言使用基于数字的更具体的复数规则。
以下是在 strings.xml 中定义英语复数字符串的方法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="item_count">
<item quantity="one">%d item</item>
<item amount="other">%d 件商品</item>
</plurals>
</resources>
这解释了以下数量值:
- One:用于单数形式(例如,一项)。
- 其他:用于复数形式(例如,零项、两项、三项)。
英语仅要求“一”和“其他”,但其他语言有更多的分类。 为了管理这一点,Android 在 strings.xml 中提供了一个标签。 Android 支持零、一、二、少数、许多和其他标签。以下是使用每个标签的语言示例:
- 阿拉伯语对零采用了特殊的语法约定。
- 俄语对以“1”结尾的任何数字都区别对待,除非该数字以“11”结尾。
- 当有两个事物时,威尔士语会使用不同的复数形式。
- 捷克语和马耳他语等语言区分小数和大数。
- 汉语不加区分。
以下是在 Kotlin 中检索和格式化复数字符串的方法:
val 项目数 = 3
val 消息 = 资源.getQuantityString(R.plurals.item_count, 物品数量,物品数量)
在此代码中, R.plurals.item_count 是复数资源 ID。 第一个 项目数量根据设备语言环境的复数规则选择复数字符串,第二个itemCount替换%d占位符。
例如,以下是英语的输出:
- 对于 itemCount = 1: “1 件商品”
- 对于 itemCount = 3: “3 件商品”
-
使用占位符表示动态值
应用程序通常会显示个性化或动态内容,例如用户的姓名或收到的通知数量。 您无需对这些内容进行硬编码,而是可以在字符串中使用占位符,如下所示:
<resources>
<string name="welcome_message">欢迎,%1$s! 您有 %2$d 条新消息。</string>
</resources>
工作原理如下:
- %1$s 是字符串(如名称)的占位符。
- %2$d 是数字的占位符(例如消息计数)。
当应用程序运行时,这些占位符会被用户输入的值及其动态数据动态替换。
-
添加上下文提示
翻译人员并不总是知道字符串在您的应用中是如何使用的。 例如,“菜单”这样的词可能表示下拉列表、餐厅的食物列表或设置页面。 为了避免混淆,您可以直接在 strings.xml 中添加注释:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- This string is used as a label for the navigation menu →
<string name="menu_label">Menu</string>
<!-- This string is used for the settings button in the app →
<string name="settings_label">Settings</string>
</resources>
这些注释告诉翻译人员“菜单”一词是指应用程序中的导航功能,而不是餐厅菜单。
在 Android 中测试本地化
测试本地化的 Android 应用对于确保其适用于各种语言和地区至关重要。 通过在模拟器和真实设备上进行测试,您可以发现问题并为全球用户提供感觉自然且实用的应用程序。
为什么要在真实设备上测试?
真实设备可以最接近地模拟用户与您的应用的交互方式。 它们向您展示翻译后的文本在实际手机屏幕上的显示效果——是否太长或被截断。
为什么要用模拟器测试?
模拟器是在多种配置中测试应用程序的实用方法。 它们让您可以快速在语言和地区之间切换以检查翻译、布局调整和用户界面行为。
结合这两种方法,您可以在多种语言和地区保持最佳功能和用户体验。
如何使用 Smartling 进行 Android 本地化
Smartling 消除了 Android 本地化的复杂性。 Smartling 凭借人工智能工具、无缝的 Android XML 文件集成以及专业翻译团队,提供多种服务,以简化从开始到结束的整个翻译流程并实现手动工作流程的自动化。
您的企业可以利用 Smartling 的自动化系统和数据驱动的洞察力来更快地实现本地化并在全球市场保持品牌一致性,从而超越竞争对手,同时提供无与伦比的用户体验。
准备好以更聪明的方式而不是更努力地进行本地化吗? 下载我们的免费电子书“提高翻译效率的 10 种策略”。 您将学习如何通过可操作的策略和真实示例来提高翻译速度、质量和成本。
如果您想与不同国家和文化的 Android 用户建立联系,您需要本地化您的应用以支持多种语言。 这一过程从 Android 国际化 (i18n) 开始,为无缝本地化奠定了基础。
国际化您的 Android 应用意味着设计它以适应多种语言,而无需进行工程更改。 这会让您的应用对于来自其他地区或文化的用户来说感觉很熟悉,从而提高可用性并打开新市场的大门。 该过程仅需执行一次,从而节省每次后续本地化的时间和金钱。
本分步指南将引导您完成 Android 应用国际化和本地化的过程。 您将学习如何准备您的应用程序、处理动态内容以及跨各种语言和地区进行测试。
如何为 Android 应用本地化做准备
国际化为您的 Android 应用的本地化做好准备。 此过程在 Android Studio 中建立了坚实的基础,以确保您的应用支持多种语言和地区。 以下是如何开始的方法:
-
安装 Android Studio
首先下载并安装 Android Studio。 Android Studio 是 Android 的官方开发环境,提供国际化、本地化和测试应用所需的一切。
-
创建新的 Android 项目
打开Android Studio并创建一个新项目。 “空活动”模板提供了一个简单的起点。
然后,像这样配置你的项目设置:
- 名称:输入您的应用名称(例如“LocalizedApp”)。
- 包名称:使用唯一标识符,如“com.example.localizedappi18n”。
- 语言:选择 Kotlin(推荐)或 Java。
- 最低 SDK:设置您的应用支持的最低 Android 版本。
然后,确认您的选择以生成项目结构。
-
添加具有灵活布局的 UI 元素
添加 UI 元素时,设计时请考虑本地化。 德语等语言通常比英语需要更多的空间,而汉字则更紧凑。 避免为文本元素设置固定宽度,因为某些语言的较长翻译可能会超出容器大小。
考虑使用 ConstraintLayout 之类的工具,允许 UI 元素根据翻译文本的长度动态调整位置和大小。
以下是 XML 示例:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:应用程序=http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
机器人:文本=“@string/welcome_message”
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这里,TextView用于显示字符串资源(例如欢迎消息)。 通过使用wrap_content作为宽度,元素会自动调整大小以适合翻译文本的长度,而不受固定尺寸的限制。 此外,无论文本长度或屏幕尺寸如何,ConstraintLayout 都会使 TextView 在屏幕内保持正确的位置。
从一开始就创建灵活的布局可以使您的应用看起来很棒,无论它本地化为哪种语言。
-
使用外部化文本准备本地化
为 Android 应用进行本地化的准备的最后一步要求您将所有面向用户的文本存储在单独的资源文件中,而不是对其进行硬编码。 使用像 strings.xml 这样的集中资源文件, 您不需要手动替换分散在代码中的文本。
具体操作如下:
- 在您的项目目录中找到“res/values/”文件夹。
- 打开“strings.xml” 文件(如果不存在,则创建一个)。
- 使用名称-值对将文本添加到文件中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="welcome_message">欢迎使用我的应用程序!</string>
</resources>
返回activity_main.xml文件并更新 TextView 以引用字符串资源:
<TextView
机器人:文本=“@string/welcome_message”
以这种方式组织您的项目将使您的 Android 应用国际化,使您能够轻松地划分需要本地化为不同语言的内容。
如何通过 4 个步骤本地化 Android 应用
现在您已经准备好 Android 应用程序,接下来是时候逐步完成本地化过程,从设置特定于语言的资源到动态更改 Android 应用程序语言环境。
-
扩展 strings.xml 以进行本地化
在准备阶段,您创建了一个 strings.xml 文件来管理 Android 应用中的所有文本。 现在,是时候通过为每种支持的语言创建特定于语言版本的文件来扩展它了。
首先,在项目的 res 目录中为每种目标语言创建新文件夹。 使用包含适当语言代码的文件夹名称(例如,西班牙语为“res/values-es/”,法语为“res/values-fr/”)。
将默认的 strings.xml 文件复制到每个文件夹中。 然后,手动翻译每种语言的文本。 例如,默认的英文文件可能会说:
<TextView
<string name="hello_world">Hello, World!string>
西班牙语版本在“values-es/strings.xml”中 将是:
<TextView
<string name="hello_world">¡Hola, Mundo!string>
一旦您创建这些特定于语言的 XML 文件,Android 就会根据用户的设备语言设置自动选择正确版本的 strings.xml。
-
处理复数以实现准确翻译
复数比较棘手,因为每种语言对复数的处理方式都不同。 例如,在英语中“一件物品”是单数,但其他所有数字都是复数,无论是“零件物品”还是“两百件物品”。 然而,俄语、威尔士语和捷克语等语言使用基于数字的更具体的复数规则。
以下是在 strings.xml 中定义英语复数字符串的方法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="item_count">
<item quantity="one">%d item</item>
<item amount="other">%d 件商品</item>
</plurals>
</resources>
这解释了以下数量值:
- One:用于单数形式(例如,一项)。
- 其他:用于复数形式(例如,零项、两项、三项)。
英语仅要求“一”和“其他”,但其他语言有更多的分类。 为了管理这一点,Android 在 strings.xml 中提供了一个标签。 Android 支持零、一、二、少数、许多和其他标签。以下是使用每个标签的语言示例:
- 阿拉伯语对零采用了特殊的语法约定。
- 俄语对以“1”结尾的任何数字都区别对待,除非该数字以“11”结尾。
- 当有两个事物时,威尔士语会使用不同的复数形式。
- 捷克语和马耳他语等语言区分小数和大数。
- 汉语不加区分。
以下是在 Kotlin 中检索和格式化复数字符串的方法:
val 项目数 = 3
val 消息 = 资源.getQuantityString(R.plurals.item_count, 物品数量,物品数量)
在此代码中, R.plurals.item_count 是复数资源 ID。 第一个 项目数量根据设备语言环境的复数规则选择复数字符串,第二个itemCount替换%d占位符。
例如,以下是英语的输出:
- 对于 itemCount = 1: “1 件商品”
- 对于 itemCount = 3: “3 件商品”
-
使用占位符表示动态值
应用程序通常会显示个性化或动态内容,例如用户的姓名或收到的通知数量。 您无需对这些内容进行硬编码,而是可以在字符串中使用占位符,如下所示:
<resources>
<string name="welcome_message">欢迎,%1$s! 您有 %2$d 条新消息。</string>
</resources>
工作原理如下:
- %1$s 是字符串(如名称)的占位符。
- %2$d 是数字的占位符(例如消息计数)。
当应用程序运行时,这些占位符会被用户输入的值及其动态数据动态替换。
-
添加上下文提示
翻译人员并不总是知道字符串在您的应用中是如何使用的。 例如,“菜单”这样的词可能表示下拉列表、餐厅的食物列表或设置页面。 为了避免混淆,您可以直接在 strings.xml 中添加注释:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- This string is used as a label for the navigation menu →
<string name="menu_label">Menu</string>
<!-- This string is used for the settings button in the app →
<string name="settings_label">Settings</string>
</resources>
这些注释告诉翻译人员“菜单”一词是指应用程序中的导航功能,而不是餐厅菜单。
在 Android 中测试本地化
测试本地化的 Android 应用对于确保其适用于各种语言和地区至关重要。 通过在模拟器和真实设备上进行测试,您可以发现问题并为全球用户提供感觉自然且实用的应用程序。
为什么要在真实设备上测试?
真实设备可以最接近地模拟用户与您的应用的交互方式。 它们向您展示翻译后的文本在实际手机屏幕上的显示效果——是否太长或被截断。
为什么要用模拟器测试?
模拟器是在多种配置中测试应用程序的实用方法。 它们让您可以快速在语言和地区之间切换以检查翻译、布局调整和用户界面行为。
结合这两种方法,您可以在多种语言和地区保持最佳功能和用户体验。
如何使用 Smartling 进行 Android 本地化
Smartling 消除了 Android 本地化的复杂性。 Smartling 凭借人工智能工具、无缝的 Android XML 文件集成以及专业翻译团队,提供多种服务,以简化从开始到结束的整个翻译流程并实现手动工作流程的自动化。
您的企业可以利用 Smartling 的自动化系统和数据驱动的洞察力来更快地实现本地化并在全球市场保持品牌一致性,从而超越竞争对手,同时提供无与伦比的用户体验。
准备好以更聪明的方式而不是更努力地进行本地化吗? 下载我们的免费电子书“提高翻译效率的 10 种策略”。 您将学习如何通过可操作的策略和真实示例来提高翻译速度、质量和成本。
如果您想与不同国家和文化的 Android 用户建立联系,您需要本地化您的应用以支持多种语言。 这一过程从 Android 国际化 (i18n) 开始,为无缝本地化奠定了基础。
国际化您的 Android 应用意味着设计它以适应多种语言,而无需进行工程更改。 这会让您的应用对于来自其他地区或文化的用户来说感觉很熟悉,从而提高可用性并打开新市场的大门。 该过程仅需执行一次,从而节省每次后续本地化的时间和金钱。
本分步指南将引导您完成 Android 应用国际化和本地化的过程。 您将学习如何准备您的应用程序、处理动态内容以及跨各种语言和地区进行测试。
如何为 Android 应用本地化做准备
国际化为您的 Android 应用的本地化做好准备。 此过程在 Android Studio 中建立了坚实的基础,以确保您的应用支持多种语言和地区。 以下是如何开始的方法:
-
安装 Android Studio
首先下载并安装 Android Studio。 Android Studio 是 Android 的官方开发环境,提供国际化、本地化和测试应用所需的一切。
-
创建新的 Android 项目
打开Android Studio并创建一个新项目。 “空活动”模板提供了一个简单的起点。
然后,像这样配置你的项目设置:
- 名称:输入您的应用名称(例如“LocalizedApp”)。
- 包名称:使用唯一标识符,如“com.example.localizedappi18n”。
- 语言:选择 Kotlin(推荐)或 Java。
- 最低 SDK:设置您的应用支持的最低 Android 版本。
然后,确认您的选择以生成项目结构。
-
添加具有灵活布局的 UI 元素
添加 UI 元素时,设计时请考虑本地化。 德语等语言通常比英语需要更多的空间,而汉字则更紧凑。 避免为文本元素设置固定宽度,因为某些语言的较长翻译可能会超出容器大小。
考虑使用 ConstraintLayout 之类的工具,允许 UI 元素根据翻译文本的长度动态调整位置和大小。
以下是 XML 示例:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:应用程序=http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
机器人:文本=“@string/welcome_message”
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这里,TextView用于显示字符串资源(例如欢迎消息)。 通过使用wrap_content作为宽度,元素会自动调整大小以适合翻译文本的长度,而不受固定尺寸的限制。 此外,无论文本长度或屏幕尺寸如何,ConstraintLayout 都会使 TextView 在屏幕内保持正确的位置。
从一开始就创建灵活的布局可以使您的应用看起来很棒,无论它本地化为哪种语言。
-
使用外部化文本准备本地化
为 Android 应用进行本地化的准备的最后一步要求您将所有面向用户的文本存储在单独的资源文件中,而不是对其进行硬编码。 使用像 strings.xml 这样的集中资源文件, 您不需要手动替换分散在代码中的文本。
具体操作如下:
- 在您的项目目录中找到“res/values/”文件夹。
- 打开“strings.xml” 文件(如果不存在,则创建一个)。
- 使用名称-值对将文本添加到文件中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="welcome_message">欢迎使用我的应用程序!</string>
</resources>
返回activity_main.xml文件并更新 TextView 以引用字符串资源:
<TextView
机器人:文本=“@string/welcome_message”
以这种方式组织您的项目将使您的 Android 应用国际化,使您能够轻松地划分需要本地化为不同语言的内容。
如何通过 4 个步骤本地化 Android 应用
现在您已经准备好 Android 应用程序,接下来是时候逐步完成本地化过程,从设置特定于语言的资源到动态更改 Android 应用程序语言环境。
-
扩展 strings.xml 以进行本地化
在准备阶段,您创建了一个 strings.xml 文件来管理 Android 应用中的所有文本。 现在,是时候通过为每种支持的语言创建特定于语言版本的文件来扩展它了。
首先,在项目的 res 目录中为每种目标语言创建新文件夹。 使用包含适当语言代码的文件夹名称(例如,西班牙语为“res/values-es/”,法语为“res/values-fr/”)。
将默认的 strings.xml 文件复制到每个文件夹中。 然后,手动翻译每种语言的文本。 例如,默认的英文文件可能会说:
<TextView
<string name="hello_world">Hello, World!string>
西班牙语版本在“values-es/strings.xml”中 将是:
<TextView
<string name="hello_world">¡Hola, Mundo!string>
一旦您创建这些特定于语言的 XML 文件,Android 就会根据用户的设备语言设置自动选择正确版本的 strings.xml。
-
处理复数以实现准确翻译
复数比较棘手,因为每种语言对复数的处理方式都不同。 例如,在英语中“一件物品”是单数,但其他所有数字都是复数,无论是“零件物品”还是“两百件物品”。 然而,俄语、威尔士语和捷克语等语言使用基于数字的更具体的复数规则。
以下是在 strings.xml 中定义英语复数字符串的方法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="item_count">
<item quantity="one">%d item</item>
<item amount="other">%d 件商品</item>
</plurals>
</resources>
这解释了以下数量值:
- One:用于单数形式(例如,一项)。
- 其他:用于复数形式(例如,零项、两项、三项)。
英语仅要求“一”和“其他”,但其他语言有更多的分类。 为了管理这一点,Android 在 strings.xml 中提供了一个标签。 Android 支持零、一、二、少数、许多和其他标签。以下是使用每个标签的语言示例:
- 阿拉伯语对零采用了特殊的语法约定。
- 俄语对以“1”结尾的任何数字都区别对待,除非该数字以“11”结尾。
- 当有两个事物时,威尔士语会使用不同的复数形式。
- 捷克语和马耳他语等语言区分小数和大数。
- 汉语不加区分。
以下是在 Kotlin 中检索和格式化复数字符串的方法:
val 项目数 = 3
val 消息 = 资源.getQuantityString(R.plurals.item_count, 物品数量,物品数量)
在此代码中, R.plurals.item_count 是复数资源 ID。 第一个 项目数量根据设备语言环境的复数规则选择复数字符串,第二个itemCount替换%d占位符。
例如,以下是英语的输出:
- 对于 itemCount = 1: “1 件商品”
- 对于 itemCount = 3: “3 件商品”
-
使用占位符表示动态值
应用程序通常会显示个性化或动态内容,例如用户的姓名或收到的通知数量。 您无需对这些内容进行硬编码,而是可以在字符串中使用占位符,如下所示:
<resources>
<string name="welcome_message">欢迎,%1$s! 您有 %2$d 条新消息。</string>
</resources>
工作原理如下:
- %1$s 是字符串(如名称)的占位符。
- %2$d 是数字的占位符(例如消息计数)。
当应用程序运行时,这些占位符会被用户输入的值及其动态数据动态替换。
-
添加上下文提示
翻译人员并不总是知道字符串在您的应用中是如何使用的。 例如,“菜单”这样的词可能表示下拉列表、餐厅的食物列表或设置页面。 为了避免混淆,您可以直接在 strings.xml 中添加注释:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- This string is used as a label for the navigation menu →
<string name="menu_label">Menu</string>
<!-- This string is used for the settings button in the app →
<string name="settings_label">Settings</string>
</resources>
这些注释告诉翻译人员“菜单”一词是指应用程序中的导航功能,而不是餐厅菜单。
在 Android 中测试本地化
测试本地化的 Android 应用对于确保其适用于各种语言和地区至关重要。 通过在模拟器和真实设备上进行测试,您可以发现问题并为全球用户提供感觉自然且实用的应用程序。
为什么要在真实设备上测试?
真实设备可以最接近地模拟用户与您的应用的交互方式。 它们向您展示翻译后的文本在实际手机屏幕上的显示效果——是否太长或被截断。
为什么要用模拟器测试?
模拟器是在多种配置中测试应用程序的实用方法。 它们让您可以快速在语言和地区之间切换以检查翻译、布局调整和用户界面行为。
结合这两种方法,您可以在多种语言和地区保持最佳功能和用户体验。
如何使用 Smartling 进行 Android 本地化
Smartling 消除了 Android 本地化的复杂性。 Smartling 凭借人工智能工具、无缝的 Android XML 文件集成以及专业翻译团队,提供多种服务,以简化从开始到结束的整个翻译流程并实现手动工作流程的自动化。
您的企业可以利用 Smartling 的自动化系统和数据驱动的洞察力来更快地实现本地化并在全球市场保持品牌一致性,从而超越竞争对手,同时提供无与伦比的用户体验。
准备好以更聪明的方式而不是更努力地进行本地化吗? 下载我们的免费电子书“提高翻译效率的 10 种策略”。 您将学习如何通过可操作的策略和真实示例来提高翻译速度、质量和成本。
标签: 网站和 Web 应用程序 博客