国际化的设计注意事项 [英] Design considerations for internationalization

查看:78
本文介绍了国际化的设计注意事项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经阅读了Joel在 Unicode 上的文章,并且我觉得至少从字符集的角度基本了解国际化.除了阅读这个问题之外,我还对关于设计方面的考虑,但我不禁怀疑那里还有很多我只是不知道或不知道要问的问题.

I've read Joel's article on Unicode and I feel that I have at least a basic grasp of internationalization from a character set perspective. In addition to reading this question, I've also done some of my own research on internationalization in regards to design considerations, but I can't help but suspect that there is a lot more out there that I just don't know or don't know to ask.

我学到的一些东西:

  • 某些语言从右到左阅读 而不是从左到右.
  • 日历,日期,时间,货币和 数字显示方式不同 从一种语言到另一种语言.
  • 设计应足够灵活以 容纳更多的文字,因为 有些语言更加冗长 比其他人.
  • 请勿将图标或颜色用作 当涉及到他们时 语义可能会有所不同 从文化到文化.
  • 地理名称从 语言对语言.
  • Some languages read right-to-left instead of left-to-right.
  • Calendar, dates, times, currency, and numbers are displayed differently from language to language.
  • Design should be flexible enough to accommodate a lot more text because some languages are far more verbose than others.
  • Don't take icons or colors for granted when it comes to their semantic meaning as this can vary from culture to culture.
  • Geographical nomenclature varies from language to language.

我在的位置:

  • 我的设计足够灵活,可以 容纳更多文字.
  • 我会自动翻译每个 字符串,包括错误消息和帮助对话框.
  • 我还没到什么地步 我需要显示时间单位, 货币或数字,但我会 在那里很快,将需要 开发解决方案.
  • 我正在使用UTF-8字符集 全面.
  • 我的菜单和应用程序中的各种列表已排序 每种语言按字母顺序排列,以便于阅读.
  • 我有一个提取的标签解析器 通过过滤停用词来标记.这 停用词列表特定于语言 并可以换出.
  • My design is flexible enough to accommodate a lot more text.
  • I automatically translate each string, including error messages and help dialogs.
  • I haven't come to a point yet where I've needed to display units of time, currency or numbers, but I'll be there shortly and will need to develop a solution.
  • I'm using the UTF-8 character set across the board.
  • My menus and various lists in the application are sorted alphabetically for each language for easier reading.
  • I have a tag parser that extracts tags by filtering out stop words. The stop words list is language specific and can be swapped out.

我想了解的更多信息:

  • 我正在开发可下载的PHP Web应用程序, 因此,有关以下方面的任何具体建议 PHP将不胜感激. 我已经开发了自己的框架, 对使用其他东西不感兴趣 框架.
  • 我对非西方国家了解甚少 语言.有没有具体的 需要考虑的因素 考虑到我没有提到 以上?还有,PHP的数组怎么做 分类功能处理非西方 字符?
  • 是否有任何特定的陷阱 你有实践经验吗?我正在同时考虑GUI和应用程序代码本身.
  • 与之合作的任何具体建议 日期和时间显示?有没有 按地区细分或 语言?
  • 我看过很多项目和网站 让他们的社区提供 为其应用程序翻译 和内容.你推荐这个吗 还有什么好的策略 确保你有一个好的 翻译吗?
  • 这个问题基本上是程度 我所知道的 国际化.我不是 知道我不知道我应该 进一步调查?
  • I'm developing a downloadable PHP web application, so any specific advice in regards to PHP would be greatly appreciated. I've developed my own framework and am not interested in using other frameworks at this time.
  • I know very little about non-western languages. Are there specific considerations that need to be taken into account that I haven't mentioned above? Also, how do PHP's array sorting functions handle non-western characters?
  • Are there any specific gotchas that you've experienced in practice? I'm looking in terms of both the GUI and the application code itself.
  • Any specific advice for working with date and time displays? Is there a breakdown according to region or language?
  • I've seen a lot of projects and sites let their communities provide translation for their applications and content. Do you recommend this and what are some good strategies for ensuring that you have a good translation?
  • This question is basically the extent of what I know about internationalization. What don't I know that I don't know that I should look into further?

编辑:我添加了赏金,因为我想从经验中获得更多真实的示例.

Edit: I added the bounty because I would like to have more real-world examples from experience.

推荐答案

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

Our game Gemsweeper has been translated to 8 different languages. Some things I have learned during that process:

  • 如果为翻译者提供了单个句子来翻译,请确保他了解每个句子所使用的上下文.否则,他可能会提供一种可能的翻译,但不会提供一种翻译你的意思是. 诸如 Babelfish 之类的工具在翻译时没有理解上下文,这就是为什么结果通常如此糟糕的原因.只需尝试将所有非平凡的文本从英语翻译成德语,然后再翻译回去,您就会明白我的意思.

  • If the translator is given single sentences to translate, make sure that he knows about the context that each sentence is used in. Otherwise he might provide one possible translation, but not the one you meant. Tools such as Babelfish translate without understanding the context, which is why the result is usually so bad. Just try translating any non-trivial text from English to German and back and you'll see what I mean.

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

Sentences that should be translated must not be broken into different parts for the same reason. That's because you need to maintain the context (see previous point) and because some languages might have the variables at the beginning or end of the sentence. Use placeholders instead of breaking up the sentence. For example, instead of

