2008-10-01 100 views
29

国际化网络应用似乎总是一件苦差事。无论您为可插拔语言提前计划多少,总会遇到编码问题,不适合模板的时髦措辞以及其他问题。国际化Web应用程序的最佳做法?

我认为这将是得到SO社区输入一组的东西,程序员应该看的出来决定自己的国际化网络应用程序时非常有用。

回答

0

我有几个应用程序,是“双语” 我以前在ASP.NET1.1资源文件

还有一种叫做字符串资源工具 基本上你把你所有的字符串在.RES文件对于这两种语言,然后确定基于文化或是否有人点击了该语言

最大的疑难杂症是确保在翻译的正确进行

9

在我的公司我们所有的字符串存储链路读什么文件在* .properties文件中。我们的构建工具,构建属性文件,它替换字符串这样的“测试的语”副本:

Click here 

像这样的东西:

[~~ Çļïčк н∑ѓё ~~ タウ ~~] 

现在,当我们将语言设置为“测试“在我们的配置文件中,使用这些属性文件。 (当然,我们不提供测试语言文件)。

这使我们能够:

  1. 确保Unicode字符能够正确显示,包括日本/中国/韩国。
  2. 确保布局适当扩展与不再言语语言(德语特别是对非英语平均较长的单词)。
  3. 发现任何硬编码字符串(因为他们将在纯英文)。

至于实际翻译,这是由专业翻译人员,而不是开发人员。

+2

这被称为[伪翻译](http://en.wikipedia.org/wiki/Pseudolocalization)。 – Gan 2013-06-14 06:57:34

+0

谈到l18n,Java很疯狂;对于翻译的默认存储在.properties文件,那[不支持Unicode(http://stackoverflow.com/a/4660195/286685)开箱的几个Java的文件格式之一! – 2016-10-30 21:26:47

45

国际化是很难的,这里有几件事情我已经从2个网站,均超过20种不同语言工作的经验教训:

  • 使用UTF-8无处不在。没有例外。 HTML,服务器端语言(注意PHP尤其是),数据库等
  • 图像中没有文本,除非你想有一个工作吨。如有必要,使用CSS将文字放在图像上。
  • 从本地化分离配置。这样定位器可以翻译文本,并且您可以处理每个语言环境(功能,布局等)的不同配置。您不希望本地化人员有能力混淆您的应用程序。
  • 确保您的布局可以处理比英文长2-3倍的文本。而且比英语少50%(日语和中文通常更短)。
  • 一些语言需要较大的字体大小(日本,中国)
  • 颜色有特定的语言环境也。红色和绿色并不意味着无处不在!
  • 将区域设置名称的类名添加到文档的主体标签。这样,您可以轻松地在CSS文件中指定特定的区域设置。
  • 小心变量替换。不要拆分你的字符串。留下他们全部像这样:“你有X条新消息”,并用#代替'X'。
  • 不同的语言有不同的复数形式。 0,1,2-4,5-7,7-无限。很难处理。
  • 上下文很困难。有时候,本地化人员需要知道字符串在哪里/如何使用,以确保其正确翻译。

资源:

1

在国外生活的时候,已经成为许多Web应用程序的做法感到沮丧国际化,有blogged about my frustrations英语的人。

我的秘诀是:

  • 想想你如何显示网页
  • 使用地理定位可能适用于许多用户的一个国际版本,但我的例子显示对于许多人来说不会
  • 为什么不使用Accept-Language头用于确定哪些语言服务
  • 如果用户通过搜索引擎访问一个页面,然后不重定向他们在其他地方如在不同的语言
  • 主页这是非常恼人的改变语言,有不同的页面重载 - 无论是服务于同一页面或重定向他们
  • 英语之前向用户发出警告,目前的内容不可用不同的语言是一种很常见的语言,所以也许默认为是
  • 但要确保在变化的语言选项是在GUI清楚(我喜欢谷歌地图正在做的,如在后)

我看到的在网络上是企业内化错误。从用户的角度来看,它确实很棘手。