国际化Web应用程序的最佳实践?

时间:2008-10-01 00:32:38

标签: language-agnostic internationalization

国际化网络应用似乎总是一件苦差事。无论你为可插拔语言提前做多少计划,总是存在编码问题,不适合你的模板的时髦措辞以及其他问题。

我认为,在决定将其网络应用程序国际化时,获取SO社区对程序员应该注意的一系列内容的输入会很有用。

4 个答案:

答案 0 :(得分:49)

国际化很难,这里有一些我从使用20种不同语言的网站中学到的东西:

  • 到处使用UTF-8。没有例外。 HTML,服务器端语言(特别注意PHP),数据库等
  • 除非您需要大量工作,否则图片中没有文字。如有必要,使用CSS将文本放在图像上。
  • 将配置与本地化分开。这样本地化程序可以翻译文本,您可以处理每个区域设置的不同配置(功能,布局等)。您不希望本地化人员有能力搞乱您的应用程序。
  • 确保您的布局可以处理比英语长2-3倍的文字。而且比英语少50%(日语和中文通常更短)。
  • 某些语言需要更大的字体(日语,中文)
  • 颜色也是特定于语言环境的。红色和绿色在任何地方都不一样!
  • 将区域设置名称的类名添加到文档的body标记中。这样,您可以轻松地在CSS文件中指定特定区域设置的布局。
  • 注意变量替换。不要拆分你的字符串。把它们全部保留为:“你有X个新消息”并用#替换'X'。
  • 不同的语言有不同的复数。 0,1,2-4,5-7,7-infinity。难以对付。
  • 上下文很难。有时,本地化者需要知道字符串的使用位置和方式,以确保其正确翻译。

资源:

答案 1 :(得分:9)

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

Click here

有这样的事情:

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

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

这允许我们:

  1. 确保正确显示Unicode字符,包括日语/中文/韩语。
  2. 确保布局适用于具有较长字词的语言(特别是德语的字数平均长于英语)。
  3. 发现任何硬编码的字符串(因为它们将以简单的英语显示)。
  4. 至于实际翻译,这是由专业翻译人员而非开发人员完成的。

答案 2 :(得分:1)

作为一个生活在国外的英国人,我对许多网络应用程序的国际化方法感到沮丧,并blogged about my frustrations

我的提示是:

  • 考虑如何展示网页的国际版本
  • 使用地理位置可能适用于许多用户,但正如我的示例所显示的那样,它不会
  • 为什么不使用Accept-Language标头来确定要提供哪种语言
  • 如果用户通过搜索引擎访问页面,则不要将其重定向到其他地方,例如用不同语言的主页
  • 更改语言并重新加载页面非常烦人 - 要么提供相同的页面,要么警告用户在重定向之前当前内容不能用其他语言提供
  • 英语是一种非常常见的语言,所以可能默认为
  • 但请确保GUI上的更改语言选项清晰(我喜欢谷歌地图正在做的事情,如帖子所示)

我在网上看到的所有公司内化都是错误的。从用户的角度来看是正确的,确实很棘手。

答案 3 :(得分:0)

我有几个“双语”应用 我在ASP.NET1.1中使用了资源文件

还有一种称为字符串资源工具的东西 基本上,您将所有字符串放在两种语言的.RES文件中,然后根据Culture确定要读取的文件,或者是否有人单击了该语言的链接

最大的问题是确保翻译正确完成