这是我们的15个步骤中的步骤" 教程"

"This is step" "of our 15-step tutorial"

写类似:

这是我们的15步教程中的第%1步"

"This is step %1 of our 15-step tutorial"

,并以编程方式替换占位符.

and replace the placeholder programmatically.

  • 不要指望翻译会有趣或富有创意.他通常没有足够的动力去做,除非您命名特定的文字段落并付钱给他.例如,如果您在语言资产中有笑话,请在旁注中告诉翻译者不要尝试翻译它们,而要保留它们或将其替换为更晦涩的句子.否则,翻译人员可能会逐个单词地翻译笑话,这通常会导致完全废话.在我们的案例中,我们只有一名翻译和一名笑话作家来进行最严格的翻译(英语).

  • Don't expect the translator to be funny or creative. He usually isn't motivated enough to do it unless you name the particular text passages and pay him extra. For example, if you have and word jokes in your language assets, tell the translator in a side note not to try to translate them, but to leave them out or replace them with a more somber sentence instead. Otherwise the translator will probably translate the joke word by word, which usually results in complete nonsense. In our case we had one translator and one joke writer for the most critical translation (English).

尝试找到翻译者的母语,而不是相反的语言.否则,他很可能会写出可能是正确,但对于母语为母语的人来说听起来有些古怪或过时.另外,他应该住在您要翻译的目标国家/地区.例如,来自瑞士的说德语的人不是德语翻译的好选择.

Try to find a translator who's first language is the language he is going to translate your software to, not the other way round. Otherwise he is likely to write a text that might be correct, but sounds odd or old-fashioned to native speakers. Also, he should be living in the country you are targeting with your translation. For example a German-speaking guy from Switzerland would not be a good choice for a German translation.

如果可能的话,请您的一位公开Beta测试用户了解特定的翻译,以验证翻译的资产和完整的软件.取决于提供它的人.根据我们的一些用户的说法,瑞典语翻译简直是胡言乱语,但现在为时已晚.

If any possible, have one of your public beta test users who understands the particular translation verify translated assets and the completed software. We've had some very good and very bad translations, depending on the person who provided it. According to some of our users, the Swedish translation was total gibberish, but it was too late to do anything about it.

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

Be aware that, for every updated version with new features, you will have to have your languages assets translated. This can create some serious overhead.

请注意,如果您的软件经过翻译,最终用户将期望技术支持说出他们的语言.再次,Babelfish可能不会这样做.

Be aware that end users will expect tech support to speak their language if your software is translated. Once again, Babelfish will most probably not do.

修改-还有更多要点

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

  • Make switching between localizations as easy as possible. In Gemsweeper, we have a hotkey to switch between different languages. It makes testing much easier.

如果要使用奇异字体,请确保其中包含特殊字符.我们为Gemsweeper选择的字体适用于英文文本,但我们必须添加一些字符只能以德文,法文,葡萄牙文,瑞典文,...手工存在...

If you are going to use exotic fonts, make sure these include special characters. The fonts we chose for Gemsweeper were fine for English text, but we had to add quite a few characters by hand which only exist in German, French, Portughese, Swedish,...

不要编写您自己的本地化框架.使用诸如 Poedit 之类的工具来翻译文件/检查其他人的翻译并确保所有字符串已正确翻译,并且仍在最新状态,以防您更改基础源代码.我已经尝试过自己滚动并使用Gettext代替,我不得不说Gettext和PoEdit的优势更强.

Don't code your own localization framework. You're probably much better off with an open source framework like Gettext. Gettext supports features like variables within sentences or pluralization and is rock-solid. Localized resources are compiled, so nobody can tamper with them. Plus, you can use tools like Poedit for translating your files / checking someone else's translation and making sure that all strings are properly translated and still up to date in case you change the underlying source code. I've tried both rolling my own and using Gettext instead and I have to say that Gettext plus PoEdit were way superior.

编辑-甚至更多点

  • 了解不同的文化具有不同的数字和日期格式样式.编号方案不仅因文化而异,而且因文化而异.在EN-US中,您可以将数字格式设置为"-1234"; -1,234或(1,234),具体取决于数字的用途.理解其他文化也做同样的事情.

  • Understand that different cultures have different styles of number and date formats. Numbering schemes are not only different per culture, but also per purpose within that culture. In EN-US you might format a number '-1234'; '-1,234' or (1,234) depending on what the purpose of the number is. Understand other cultures do the same thing.

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

Know where you're getting your globalization information from. E.g. Windows has settings for CurrentCulture, UICulture, and InvariantCulture. Understand what each one means and how it interacts with your system (they're not as obvious as you might think).

如果您要进行东亚翻译,请务必做好功课.东亚语言与此处的语言有很多差异.除了可以同时使用多个字母之外,他们还可以使用不同的布局系统(自上而下)或基于网格的布局.东亚语言中的数字也可以有很大的不同.在美国,您只能在有限的条件下(例如1对1st)更改系统,除了逗号和句点之外,还有其他数字注意事项.

If you're going to do east Asian translating, really do your homework. East-Asian languages have quite a few differences from languages here. In addition to having multiple alphabets that are used simultaneously, they can use different layout systems (top-down) or grid-based. Also numbers in east Asian languages can be very different. In the en-US you only change systems for limited conditions (e.g. 1 versus 1st), there are additional numeric considerations besides just comma and period.

这篇关于国际化的设计注意事项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