本文将重点介绍软件的本地化和国际化。它将提供一些关于最佳做法的指导,以及应该避免的事情。如果您还没有阅读我之前介绍本地化和国际化的博客文章,可以在这里阅读。
最佳实践
开始早
不要写你的应用程序,然后重写它国际化。为自己节省一些时间,从一开始就计划好。让项目经理了解这一点,并确保为所有目标地区完成规范研究。如果您需要获得利益相关者的批准,请解释国际化在市场扩展和用户体验方面的好处。这意味着更多的销售,因为有更多的潜在客户。如果做不到这一点,那就写一个示例应用程序或制作一个用另一种语言编写的原型,并告诉他们使用它。
灵活的布局
如前一篇文章所述,文本长度因语言而异。这里有两个主要选项:
- 根据需要调整每个区域设置的布局。
- 留出足够的空间以适合所有目标语言。您可以在输入字段上方放置标签以提供更多空间,如果需要在同一行上,则可以在输入前面右对齐文本。
支持非英语输入
并非所有语言都使用A-Z字母表。确保您的应用程序支持非英语字符。例如,存在字母上方带有重音符号的字符,并且还存在需要多次击键来输入一个字符 (IME输入) 的语言。确保对目标语言的支持是开发要求,并尽早进行测试。
Unicode编码
曾经看到一个消息显示为所有 “?” 或块 ([])?很可能页面编码不正确。建议在文件中使用Unicode (UTF-8) 编码。在某些应用程序中,默认是ANSI或基于您所在地区的其他编码,因此请务必检查!
区域性特定格式
数字,日期,时间,货币,甚至日历可以有不同的格式。例如,某些文化使用 “.” 将数千与数百分开。许多人会使用不同的货币符号。大多数文化使用军事 (24小时) 时间,而不是 “AM” 和 “PM” 的12小时。日期差别很大。欧洲的通用格式是日/月/年,日本是年/月/日。甚至还有不同类型的日历,例如日本的帝国日历和以色列的希伯来日历,它们都在政府中使用。
允许从右到左
如果您的目标区域设置之一使用从右到左的布局,请确保您的UI占。
母语审查
让一位母语人士审查本地化的应用程序。这将有助于捕获遗漏的任何国际化或本地化问题,并检查本地化产品是否有意义且可用。如果您对本地化有任何疑问,现在是时候提出并获得反馈了。
要避免
硬编码文本
为了确保应用程序正确国际化,您可以用占位符替换所有文本和适用的图像 (如Lorem Ipsum用于文本和示例图像),然后在早期状态提供它进行测试。如果他们发现不是占位符的东西,或者占位符内容不能正常工作,那么你就没有完全国际化。这是很容易做到,如果你的字符串 (和其他资源在必要时) 外部化到单独的文件 (如.NET中的.resx)。然后,您可以简单地使用占位符内容创建文件的副本,并使用应用的区域设置进行测试。这样,您就不会丢失任何真实的内容,并且当它通过测试时,您可以在内部进行本地化或将其外包给语言供应商。例如,您可能在代码隐藏中有一个字符串相等性检查,该检查仅适用于默认区域设置。最好早点抓住这些东西。
攻击性内容
不同的文化会对事物做出不同的解释。颜色和符号有不同的含义。还有文化敏感性,例如战争历史和领土争端。您可以自定义内容以适应目标区域性。
文本在图像
如果可能的话,不要把文本放在图像中。这样,图像可以被重用的机会更高。如果你需要文本,你可以用图像覆盖它,这样图像就不必改变。
连接字符串
语言之间的语序是不同的。不要指望它是一样的,否则你会得到难以理解的翻译。例如,给定一个名为 “favoriteColor” 的字符串变量,像 [“我最喜欢的颜色是” favoriteColor] 这样的句子在所有语言中都不起作用。颜色词不会总是出现在句子的末尾。这里可以使用字符串插值作为替代方法,以便可以在翻译中移动占位符,并且很明显附加了一些内容。这将变成 [“我最喜欢的颜色是 {0}”],所以 {0} 可以移动到句子中需要它的任何地方。
空间布局
切勿在标签中使用额外的空格来调整文本的显示位置。请改用文本对齐属性。空格不会达到预期结果的原因是不同语言之间的文本长度不同,并且根据试验和错误来确定每种语言需要多少空格会令人沮丧。这也可能因操作系统或浏览器默认字体设置而异。
令人困惑的内容
使您的内容易于理解。如果你使用语言供应商,你想让他们的工作变得容易,以便最终产品是高质量的。在内容中使用俚语或缩写会增加误解的风险,并可能导致本地化不良。如果存在需要缩写的空间限制,则可以修改设计,或者应该在外部化内容中留下注释以解释该限制。此外,如果有模棱两可的话,留下评论来解释用法。例如,单词 “last” 可以是动词 (“to remain”) 、表示 “final” 的形容词或表示 “previous” 的形容词。如果您的应用程序中有一个只有这个词的标签,最好在标签中澄清它,或者在资源文件中留下注释。</p