![]() |
1
48
已经有一段时间了,所以这并不全面。 字符集 Unicode很好,但您不能忽略其他字符集。Windows XP(英语)上的默认字符集是Cp1252。在web上,您不知道浏览器会向您发送什么(尽管希望您的容器能够处理大部分内容)。当您使用的任何实现中都存在bug时,不要感到惊讶。当字符集在机器之间移动时,它们可以与文件名进行有趣的交互。 翻译字符串 一般来说,翻译人员不是编码人员。如果您将源文件发送给翻译人员,他们会将其破坏。字符串应提取到资源文件(例如Java中的属性文件或Visual C++中的资源DLL)。应该给翻译人员提供难以破坏的文件和不让他们破坏的工具。 翻译人员不知道字符串在产品中的来源。如果没有上下文,很难翻译字符串。如果你不提供指导,翻译的质量就会受到影响。 在上下文主题上,您可能会多次看到相同的字符串“foo”,并认为让UI中的所有实例指向相同的资源会更有效。这是个坏主意。在某些语言中,单词可能对上下文非常敏感。 翻译字符串需要花钱。如果发布产品的新版本,恢复旧版本是有意义的。拥有从旧资源文件恢复字符串的工具。 应尽量减少字符串串联和手动操作。如果适用,请使用格式功能。 翻译人员需要能够修改热键。 Ctrl键 + P 以英文打印;德国人使用 Ctrl键 + D . 如果您有一个翻译过程,需要有人在任何时候手动剪切和粘贴字符串,那么您就是在自找麻烦。 日期、时间、日历、货币、数字格式、时区 这些都可能因国家而异。逗号可以用来表示小数位。时间可以是24小时记数法。并不是每个人都使用公历。你也需要毫不含糊。如果您在网站上小心地将日期显示为美国的MM/DD/YYYY和英国的DD/MM/YYYY,则除非用户知道您已经这样做了,否则日期是不明确的。 尤其是货币 类库中提供的语言环境函数将为您提供本地货币符号,但您不能仅在给出美元价格的值之前粘贴英镑或欧元符号。 用户界面 布局应该是动态的。不仅字符串可能在翻译时长度加倍,整个UI可能需要反转(希伯来语;阿拉伯语),以便控件从右向左运行。那是在我们到达亚洲之前。 翻译前测试
非技术问题 有时你必须对文化差异保持敏感(可能导致冒犯或不理解)。您经常看到的一个错误是使用标志作为选择网站语言或地理位置的视觉提示。除非你想让你的软件在全球政治中表明立场,否则这是个坏主意。如果您是法国人,并且提供了带圣乔治旗的英语选项(英国国旗是白色区域上的红十字),这可能会导致许多讲英语的人感到困惑——假设外语和国家也会出现类似的问题。图标需要经过文化相关性审查。竖起大拇指或绿色勾号是什么意思?语言应该相对中立——在一个地区以特定方式称呼用户可能是可以接受的,但在另一个地区则被认为是粗鲁的。 资源 C++和Java程序员可能会发现ICU网站很有用: http://www.icu-project.org/ |
![]() |
2
15
一些有趣的事情:
|
![]() |
3
9
我为我以前的雇主做过一个项目,这个项目使用了。NET,并且有一个内置的。我们使用的resx格式。我们基本上有一个文件,里面有所有的翻译。resx文件,然后是具有不同翻译的多个文件。这样做的结果是,您必须非常努力地确保应用程序中可见的所有字符串都存储在中。resx,任何时候更改一种语言,都必须更新支持的所有语言。 如果你变得懒惰,不通知负责翻译的人,或者你在没有经过本地化系统的情况下嵌入字符串,那么以后尝试修复它将是一场噩梦。同样,如果本地化是事后才想到的,那么很难落实到位。总之,如果您没有将所有可见字符串存储在标准位置的外部,那么很难找到所有需要本地化的字符串。 另一个注意事项是,非常严格地避免直接连接可见字符串,例如
相反,您必须使用以下内容
这是因为不同的语言通常会对单词进行不同的排序,直接连接字符串将需要一个新的构建来修复,但是如果您使用了上述某种字符串替换机制,则可以修改。需要重新排序单词的特定语言的resx文件(或您使用的任何本地化文件)。 |
![]() |
4
5
我刚才在听 Podcast from Scott Hanselman 今天早上,他谈到了国际化,尤其是真正棘手的事情,比如土耳其语(四个i’s)和泰语。还有,杰夫·阿特伍德 post : |
![]() |
5
3
除了前面的所有提示之外,请记住i18n不仅仅是为了在其他语言上更改对应的单词,特别是对于从右到左书写的非拉丁语言字母表(朝鲜语、阿拉伯语),因此整个UI必须一致,如
必须是 阿拉伯文文本1- 阿拉伯文文本2- 阿拉伯文文本3- (颠倒的项目符号列表似乎不起作用:P) 如果您的系统必须在用户更改所使用的语言后以友好的方式应用更改,那么这可能是一场UI噩梦。 另一件非常困难的事情是测试不同的语言,不仅是为了单词的正确性,而且因为像韩国语这样的语言的字符通常有更大的字体,这可能会导致特定于语言的错误(例如,对于某些语言,按钮上的“保存”文本比按钮本身大)。 |
![]() |
6
2
要发现的一件有趣的事情是:斜体和粗体文字makrup不适用于CJK(中文/日文/韩文)字符。它们只是变得不可读。(好吧,我以前也看不懂,但特别是加粗只会造成墨迹) |
![]() |
7
1
我认为从事国际化工作的每个人都应该熟悉通用语言环境数据存储库,它现在是Unicode的一个子项目: 这些人正在努力为各种i18n问题建立一个标准资源:货币、地名、成吨的东西。IMHO,任何维护自己核心本地数据的项目都是相当疯狂的。 |
![]() |
8
1
我建议使用 99translations.com 维护您的翻译。否则,你将无法说出你的翻译在每种语言中都是最新的。 |
![]() |
9
1
另一个挑战是接受用户的输入。在许多情况下,操作系统提供的输入处理(如Windows中的IME)可以缓解这一问题,IME可以透明地与常见的文本小部件配合使用,但这种功能并不能满足所有可能的需要。 |
![]() |
10
0
我使用的一个网站有一种被所有者称为“维基+机器翻译”的翻译方法。这是一个基于社区的网站,因此与公司的需求明显不同。 http://blog.bookmooch.com/2007/09/23/how-bookmooch-does-its-translations/ |
![]() |
11
0
有一件事还没有人提到,那就是在“部队将在5天内出发”或“星期一发生了什么事”中有一些令人警惕的部分其中5和周一将根据州的不同而变化。将它们一分为二并连接起来不是一个好主意。如果只有一个不同的部分和良好的文档,您可能会侥幸逃脱,如果有两个不同的部分,则会有一些语言倾向于更改它们的顺序。 |
![]() |
Neil Weicher · 环境变量和本地化 7 年前 |
![]() |
QED · 带NSNumberFormatter的字符串乘法器 7 年前 |
![]() |
Lee Wise · 翻译DNN 2sxc模块中的内容时出错 7 年前 |
![]() |
TomBombadil · 查看本地化 7 年前 |
![]() |
lorenzo · 本地化情节提要中未反映基本情节提要更改 7 年前 |