还没读过第一部分?看看这里!
通过区域设置和语言资源文件进行级联
本地化资源放置在限定符反映语言(可能反映本地化区域设置)的文件夹中。文件夹名称格式是值 -<语言>或值 -<语言区域代码>。
- 此实例中的”语言”是语言 ISO 代码,如法语的”fr”。
- “区域代码”是可选的区域代码,前面是”r”(小写 r),例如:法语使用的 fr-rFR 或加拿大法语的 fr-rCA。
Android 根据设备区域设置选择应用程序在启动时所需的资源文件。如果没有特定于区域设置的资源,将检查下一级资源,最后将检查使用的默认资源(如果不是其他合适的资源)。
例如,假设区域设置是瑞士法语,但不存在”fr-rCH”文件夹或资源(无 res/value-fr-rCH/strings.xml 等)。然后,Android 将检查”fr”文件夹(res/value-fr/strings.xml 等),最后检查默认文件夹(如果需要(res/值/字符串.xml),以获取要显示的资源的版本。
避免对文本或其他资源进行硬编码
从一开始就将文本资源放在默认字符串.xml 文件中,避免了在应用中硬编码文本资源时遇到的困难。 使用 strings.xml 文件极大地方便了修改、更新和应用本地化。这也意味着翻译版本(来自适当的子目录)可以使用,而无需重新编译应用的代码。出于同样的原因,生成图像时使用的文本应放置在 strings.xml 文件中。然后,将以相同的方式正确生成本地化的图像。
使字符串.xml 易于翻译
请记住,生成本地化文本的译员可能只能看到您的 strings.xml 文件,而不知道你的应用及其用途。因此,请提前考虑,并在 string.xml 文件中包括有关每个字符串上下文的信息。这对用于按钮的简短文本尤其重要,例如,英语中的”清晰”等一个词可以对应于另一种语言中的两个完全不同的单词(”透明”或”删除”中为”透明”中)。上下文信息甚至可以帮助您在以后处理其他项目后返回文本字符串时更有效地管理文本字符串。
指示不翻译的内容
字符串还可以包含不应翻译的文本,如代码、值占位符、特殊符号或专有名词。这些文本必须指示给译员,以便不更改它们请注意,使用 id 属性向读者解释占位符的用途和示例属性,以显示如何使用占位符的字符串的显示方式。
<string name="availability"> <xliff:g id="quantity" example="4 widgets">%1$s</xliff:g>in stock </string>
使用 Java 和事件
如果应用使用日期、时间、数字、货币或其他与区域设置相关的参数,请使用 Android 系统提供正确的特定于区域设置的格式。与文本字符串一样,任何尝试对这些实体的使用进行硬编码都必然对区域设置做出假设,从而在用户将其 Android 设备更改为其他区域设置时迅速导致问题。即使其他区域设置版本的微小缺陷也会给用户留下对应用印象不佳的印象,降低销售和采用率。例如,如果数字的英文格式使用句点 (.) 作为十进制分隔符,则法语格式使用逗号 (,),但当显示错误的分隔符时,差异立即对本机用户显而易见。
Android 提供了多个实用程序,可帮助您跨区域设置正确设置格式,例如:
- 日期日期和日期格式的日期。
- 字符串.格式()或数字和货币的十进制格式。
- 电话号码的电话号码。
安卓辅助本地化复数
特定于区域设置的复数使用也可能很复杂。考虑英语的基本规则,即使用数量为 1(”1 产品”)的单数,使用与其他数量(”n 产品”,包括”0 产品”)的复数。其他语言定义更多案例,并有更多的规则。例如,俄语具有特定的复数格式,不仅”一”和”其他”如英语,而且”少数”和”多”,共提供了四种不同的格式。Android 支持的全套复数格式为零、一、二、少数、多等。Android 方法”getQuantityString()”会贯穿复杂性,以选择要用于给定语言/区域设置和给定数量的复数格式。
处理屏幕布局
通常,要处理的布局越少越好。单一的响应式设计可自动适应不同的设备,使生活更加简单。但是,在某些情况下,用户界面可能无法正确显示 Android 应用本地化的文本。一个简单的示例是使用英语的默认版本中带有”现在”字样的短标签或菜单项,其中法语中的等效单词为”Maintenant”(是该词的三倍多)。一个选项是为该特殊情况创建一个替代布局,并将其存储在具有相应资源限定符的位置。另一方面,这是管理、检查和更新应用未来版本的其他资源一个选项不是定义一个全新的布局,而是根据所使用的语言包括要由代码显示或不显示的字段。另一种可能是使主布局包含具有与语言相关的字段的辅助布局。
将资源文件保持在合理的最小值
出于需要付出的努力和可管理性的原因,将正在使用的资源文件量降至最低是有意义的。当然,条件是不会降低用户体验。在用于用户输入的窗体的上面示例中,可能不需要创建全新的布局。在其他情况下,在 res/layout/main.xml 文件中定义的一个布局可能足以满足任何区域设置。
类似的注释适用于文本字符串。虽然用户应始终看到完全本地化的版本,但某些区域差异可能在很大程度上重叠。例如,美国和英国英语有一些差异,但在许多其他情况下,它们是相同的。应用可以使用美国英语作为其默认语言,美国英语词汇在res/value/strings.xml文件中。对于英国英语词汇对于英国应用用户很重要的某些短语,可以创建一个较小的文件(res/value en-rGB/strings.xml),仅包含那些不同的字符串。对于任何其他字符串,应用程序将默认返回 res/value/strings.xml 文件和(相同)美国英语等效项。
获取文件翻译
您可以确定 strings.xml 文件的质量,包括其准确性、组织以及任何必要的翻译人员说明。自动翻译软件不太可能给出足够好的结果,因为无法理解您的解释(请记住我们上面关于翻译”清除”一词的不同可能性的示例)。但是,对于人工翻译人员,解释可以帮助避免许多查询或误解。最好将术语列表添加到翻译器的包中,以解释应用中使用的特定术语或行话,以便译员不必猜测。
应用商店关键字
请记住,要翻译应用描述,用于 Google Play 等应用商店。另一方面,用于帮助用户查找你的应用和促进其使用或销售的关键字是另一回事。关键字不仅依赖于语言,还依赖于市场。与有关国家或相关市场的SEO专业人士合作可能更有意义,他们将找到在此背景下最有效的关键字。这些可能与默认语言版本中使用的关键字的翻译版本不同(无论翻译多么好。
检查翻译
将本地化文件退回给您时,请检查翻译以确保所有相关内容已翻译,并且任何其他内容(未翻译)已保持不变
现在测试应用程序是否支持每个区域设置,检查以下项的正确管理,其中包括:
- 动态文本的格式,如数字和日期。
- 处理单词中断、标点符号和字母排序。
- 回退到默认资源。
- 以横向和纵向模式显示。
如果可能,并且在任何情况下都强烈建议您让本地主讲人对应用程序进行彻底审核,并给出反馈。
伪本地化作为进一步检查
使用伪本地化来检查布局和显示,例如,通过生成 strings.xml 版本,其中文本为故意不敏感和/或默认文本长两倍的资源。这些伪本地化技术使查看应用本地化中是否遗漏了任何字符串(这些字符串仍正常显示)它们还有助于查看任何本地化文本在按钮、标题和标签等受限区域中是否可能耗尽空间。
应用商店注意事项
成功完成所有必要的检查后,是时候对应用进行签名,进行最终生成,然后向用户提供本地化应用。例如,在谷歌播放中:
- 选择本地化应用的语言。
- 上传 .apk 文件。
- 添加商店列表页面和 AdWords 广告系列的翻译。如果用户的语言首选项与您选择的语言匹配,则用户将看到应用的翻译版本。添加任何促销图形和视频的本地化版本。如有必要,可以为不同的区域设置创建不同的版本,从而链接到应用支持的每种语言的相关本地化视频。
之后,冲洗并重复新的本地化
正确国际化应用最大的好处是,每个应用本地化都相对简单。您可以翻译新语言或区域设置的资源文件,检查这些文件,并将其包含在适当命名的文件夹中的应用中(并在应用商店中更新应用列表信息)。国际化和本地化技术也可以更进一步。例如,Android 为尚未作为应用本地化的一部分处理的区域设置选择最佳资源文件夹的方式更加复杂。尽管如此,本指南已经为您提供了您应该知道的有关 Android 应用程序的国际化和本地化的基本信息。随着Android解决方案国际市场的不断增长,我们祝愿您在满足您所选择市场的用户方面取得成功。