国际化的设计注意事项

2022-08-30 11:27:22

我读过Joel关于Unicode的文章,我觉得我至少从字符集的角度对国际化有了基本的了解。除了阅读这个问题之外,我还在设计方面的考虑方面做了一些关于国际化的研究,但我不禁怀疑,还有很多我不知道或不知道问的问题。

我学到的一些东西:

  • 有些语言从右到左而不是从左到右阅读。
  • 日历、日期、时间、货币和数字因语言而异。
  • 设计应该足够灵活,以适应更多的文本,因为有些语言比其他语言更冗长。
  • 当涉及到图标或颜色的语义含义时,不要认为它们是理所当然的,因为这可能因文化而异。
  • 地理命名法因语言而异。

我在哪里:

  • 我的设计足够灵活,可以容纳更多的文本。
  • 我自动翻译每个字符串,包括错误消息和帮助对话框。
  • 我还没有达到需要显示时间,货币或数字单位的地步,但我很快就会到达那里,并且需要开发一个解决方案。
  • 我全面使用 UTF-8 字符集。
  • 我的菜单和应用程序中的各种列表按每种语言的字母顺序排序,以便于阅读。
  • 我有一个标签解析器,通过过滤掉非索引字来提取标签。非索引字列表是特定于语言的,可以换出。

我想知道更多:

  • 我正在开发一个可下载的PHP Web应用程序,因此有关PHP的任何具体建议将不胜感激。我已经开发了自己的框架,目前对使用其他框架不感兴趣。
  • 我对非西方语言知之甚少。是否有我上面没有提到的具体需要考虑的注意事项?另外,PHP的数组排序函数如何处理非西方字符?
  • 你在实践中遇到过什么具体的问题吗?我正在从GUI和应用程序代码本身的角度来看待。
  • 有关使用日期和时间显示的任何具体建议?是否有按地区或语言细分?
  • 我见过很多项目和网站让他们的社区为他们的应用程序和内容提供翻译。您是否推荐此内容,以及有哪些好策略可以确保您拥有良好的翻译?
  • 这个问题基本上是我对国际化的了解程度。我不知道我应该进一步研究什么?

编辑:我添加了赏金,因为我想从经验中得到更多真实世界的例子。


答案 1

我们的游戏Gemsweeper已被翻译成8种不同的语言。在这个过程中,我学到了一些东西:

  • 如果给翻译者一个要翻译的句子,请确保他知道每个句子使用的上下文。否则,他可能会提供一种可能的翻译,但不是你的意思。像Babelfish这样的工具在不理解上下文的情况下进行翻译,这就是为什么结果通常如此糟糕。只要尝试将任何重要的文本从英语翻译成德语,然后再翻译回来,你就会明白我的意思。

  • 不应出于同样的原因将应该翻译的句子分成不同的部分。这是因为您需要维护上下文(请参阅上一点),并且因为某些语言可能在句子的开头或结尾具有变量。使用占位符而不是分解句子。例如,而不是

“这是步骤”“我们的15步教程”

写如下:

“这是我们 15 步教程的步骤 %1”

并以编程方式替换占位符。

  • 不要指望译者是有趣或有创意的。他通常没有足够的动力去做,除非你说出特定的文本段落并额外付钱给他。例如,如果您在语言资产中有单词笑话,请在附注中告诉翻译人员不要尝试翻译它们,而是将它们省略或用更阴沉的句子替换它们。否则,翻译人员可能会逐字逐句地翻译笑话,这通常会导致完全无稽之谈。在我们的例子中,我们有一个翻译和一个笑话作家,用于最关键的翻译(英语)。

  • 试着找一个翻译者,他的第一语言是他要翻译你的软件的语言,而不是相反。否则,他很可能会写一篇可能正确的文本,但对母语人士来说听起来很奇怪或过时。此外,他应该住在您翻译所针对的国家/地区。例如,来自瑞士的讲德语的人不是德语翻译的好选择。

  • 如果可能,请让一位了解特定翻译的公开 Beta 版测试用户验证翻译的资产和完成的软件。我们有一些非常好和非常糟糕的翻译,这取决于提供它的人。根据我们的一些用户的说法,瑞典语翻译完全是胡言乱语,但为时已晚,无法对此做任何事情。

  • 请注意,对于每个具有新功能的更新版本,您都必须翻译语言资产。这可能会产生一些严重的开销。

  • 请注意,如果您的软件被翻译,最终用户将期望技术支持人员说他们的语言。再一次,巴别鱼很可能不会这样做。

编辑 - 更多要点

  • 尽可能轻松地在本地化之间切换。在 Gemsweeper 中,我们有一个热键可以在不同语言之间切换。它使测试变得更加容易。

  • 如果您要使用异国情调的字体,请确保这些字体包含特殊字符。我们为 Gemsweeper 选择的字体对于英语文本来说很好,但是我们必须手动添加相当多的字符,这些字符只存在于德语、法语、葡萄牙语、瑞典语中,...

  • 不要编写自己的本地化框架。使用像Gettext这样的开源框架可能会更好。Gettext支持句子中的变量或复数等功能,并且坚如磐石。本地化的资源被编译,因此没有人可以篡改它们。另外,您可以使用Poedit等工具来翻译文件/检查其他人的翻译,并确保所有字符串都已正确翻译,并且在您更改底层源代码时仍然是最新的。我已经尝试过滚动我自己的和使用Gettext,我不得不说Gettext加上PoEdit要好得多。

编辑 - 更多积分

  • 了解不同的区域性具有不同风格的数字和日期格式。编号方案不仅因区域性而异,而且在该区域性中也不同。在EN-US中,您可以格式化数字“-1234”;“-1,234”或(1,234),具体取决于数字的用途。了解其他文化也会做同样的事情。

  • 了解您从何处获取全球化信息。例如,Windows具有CurrentCulture,UICulture和InvariantCulture的设置。了解每个的含义以及它如何与您的系统交互(它们并不像您想象的那么明显)。

  • 如果你要做东亚翻译,真的要做好功课。东亚语言与这里的语言有相当多的区别。除了同时使用多个字母表外,它们还可以使用不同的布局系统(自上而下)或基于网格。此外,东亚语言中的数字也可能非常不同。在 en-US 中,您只能针对有限的条件(例如 1 对 1st)更改系统,除了逗号和句点之外,还有其他数字注意事项。


答案 2
  • 我的菜单和应用程序中的各种列表按每种语言的字母顺序排序,以便于阅读。

列表应该排序,菜单不应该。请记住,给定用户可能希望以多种语言使用您的应用程序,他仍然应该在同一位置找到任何地方。

快捷方式也是如此,如果有的话:不要翻译它们

另外,请记住,国际化和翻译是两件截然不同的事情,请分别管理它们。


推荐