全球化最佳实践






4.74/5 (12投票s)
本文讨论了应用程序全球化的问题和全球化最佳实践。
引言
本文讨论了应用程序全球化的问题和全球化最佳实践。
大多数应用程序在开发时只考虑一种语言,但随着应用程序的发展以及在其他文化中的机会增加,应用程序需要部署或被不同地区使用。
如果应用程序从未考虑过全球化,那么将其打造成世界一流的产品可能会非常昂贵;这种成本通常体现在本地化和测试所需的工作量上。
因此,重要的是应用程序的设计和开发方式能够使其在需要时更容易进行本地化。
当然,全球化应用程序意味着大量的规划和决策,但如果我们能够将本地化应用程序时的一些实践与从未考虑过本地化的应用程序开发相结合,就不会有太大区别;这些实践将使应用程序在计划和实现实际本地化时所需的工作量大大减少。
基本本地化
以下部分描述了一些基本本地化实践,这些实践应从应用程序开发的第 1 天起就遵守。
显示给用户的文本应外部化到一个单独的资源文件中,从而将消息与实际代码分开。程序需要时会从资源文件中读取文本。
避免连接字符串来形成消息;给定一组单词,一个句子可以用不同的方式在不同的语言中形成。如果您需要连接不同的字符串来形成一个短语或句子,请将整个字符串移到带有占位符的资源文件中,占位符可以动态替换为正确的字符串。这使翻译人员能够自由地交换占位符以在不同语言中形成正确的字符串。
同样重要的是要注意,代码中发现的任何不显示给用户的字符串都应移到常量字段中;这使得未来的程序员可以清楚地知道这不是需要翻译的内容。
日期、时间和数字应以当前区域设置的格式显示;为此,应在格式化数据、时间和数字时考虑当前区域设置。如果这些类型(日期、时间或数字)中的任何一种以文本文件或数据库的形式存储以供将来使用,则应以不变形式存储。最常见的方法是,当用户输入这些类型中的任何一种时,将其转换为默认区域设置(en-US)并存储在数据存储(文本文件、数据库等)中。当然,在对这些类型进行计算时,应使用其不变形式。当需要显示以不变形式存储的这些类型时,会检索它们,并使用当前区域设置将其转换为当前用户的格式。
同样值得注意的是,一个文本在不同的上下文中可能意味着不同的东西;因此,当在程序中使用相同的文本并在不同上下文中出现时,创建多个副本非常重要。
避免在应用程序中使用包含文本的图像和图标。本地化它们成本高昂,因为需要为每种语言创建单独的图像。如果需要使用图像,请对其进行符号化,并在鼠标悬停在图像上时显示工具提示(这将是本地化的)。
将出现在用户面前的所有文本都基于客户端区域设置是一个好主意;不要显示直接从服务(如果是 Web 服务等)发送的消息;设计您的服务,使其告知您要显示的消息。但是,如果服务考虑了当前的客户端区域设置,显示来自服务中的消息是可以的,但应尽可能选择前一种方法。
未处理的异常消息或写入日志的消息不应本地化;这使开发人员能够在不知道应用程序运行的当前区域设置语言的情况下灵活地排除应用程序中的问题。
当应用程序中使用第三方 UI 组件时,请务必检查该组件是否支持本地化,如果支持,是否支持您正在本地化应用程序的语言。
本地化后
许多 GUI 开发项目面临的一个问题是,当应用程序运行时,实际翻译的语言会弄乱 UI。
主要问题之一是当某个控件的文本超出宽度时。一种解决方法是让控件,尤其是标签和复选框,能够随着文本自动增长。在某些语言中,短语可能需要比其他语言多 50-75% 的空间。
避免将文本字段和标签水平放置;这会带来问题,因为在一种语言中,文本会超出文本字段或标签的宽度,而您需要增加文本字段或标签的大小。如果这些控件是水平放置的,您可能需要添加滚动条来适应所有水平放置的控件。这可能无法给 UI 带来完全相同的外观。因此,最好设计您的 UI 布局,使控件垂直放置而不是水平放置。
应用程序全球化周期的主要阶段之一是翻译验证测试。在此阶段,测试人员将验证 UI 中的翻译文本,因为 UI 布局会因每种语言而异。通常,如果 UI 布局能够最好地适应大多数语言,那么它将更具成本效益。如果这样做,那么 UI 布局就必须为每种语言进行调整。
因此,在控件之间留出足够的空间以便文本可以增长是一个最佳实践。文本框和标签的大小也应增加(如果未设置自动调整大小),以便其他语言的文本可以平均容纳。
多语言支持
重要的是要注意,正在开发的应用程序应完全支持 Unicode。
实现 Unicode 支持可让您无需担心应用程序运行的平台的语言和代码页支持。Unicode 可以支持世界上大多数语言,因此支持 Unicode 的应用程序可以处理和显示这些语言中的任何一种字符。
考虑实现多语言用户界面。如果您将用户界面设计为以默认 UI 语言打开,并提供更改为其他语言的选项,那么同一台计算机上使用不同语言的用户可以减少与软件配置相关的停机时间。这在比利时等拥有多种文化/区域设置和官方语言的地区可能是一种特别有用的策略。
许多应用程序会持久化应用程序的 UI 设置。一个例子是网格中列的宽度,或者应用程序显示初始屏幕时的状态,是最小化还是最大化。
如果应用程序内置支持运行时不同的语言,即,如果用户能够在启动应用程序时更改区域设置,那么存储在设置文件中的任何值都应以不变形式(en-US)存储,以便 UI 可以使用这些设置优雅地恢复。
伪翻译
伪翻译是使用占位符文本测试软件应用程序全球化的过程。
在此过程中,需要外部化的文本已存在于资源文件中;这些文件中的文本用于为不同语言生成占位符文本。接下来,在适当的区域设置下,在这些伪翻译的资源文件之上运行应用程序。
然后,测试开始;显示默认语言的文本未外部化,即它们不在资源文件中,需要将它们移到相应的资源文件中并拉入程序。伪翻译测试还会显示控件中重叠的文本。请注意,当实际翻译的应用程序运行时,文本可能不会重叠,因此会尽最大努力来分隔控件并增加标签、复选框等的宽度。
应用程序的功能也会得到测试。这里最常见的事情之一是,一部分字符串被翻译了,而它不应该被翻译。有时很难注意到这一点,但通过一套完整的测试用例可以轻松发现它们。
在某些情况下,如果测试人员可以在实际 UI 测试翻译之前开始测试 UI,从而消除测试人员等待实际翻译的应用程序到达的延迟,那么这将具有成本效益。
伪翻译对于评估未考虑全球化而开发的应用程序的全球化可行性是值得的;可以识别潜在问题,从而得出更好的估算。
市场上有一些可用的伪翻译工具。有些工具倾向于使用占位符值翻译文本。在这种情况下,它在重叠文本和控件方面不准确,但如果工具能够将文本翻译到目标语言并达到一定的准确度,这将带来更好的结果。
摘要
总之,应用程序的全球化涉及大量的规划;然而,大多数已开发的应用程序并未考虑全球化。
本文描述了应用程序实际本地化时遇到的一些问题,以及通过从一开始就遵守一些最佳实践来克服这些问题的方法,这样当应用程序将来全球化时,就可以以更少的工作量和最低的成本完成。