超越本地化:面向全球受众的软件






4.89/5 (85投票s)
面向全球发布软件远远不止本地化。本文将涵盖文化、图形、文本间距等方面。
引言
本文旨在探讨如何超越本地化,为真正意义上的全球受众发布软件。大多数开发者认为,仅仅通过翻译和本地化文本就可以实现这一点,但事实并非如此。本文不包含源代码,也不涉及软件本地化的技术层面。相反,它关注的是流程以及如何为团队和软件的必要变更做好准备。软件全球化包括适应语言、方言、习俗、文化问题、货币问题、时间、日期、格式和度量标准。
本地化英语
即使是英语中的“本地化”一词本身也存在本地化问题。在美式英语中,它拼写为 localiZation,而在英式英语中,它拼写为 LocaliSation。本地化只有这两个变体,但英语的其他方面在各种英语变体中也存在差异,包括加拿大、美国、英国、澳大利亚、新西兰、加勒比地区等。诚然,这些差异足够接近,以至于任何形式的英语使用者都能理解其他变体,除非是在边缘情况,但是除了拼写之外,还有其他方面可能导致错误和误解。此外,如果您打算针对英语世界的特定国家,将软件本地化到该版本的英语和习俗,可以为您提供比竞争对手更强的竞争优势。在某些情况下,监管问题可能会使某些更改成为强制性的。想象一下用英语编写的软件,只支持以美元作为货币。这在美国、加拿大、澳大利亚以及新西兰都能正常工作。但在英国和爱尔兰,您的软件将遇到问题,因为它们分别使用英镑和欧元。然后是公制系统,除了美国和少数加勒比国家之外,所有英语国家都已将其标准化。
我最初在2005年左右的一些会议演讲中写下了上面这段话。在2014年的一次修订中,正如我的观点一样,CodeProject向我展示了这一点。
我不确定是应该将我的文章发送给CodeProject的管理员,还是感谢他们提供的额外演示。
自动翻译
令我惊讶的是,开发者们经常告诉我,自动翻译可以用来本地化他们的软件、网页和文档。每一次,他们都自信地告诉我,技术已经准备就绪。截至本文撰写之时,事实并非如此。自动翻译适用于最终用户别无选择,想自己翻译某些内容时,或者可以作为手动翻译的基础。
此外,并非所有语言都相等。例如,在西欧的罗曼语系之间翻译比从意大利语翻译成俄语要容易得多。但即使在较简单的情况下,自动翻译器仍然不够好。我注意到,例如,谷歌翻译可以将英语翻译成俄语,但微软提供的产品不能。当我询问原因时,我被告知微软的开发人员认为俄语过于复杂,无法做到正确,并且他们对他们能够产生的翻译结果不满意。谷歌确实翻译了,并且在紧急情况下很有用,但翻译非常奇怪,并且常常令人发笑。我经常使用谷歌将中文翻译成英文,结果更加有趣。
事实上,翻译引擎甚至无法将英语翻译成英语。
如果自动翻译器像我被告知的那样好,那么它们应该能够将英语翻译成俄语,然后再翻译回英语,至少产生合理的结果。让我们试试看。以下是一些来自我网站上关于我一次会议的引述文本。
让我们把它翻译成俄语。
现在,让我们把它们给我们的文本再翻译回英语。
谷歌翻译给了我们
其中一些是可以理解的,但显然很奇怪。其他部分,比如最后一句,即使是我这个原作者也无法理解。
自动翻译器在具有多种含义的单词方面存在严重问题。在俄语中,“亲爱的”和“昂贵的”是同一个词。因此,将“My Dear Love”从俄语翻译成英语,通常会被翻译成“Me Expensive Love”,这当然可能相当冒犯而不是亲切。尽管在许多情况下,这可能会增加一些无法言说的真实性。
以下是另一个例子。英语是正确的,但法语很可能就是从英语翻译过来的,而英语又很可能是我猜测的中文翻译过来的。在英语中,“oil”可以指烹饪和调味油,也可以指我们汽车用的机油。法语翻译应该使用“L'huile”,但却使用了“Le Petrole”,这是石油形式的油。所以法语标签大致翻译为“纯芝麻机油”。美味!
检查任何翻译的输出也至关重要。看下面的例子。有人显然将文本输入到翻译器中,然后得到了英文。但因为他们不懂英语,所以他们不知道它说了什么,并认为它是正确的。
我曾经在阿拉伯语方面遇到过类似的问题。我当时正在做一个项目,客户的代码页与服务器不同,导致出现乱码。但由于我不会读阿拉伯语,直到几周后才有人指出程序显示的是乱码。我能识别阿拉伯语,但自己无法验证,便认为它是正确的。与其说“对我来说都是希腊语”,不如说“对我来说都是阿拉伯语”。
同样重要的是检查是否所有单词都已被翻译。自动翻译可能会遗漏它无法处理的单词。
使用母语者
我也见过许多由源语言的母语者执行的翻译,而不是目标语言。虽然这在某些情况下可能成功,但通常会有问题,除非该人已经使用目标语言多年并在说该语言的国家生活过。通常,最好使用目标语言的母语者。这样的人比使用目标语言的人更有可能在需要时询问有关源语言的问题。
拼写检查
拼写检查非常重要,自动工具和语法检查工具都非常出色。但是,它们无法也无法捕获所有内容,所以不要过度依赖它们。
在某些情况下,这可能非常重要。拼写长期以来一直是个问题。请注意,在下一张图片中,他们在底部的标志上正确拼写了这个词,但上面的标志却没有。 **提示:如果您不知道上面标志上的词是什么意思,请不要谷歌搜索。** 请听我的建议。您已被警告。
图片中的文本
自动工具可用于从应用程序和网页中提取文本进行翻译。但是,这些工具会遗漏嵌入在图像中的文本。以下是一些来自 Microsoft Arabia 网站的例子,其中遗漏了图像中的文本。
免费60天试用肯定应该被翻译。
翻译例外
尽管我们一直关注细节以查找所有文本,但有些情况下文本不应被翻译。品牌是常见的例外。有些品牌非常有名,最好直接保留。
技术术语是另一个例外。技术术语通常需要新词,并且是在英语中创建的。其他语言然后简单地导入英语化版本作为新词。
在这个俄语示例中,我们看到了几个样本和变体。
- IP-Сети - 这是一个混合词,一半英语,一半俄语。或者正如我常说的,俄式英语。IP是英语,而Сети(网络)是俄语。所以最终结果是 IP Network。
- веб-интерфейсов - Web Interface。веб本身不是一个真正的俄语单词,而是英语单词 web 的语音对应词。它现在已被直接接受到俄语中,但仅用于计算机术语。E-mail 是一个以类似方式被许多语言语音输入的词。
- Plug-In - 尽管俄语世界对英语的熟练程度相当低,但对英语字母和发音的熟悉程度却很广泛。有些词经常保留其原始的英语拼写。在 Plug-In 这样的情况下,经常可以同时找到两种形式。以英文字母表示,或以俄文字母表示。
此示例还包括许多(Powered by, Worldwide 等)被遗漏且应被翻译的项目。
品牌也可以翻译,通常是通过语音翻译。这确实是品牌所有者需要做出的决定。
并非所有语言都支持相同的发音,因此本地化品牌名称可能会带来一些挑战。例如,俄语的字母和发音在英语中没有等价物,反之亦然。俄语没有 W 的发音,希腊语没有 P 的发音。在俄语和希腊语中,这些发音可以通过组合字母来近似,但它们并不相同。俄语在需要 W 音时会用 V 音代替。所以“web”变成“veb”。
如果您的品牌很小或不为人所知,最好将其语音化翻译。然而,仅仅因为它很大甚至可能广为人知,并不一定是不翻译它的理由。例如,Subway(食品连锁店)通常在其品牌中使用本地语言。大多数大品牌都不这样做,包括 Microsoft、Oracle、IBM 等。但至少有一个值得注意的例外,它会翻译其品牌名称。
语言选择器
人们可能会认为选择语言非常容易。但遗憾的是,事实并非如此,而且经常很难切换到自己的语言。我甚至曾经遇到过一个网站,它将所有语言名称都翻译成了当地语言。语言选择器绝对不应被翻译。想象一下,您来到一个阿拉伯语网页,却需要找到 الإنجليزية 来切换到英语! الإنجليزية 实际上是阿拉伯语中“英语”的意思,但当然英语使用者不知道。
大多数用户知道他们语言的英文名称,但并非总是如此。这是 Apple 网站的一个旧版本。
这是我网站之一的语言选择器。尽管它在英语页面上,但每种语言都用自己的语言书写,以便希望更改语言的读者能够快速识别。
双语列表也是可以接受的。
有人说使用国旗比使用文字更好。其想法是,国旗比一堆文字更容易找到;然而,一般来说,使用国旗是个糟糕的主意。
在瑞士,有四种官方语言,加拿大有两种。那么,瑞士国旗或加拿大国旗代表哪种语言?为什么英国人要点击美国国旗来表示英语,或者西班牙人要点击墨西哥国旗?虽然这不是严重的冒犯,但在许多情况下,这会造成不舒服的文化感受。
国旗应保留给本地内容,而不是语言选择。例如,如果您有一个区分英国和美国的网站以用于营销和联系目的,那么国旗实际上非常合适。Apple 更新后的网站以可接受的方式使用了国旗。Apple 定位特定国家/地区,并有多种语言的国旗。
请注意,加拿大、瑞士和波多黎各的国旗出现了不止一次。这不仅允许选择本地内容,还允许选择语言。另请注意,语言实际上是用它们自己的语言写成的,例如,西班牙语没有列为 Spanish,而是 Español。
另一种选择是显示语言的 ISO 代码,例如 [en] [ru]。但是,我不推荐这些,因为如果您的受众包括非技术人员,则这些不那么容易理解。
哪个方向?
许多开发人员只接触过从左到右的欧洲语言。当然,俄语和希腊语可能看起来很奇怪,但我们知道它们只是不同的字母,而且规则是一样的。但是,如果加入阿拉伯语和东亚语言,就需要考虑很多问题。大多数开发人员根本不知道如何处理亚洲语言,并认为阿拉伯语与俄语相同(即字符不同),只是它是从右到左而不是从左到右。如果真那么简单,事情就会容易得多。但情况并非如此简单。
每个人都熟悉从左到右 (LTR),这是欧洲和其他语言使用的。
从右到左 (RTL) 被阿拉伯语、波斯语、乌尔都语和希伯来语使用。RTL 本质上就是其字面意思,是 LTR 的反面。
许多东亚语言,如中文,是从上到下 (TTB) 的。然而,大多数人认为 TTB 之后是 LTR,如图所示。
这是不正确的,TTB 语言实际上是首先 TTB,其次是 RTL。
现在您对书写语言的方向都了解了,对吗?还不完全。当语言或语言的字符混合在一起时,情况会变得更加复杂。因为英语中的许多单词(如品牌)不会被翻译,所以混合语言非常普遍,尤其是在技术领域。
看看这个例子。它主要是阿拉伯语,但“kudzu”一词保留了英语。注意标点符号(如标题中的“?”)的位置和方向。
如果文本只是显示,则没有问题。但是,如果文本是可编辑的,或者可能存在插入符号用于选择和移动,则会发生意外情况。光标将向左移动通过阿拉伯语文本,要向左移动,实际上会使用右箭头键。当插入符号到达“kudzu”一词时,它会跳过该词到“k”,然后开始向右移动,直到到达“u”。在“u”之后,插入符号将再次跳过该词,但不会跳到“k”而是移动到“k”前面的阿拉伯字母。
如果文本混合,通常可以自动检测到 LTR 部分嵌入在 RTL 语言中。但是,它也会影响标点符号和对齐。考虑一下这个存在于阿拉伯语页面上的 LTR 文本。
请注意,它是右对齐的,并且标点符号出现在左侧而不是右侧。
它还会严重影响引号。当引号被 LTR 文本包围时,它会正确显示,但当引号位于行首或行尾时,它会遵循 RTL 规则。
“.NET”一词变为“NET.”
为避免此类问题,必须专门标记 LTR 文本的每个部分,以便以我们期望的方式处理。对于 WPF 和 HTML,可以使用 span 和其他包围标签。对于 WinForms 等技术,情况会复杂得多。
拉丁字符集
拉丁字符集是最熟悉的,因为欧洲语言的使用者众多以及英语的主导地位。英语由26个字母组成,但像德语这样的语言有几个英语没有的字母。但这些额外的字母很少,并且通常很容易被英语使用者理解。
拉丁字符集如图所示,分布广泛。
让我们看一些 Windows 中常见的屏幕,比较两种基于拉丁字母的语言:英语和波兰语。
你注意到什么不同了吗?这是开发者在拉丁字符集之间进行本地化时经常忘记的事情。其他语言的单词可能更短或更长,因此必须处理额外的空间或流程调整。看看波兰语的“Help and Support”的例子。它比相应的英语单词长了很多。Windows 在许多地方通过为非英语语言添加空白来处理这个问题,正如波兰语屏幕中大量的空白所示。
西里尔字母
西里尔字母是俄语和乌克兰语使用的字符集。通常,其机制与拉丁字符集相同,但字符外观不同。尽管如此,西里尔字母和拉丁字母中都存在一些字符。例如,英语和俄语都有字母 P,但发音不同。在俄语中,字母 P 的发音相当于英语的 R。
在 Unicode 之前,每种西里尔语都有几种代码页,并且经常出现问题。通常,如今我们生活在 Unicode 时代,处理西里尔语变得容易多了。
西里尔字母虽然不像拉丁字母那样普遍,但其普及程度远超人们的预期,这主要是因为俄罗斯的地域广阔以及前苏联的影响。
俄语字母表看起来像这样,有33个字母。第一行和第三行是印刷体,第二行和第四行是手写体。
请注意,有一个字母看起来像两个英文字母 bI。它实际上是俄语中的一个字母。
让我们来看看前面看到的英语和波兰语屏幕,这次是俄语。
Greek
希腊语与西里尔字母分开,尽管它与西里尔字母共享大量的字母。这是因为西里尔字母是以希腊语为基础的。
希腊语和西里尔字母都有对方没有的字符。许多共享字母的发音不同。就像 P 字母在俄语和英语中不同一样,共享字符在希腊语和俄语之间的发音也可能不同。在俄语中,H 发音像英语的 N,但在希腊语中,它类似于 I 或 E。
希腊字母表看起来像这样,有24个字母。
鉴于希腊语和西里尔字母之间极端的相似性,我没有捕捉希腊语屏幕进行比较。没有冒犯之意。我精通希腊字母,并且可以阅读标志和菜单,因为我在塞浦路斯生活了多年。但我俄语接近流利,并且我的机器上已经安装了俄语。
东亚
到目前为止一切都还算顺利。现在我们进入了大多数开发者害怕的领域。东亚语言虽然重要,并且越来越重要。就国内生产总值而言,您知道前三大国家是哪个吗?您可能知道第一个,但我敢打赌您不知道后两个。根据国际货币基金组织的数据,2010年,按顺序计算,它们是美国、中国和日本。其中两个使用东亚语言,并且是巨大的市场。日本和中国非常接近,一些来源将它们的位置互换,但所有主要来源都同意这三个是前三名。
我们已经讨论了东亚语言的第一个主要区别。东亚语言通常是从上到下,然后从左到右。
嗯,至少是传统的。1955年,中国正式改为从左到右,台湾于2004年跟进。然而,这些是官方日期,而在台湾,在2004年之前,从左到右是很普遍的。
东亚字符比其他字符集复杂得多。不是几十个字符,而是成千上万个。要看到这种细节,字符必须更大。但由于整个单词是用一个或最多几个字符组成的,所以显示东亚语言所需的宽度要小得多。然而,必须预留更多的垂直空间。可以这样想。
拉丁/西里尔/希腊:xxxx xxx xxxxxx xx xxxxxx xxxx
东亚:XX XX XX XX
其中 XX 是一个东亚字符。
让我们再次看看 Windows 屏幕,这次是东亚语言。
Japanese
日语变得更加复杂。我们都知道日语有一种像中文一样的东亚文字系统,事实上,日语的文字系统是基于中文的,尽管这两种语言是独立的。同样的情况也发生在俄语与希腊语之间。俄语和日语最初都只是口语,它们的书写系统是从其他不相关的语言借用的。
大多数人可能会感到惊讶的是,日语实际上有四种书写系统,并且它们都常用。此外,其中一种是基于拉丁字母的。
汉字是大多数人在想到日语时会想到的字符。它们是从中国改编而来的,对于一个两种语言都不懂的人来说,它们看起来可能无法区分。事实上,日语中的“汉字”字面意思就是“中国文字”。日语中“汉字”的汉字与中文中的相同。
平假名和片假名非常相似。罗马字基于拉丁字母。
典型的日语是汉字、平假名和片假名的混合。罗马字使用最少,但仍然重要。这是一则真实的日本报纸标题。
在一个标题中,同时使用了汉字、平假名、片假名和罗马字。
排序
当只有几十个字母时,排序非常简单。但是当有成千上万个字符时怎么办?或者当有混合字符集时?或者混合语言时?
有些语言有基于上下文的排序。这意味着排序方法取决于项目的类型或呈现方式。
对于这种情况有一些规则,但它们相当复杂。所以我们到此为止。不要编写自己的排序例程。尽可能使用 .NET、Java 中可用或通过操作系统 API 可用的 Unicode 排序。对于数据库,请依赖数据库提供的排序。
RTL 语言
最常见的从右到左的语言是波斯语/波斯语、阿拉伯语、乌尔都语和希伯来语。以下是每种语言的一些样本:
人们通常认为只需将文字“向后”书写即可,这就是本地化为 LTR 语言所需的一切。事实上,这是使其可用的最低限度,但要做好,还需要做更多。让我们再次看看 Windows 屏幕,这次是一个 LTR 语言。
还注意到其他不同之处吗?你应该。开始菜单在右侧,桌面上的图标也是如此。
请注意,窗格已反转,图标相对于文本的位置也是如此。为了更有趣,看看右上角的“前进”和“后退”按钮。猜猜哪个是哪个。
请注意最小化、最大化和关闭按钮的位置。还请注意滚动条的位置,并考虑水平滚动条的功能。
请注意按钮、选项卡和组合框的下拉箭头对齐方式。
现在让我们来看几个 LTR 的例子。
请注意,级联菜单向左打开。
这是一个有趣的例子。这是我网站英文版的标题。
现在看看阿拉伯语版本。
请注意,为了保持正确的观感,我也必须反转叶子图像。
最后再举一个例子。
其他 LTR 语言
除了欧洲语言,还有许多其他 LTR 语言。印地语在许多人看来与 RTL 脚本相似,但它实际上是一种 LTR 语言。印地语也有几种不同的书写系统,如日语,而且实际上是世界第五大口语。
印地语和乌尔都语是两种独立的语言,但它们足够接近,以至于说印地语和乌尔都语的人通常可以进行对话。但印地语是 LTR 语言,而乌尔都语是 RTL 语言。
打印
纸张尺寸有很多种。
在日常使用中,美国只使用 Letter 和 Legal 尺寸。然而,欧洲和世界大部分地区使用 A4。A4 看起来与美国 Letter 尺寸相同,但 A4 实际上略有不同。
A4 纸的宽度略宽,但长度也长得多。这会影响任何打印输出,应妥善处理并根据地区默认。
重要事实
以下是按组划分的语言。我意识到文章中的图例太小而无法阅读,但分组仍然可以看到。
以下是按发言人数排名的十大口语语言。
许多人可能会惊讶地发现英语排在第四位,甚至阿拉伯语也超过了它。当然,拥有电脑的人的比例是一个重要因素,但随着电脑越来越便宜以及市场的兴起,这些语言将变得更加重要。
复数
那么,有什么大不了的呢?复数很容易。1个男孩,2个男孩。加个 -s,对吧?哦,当然,有一些例外,但我们可以处理它们。在大多数西欧语言中,复数形式非常简单,但在其他语言中,情况可能会变得非常复杂。
在英语中,复数通常是在大多数单词后面添加 -s、-es 或 -ies。
一只牛
两只牛
但我们还必须考虑零。这似乎很奇怪,但在英语中,它可以是以下任何一种:
- 没有牛。
- 没有牛。
- 有0头牛。
当然还有例外,尤其是在动物方面。幸运的是,除非您从事农业软件业务,否则您很可能不会遇到大多数这些情况。
一只鹅
两只鹅
没有鹅
但即使有例外,情况仍然不那么简单。
一只驼鹿
但当你有两只时会是什么?两只驼鹿?两只驼鹿?仍然是驼鹿。两只驼鹿。
所以我们最终得到的结果是
考虑到例外情况在英语中不是规则,您通常可以使用一些基本规则。
- 检查例外列表。1 个人,0 / 2+ 个人。
- 如果单词以 -y 结尾,则更改结尾。1 目录,0 / 2+ 目录。
- 如果单词以 -x 结尾,则添加 -es。1 盒,0 / 2+ 盒。
- 如果没有匹配项,则添加 -s。1 头牛,0 / 2+ 头牛。
还有一些规则,但你应该明白了。许多欧洲语言也可以用类似的方式处理。
但还有一点很重要。英语只有两种变体。有一个表示数量为1的词,以及一个表示多于一个或零的词。
- 数量 1
- 变体 1
- 数量 2
- 变体 2
- 数量 >= 3
- 变体 3
阿拉伯语区分三个类别。所以说3头牛与说2头牛不同。
事实上,这种区分在许多语言中都很常见,数量2被视为您可能在英语中想到的“一对”。因此,在构建规则和查找表时,最好将这些变体分解为类别。
- 一
- 少数
- 许多
为什么?为什么不简单地像阿拉伯语那样将它们分组为1、2和3+?对于英语,您可以将少数和许多视为相同,对于阿拉伯语,您可以简单地说一 = 1,少数 = 2,许多 = 3+。但并非所有语言都如此。例如,有些语言的看法是这样的。
- 一 = 1
- 少数 = 2 至 5
- 许多 = 5+
但实际上,即使是我到目前为止所描述的也并非完全准确,我这样做只是为了更容易地一步一步地引导您。实际上情况变得更加复杂,并且有超过三种变体。
阿拉伯语
请注意,许多是11到99,但103到110又变成少数。这是因为“主要”计数是基于个位数。
俄语
罗马尼亚语
在英语中,只有名词,有时还有动词需要复数化。但在其他语言中并非如此。改变数量会影响形容词、动词,甚至副词。
在英语中,它有时会影响现在时态的动词。请看以下内容。
- 正在复制1个文件
- 正在复制2个文件
- 已复制1个文件
- 已复制2个文件
- 1头牛走
- 2头牛走
现在考虑加上形容词。
- 1只大牛在走
- 2只大牛在走
在英语中,形容词“big”保持不变。然而,在许多欧洲罗曼语和斯拉夫语中,形容词也必须根据数量进行更改。在一些斯拉夫语中,它有时也会影响副词。
- 1只大牛快速地走
- 2只大牛快速地走
在这些情况下,big、cow 和 quickly 都需要根据数量进行更改。
复数格式
切勿拼接,始终格式化。
错误
- “我复制了” + x + “个文件到” + y + “个文件夹。”
问题在于,在不同的语言中,y 可能需要放在 x 之前。例如,“In 4 folders, I copied 8 files.”(在4个文件夹中,我复制了8个文件。)在英语中,第二种形式听起来有点奇怪,但它是可以接受的。但在某些语言中,可能只有一种形式可用。另外,请记住要考虑文本长度的可变性,如前所述。
方言
在大多数情况下,本地化到特定方言是不值得的。然而,这样做可以为您提供竞争优势,如果您专门针对某个国家,这可能很重要。此外,如果您将拼写检查等功能包含到您的软件中,那么您最好支持方言。
不同的方言会让用户感到不舒服或陌生。意思也可能被误解,有时会发生混淆。
让我们从美式英语和英式英语的一个简单例子开始。一个英国人和一个美国人当然可以轻松地进行对话,阅读对方的书籍,观看对方的电影。毕竟,两种方言都是英语。
除了发音之外,最显著的区别之一是拼写。以下是一些例子。
美式英语 | 英式英语 |
颜色 | 颜色 |
剧院 | 剧院 |
轮胎 | 轮胎 |
本地化 | 本地化 |
飞机 | 飞机 |
铝 | 铝 |
支票 (n) | 支票 |
注册 | 注册 |
目录 | 目录 |
老化 | 老化 |
阅读另一种方言是完全可能的,但它通常感觉像一个“言语的痒”,你想去挠,并且可能会分心。由于美式英语的普遍性,其他人已经习惯了阅读美式英语。因为我住在几个说英语的国家,我也学会了忽略它。但在写作时,我写出了相当多的混合语,并且发现我绝对必须使用拼写检查器来保持一致性。
然而,单词的含义常常不同,有时甚至是截然相反的。
在其他情况下,单个物品有不同的词。
汇丰银行围绕“汇丰银行:全球本地银行”的主题制作了一些非常有趣的广告。例如,“tart”一词在美式英语和英式英语之间差异很大,并在一个广告中使用,广告中一个儿子带了一个穿着暴露的女人回家见父母,母亲问“Tart?”同时递给她一盘小果冻饼干。在现代美式英语中,“tart”不是一个常用词,除了“pop tarts”之外,或者表示一种酸味的东西,但它可以表示一种饼干。但在英式英语中,它相当于妓女。(汇丰银行广告1,汇丰银行广告2)
英语不仅仅限于美国和英国。还有许多其他方言,包括加拿大、澳大利亚、新西兰、加勒比、印度、菲律宾、非洲和南非。即使在美国,也存在一些超越发音的细微方言。尽管有有线电视和互联网,它们正在逐渐减少,但它们仍然存在一点点。新英格兰地区的奶昔可能与其他地区不同。苏打水可以是 pop 或 Coke。在美国南部,“a Coke”通常用来指任何碳酸甜味饮料。而在美国南部,“tea”的含义显然不同。
方言当然不限于英语。德语、法语和西班牙语也都有方言。汉语有普通话和粤语,有些人认为它们几乎是不同的语言。加拿大法语与法国法语有很大不同,西班牙语在南美与西班牙(卡斯蒂利亚语)的用法不同。
日期
7/6 是哪个月的哪一天?美国人会回答 7 月 6 日,而世界大部分地区会回答 6 月 7 日。加拿大人不知道(稍后会详细介绍)。我知道很多程序,包括旧版本的 Quicken,如果系统日期格式设置为美国标准以外的任何内容,都会在启动时崩溃。网站经常要求输入日期,但又不指定格式,让你猜测。更糟的是,允许 JavaScript 使用客户端设置,而服务器使用服务器设置,这会导致严重问题。有时软件甚至会硬编码自己的日期格式,然后与用户设置冲突。
让我们来看一下显示2008年11月24日的各种方法。
或者加拿大,它在国内也存在真正的问题。
但在加拿大或处理国际事务时,情况并不总是像 1-2-3 那么简单。
这里有一些关于日期的建议。
- 始终显示四位数的年份,但允许输入两位数。
- 显示月份名称或缩写月份名称,而不是数字。
- 使用用户的区域设置进行输入和显示。
时间
让我们来看看时间。显示时间的方式有很多种。
当午夜或中午是选项时,情况会更加混乱。
现在告诉我。我是在午夜还是中午还车?如果是在午夜,是8月15日的早晨,还是8月15日的夜晚?
如果您还记得,加拿大在日期格式冲突方面存在问题。再加上午夜问题,加拿大人就发明了时间旅行。
每周开始
许多国家将不同的日子视为一周的开始。有些人说星期日是开始,有些人说星期六或星期一。但这在大多数软件中只是一个简单的用户偏好。
周末
您知道并非每个地方的周末都是星期五和星期六吗?
- 世界大部分地区:周六 + 周日
- 中东:周五 + 周六
- 沙特阿拉伯:周四 + 周五
日历
我们大多数人都熟悉的日历是格里高利历。通常支持这个就足够了。沙特阿拉伯则使用伊斯兰历。沙特政府和许多企业确实使用伊斯兰历。
还有其他日历,如中国历和希伯来历,但它们仅用于宗教目的,而非商业或日常使用。
引号
English
"Hello" or “Hello”
荷兰语、爱沙尼亚语
„Hello“
俄语、法语、希腊语、土耳其语
«Hello»
简体中文
”Hello”
繁体中文
「Hello」
Danish
»Hello«
甚至主次引号也不总是一致的。
English
"Primary" and 'Secondary'
威尔士语
'Primary' and "Secondary"
这里有一个 更大列表 的语言特定引号,主次引号。
« » 字符称为角引号或法语引号。但许多人,包括 Adobe 软件和 Microsoft 拼写检查器,都称它们为海雀。海雀确实存在,但它看起来像这样。
象征意义
快速看下一张图片,记住第一个出现在您脑海中的事物。
符号通常比文字更强大,因此符号可能非常强大。但如果选择了错误或令人困惑的符号,结果可能会很麻烦。
对最终用户而言,许多界面最终看起来像这样。
文化问题
对于大多数市场,下图是合适的。然而,如果您针对的是中东地区,您应该考虑到这种低胸领口可能不像在其他国家那样被中性地看待。如果您特别针对沙特阿拉伯等更保守的穆斯林国家,您应该考虑根本不使用这张图片。
为受众本地化图片可能是一件好事。然而,它也可能适得其反。考虑一下这个微软广告的案例。这是它在美国网站上出现的样子。
一个很好的多种族组合。但在波兰和前东欧集团的大部分地区,不幸的是,仍然存在对黑人的种族歧视。所以这张广告被 Photoshop 处理了。
但效果不佳。看看他的手。然而,这种变化被注意到了,在美国引起了很大的愤怒和尴尬。使用一张完全不同的图片可能更容易被接受,但修改后的版本却成了侮辱。
这很可能是由外部公司完成的,而不是微软有意为之。不相信我?看看那个多彩人物前面的笔记本电脑?那是一台 MacBook。
让我们回顾一下之前展示的低胸领口女子的图片。这种版本在沙特阿拉伯可能不被认为是合适的,并且还会引起国际上的强烈抗议。
太多的图片是美国中心主义的。不是说美国图片不应该使用,但是如果每次看到国旗都是中国的,那美国人会怎么想?而且每本护照都是中国的?每张照片、地址和地图都来自中国?如果您面向的是全球受众,请使用各种符号和示例,而不是仅来自一个国家。这也包括样本数据。
产品和品牌名称
当乔治·伊士曼创立柯达时,他只是凭空创造了这个词,但有其用意。字母 K 是伊士曼最喜欢的字母,所以他希望 K 在单词中占主导地位。关于字母 K,他说:“[它是一个]强大、锐利的字母。”他还想要一个简短的名字,易于所有语言发音,并且独特,不会与其他任何东西混淆。他和他的母亲想出了 Kodak。事实上,Kodak 是他们第一台相机的名字,它如此受欢迎以至于他们将公司名称改为了 Kodak。
并非所有品牌和产品名称都经过如此深思熟虑。当然,这辆自行车的名字应该经过更好的考虑。
并且有几次汽车命名上的失误。这是雪佛兰 Nova。
Nova 在西班牙语国家销量不佳。“Nova”在西班牙语中大致意思是“不行”。
最近的例子是流行的三菱 Pajero。在西班牙语国家,它不得不更名为 Mitsubishi Montero。它完全是同一辆车,但名字不同。为什么?Pajero 在西班牙语中有含义。在西班牙语中,它是俚语,含义各不相同。充其量,它是一个疲惫或懒惰的人。最坏的是,他是一个独自做某些活动的人。Montero 则意味着“山地战士”。
域名
域名通常由多个单词组成,并且域名没有空格。公司也喜欢避免使用连字符,因为它们会引起混淆。还要记住,用户通常不使用大写字母,因此您本来的独立单词经常会“丢失”。然而,新的无意单词可能会形成。请务必检查您正在考虑的域名。
我给您三个真实世界的域名示例。其中两个现已停用,所有者在吃亏后已选择新域名。
定义域 | 预期含义 | 另一种解释 |
www.whorepresents.com | www.WhoRepresents.com | www.WhorePresents.com |
www.expertsexchange.com | www.ExpertsExchange.com | www.ExpertSexChange.com |
www.genitalia.com | www.GenItalia.com (意大利发电机公司,Italia 是意大利语中的意大利) | www.genitalia.com |
数字
有两种常见的数字系统:欧洲数字和阿拉伯-印度数字。
阿拉伯-印度数字使用不那么频繁,但在中东地区使用。在中东,您会在车牌、标志、菜单和价签上看到它们。阿拉伯-印度数字的功能与欧洲数字相同,但符号不同。它们都是基于10的。
还有东方阿拉伯-印度数字和泰米尔数字。东方阿拉伯-印度数字与印地语几乎相同。
好消息是,Windows 可以根据用户的系统设置自动处理这些问题。然而,了解它们很重要,它们可能会影响图像的本地化。
中文和日文中存在不常见的数字系统,但由于这些不常见,因此不期望软件支持它们。
最后,还有一些新颖的系统,如 罗马数字系统。除了风格效果之外,不需要支持罗马数字。罗马数字多年来一直被用于版权和电影演职员表。
数字格式
12,000 vs. 12.000 - 是 12000 还是 12?在美国,逗号用作千位分隔符,句点用作小数点。然而,在欧洲和南美洲,句点用作千位标记,逗号用作小数点。
示例
US: 1,234,567.890
Europe: 1.234.567,890
Switzerland: 1'234'567,890
但至少分组是相同的。分组以千为单位,或每三位数字一组。在中国,分组是以万为单位,或每四位数字一组。
China: 123,4567.890
印度的情况更为复杂。
十亿
还记得我们 earlier 讨论过方言以及单词可能带来的严重后果吗?Billion 是一个含义可能产生非常严重影响的词。Billion 的含义取决于国家是使用短尺度还是长尺度。
长尺度国家如下所示。
由于美国是短尺度国家,德国是长尺度国家,Billion 的含义完全不同。加拿大在英语中使用短尺度,在法语中使用长尺度。
美国一直是短尺度,但许多英语国家以前是长尺度。英国于1974年正式改为短尺度。
重量和度量
我们大多数人都知道美国仍然使用磅和英里作为度量单位,而世界其他大部分地区使用公制。问题在于,美国人通常不以公制思考。如果您告诉一个美国人某物重10公斤,那您不如告诉他重4兆赫兹。尝试用美国的重量单位与使用公制单位的人交流也是如此。
因此,在处理重量和度量时,支持两种系统至关重要。情况并非如此简单。尽管英国官方使用公制,但人们仍然习惯并非正式地使用磅和其他非公制度量单位。但有时它们甚至不相同。英制(Imperial)加仑与美制加仑不同。但在各自国家,两国都只称它们为“加仑”。
中国也普遍使用中国的度量衡系统。
货币
处理货币不仅仅是允许不同的货币符号。理解“$”和其他货币符号可以用于多种货币,并且货币符号不总是单个字符也很重要。加拿大和美国都使用“$”作为其货币。如果您的应用程序同时处理加拿大元和美元,用户如何区分?QuickBooks 在这方面尤其糟糕。
每种货币还有一个三字母的 ISO 代码。例如,加拿大元是 CAD,美元是 USD。“$”还可以用来表示 AUD、SGD、XCD 以及其他许多形式的美元。
货币符号的位置也可能不同。一些国家将其用作后缀而不是前缀。欧元符号因国家而异。
一些国家甚至将货币符号放在中间代替小数点。葡萄牙埃斯库多和法国法郎都这样做过。对我们来说幸运的是,这两种货币现在都已废弃。
50$00 - Portuguese Escudo
12₣34 - French Francs
货币不仅仅是货币符号。还有格式。除了数字中之前讨论过的逗号与句点问题外,还需要考虑精度。大多数货币有两位小数精度。例如,$5.96。然而,一些货币有三位或四位小数。约旦第纳尔使用三位小数,因此价格通常显示为 5.965,有些货币使用四位。
为了存储和所有计算,应使用四位小数。应避免使用浮点类型进行货币计算。大多数语言支持固定精度或甚至货币类型。在 .NET 中,应使用 decimal 类型。
确保您选择的类型以及输入字段足够大,可以容纳较大的数字。我们这些主要处理美元和欧元的人认为一百万美元很多。但在所有货币中并非如此。
这是津巴布韦的一张钞票。许多其他国家也经历过恶性通货膨胀时期,不只是津巴布韦。罗马尼亚在20世纪90年代末发行了百万列伊的钞票。即使是意大利这样的国家,在过去几十年里也经历了大规模的通货膨胀。
事实上,看看买几个鸡蛋需要多少钱。
识别字符串
不要硬编码诸如“C:\Program Files”之类的内容,因为它可能是“C:\Archivos de programa”。更不用说 64 位平台上的差异了。实际上,Vista 解决了此类文件夹名称的本地化问题,但 XP 仍然受到影响。Vista 在物理上以英语存储,但允许使用备用本地化显示名称。
Everyone 和 Guest 也是安装过程中常见的问题。例如,在挪威语中,它们分别是 Alle brukere 和 Gjest。
在 Office 的旧版本中,VBA 命令实际上是本地化的。这导致用英语编写的脚本在非英语安装的 Office(如法语)上失败。我个人在20世纪90年代末为一家大公司工作时就曾遇到过这个问题。
荒谬的区域限制
Google 的 Play 商店默认限制了数十个国家/地区,没有明显原因,许多供应商尽管选择了“全球”分发,但无法使其正常工作。Play 商店中约有 25% 的应用受到影响。我曾与许多供应商合作过,但他们似乎无法让他们的应用程序真正全球化。即使是我的 Roomba 应用也受到影响。
用户不得不诉诸 sideloading 或使用安全性较低的 Aptoide 商店。
即使是 Google 也无法做到正确。这是 Google Earth 在前往加勒比地区(不是古巴)旅行时尝试安装的情况。此屏幕截图截至 2019 年 9 月 8 日,并且这个问题已经存在很多年了。
如果您对一篇关于此类问题如何真正损害您的软件的详尽文章感兴趣,请查看我的另一篇文章:盗版与非传统智慧。
赋能用户
将尽可能多的内容存储在外部文件中。纯文本文件,如 JSON 或 XML,是很好的格式。通过这样做,您可以允许用户贡献内容,甚至修复他们语言中的错误。
.NET / WPF
在 .NET 世界中,WPF 在本地化问题上远优于 WinForms。
致谢
我花了大量时间研究这个主题,Google 和 Wikipedia 都是我重要的资源。一些图表来自 Wikipedia。大多数屏幕截图是我自己使用 VMWare 创建的。其他图像和图片是由会议与会者发送给我的,他们希望增强演示文稿。一些图像来源完全未知,因为我多年来一直在就这个主题进行演示。
勘误和补充
我曾在一打国家生活过,去过 60 多个国家。我是英语母语者,并且对加拿大、美国和英国英语都很熟悉,因为我曾在说这些语言的国家生活过。我讲和读的俄语接近流利,希腊语是基础。我看的俄语电视节目几乎和英语一样多。我还知道一些阿拉伯语和土耳其语的零碎知识。我能相对熟练地阅读基础的保加利亚语、法语、西班牙语、意大利语、德语、荷兰语和罗马尼亚语。由于乌克兰语非常接近俄语,而且我们过去曾经接收和观看乌克兰语电视节目,所以我也能很好地理解乌克兰语。
我花了大量时间研究这些主题,并在世界各地的会议上就此主题进行了数十次演讲。但是,我当然欢迎对我不熟悉语言的更正和/或补充信息。