42

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

我认为获得 SO 社区对程序员在决定将其 Web 应用程序国际化时应该注意的一组事情的意见会很有用。

4

4 回答 4

59

国际化很难,以下是我从使用 20 多种不同语言的 2 个网站中学到的一些东西:

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

资源:

于 2008-10-15T20:40:42.393 回答
11

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

Click here

像这样:

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

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

这使我们能够:

  1. 确保正确显示 Unicode 字符,包括日文/中文/韩文。
  2. 确保布局适合具有较长单词的语言(特别是德语的平均单词比英语更长)。
  3. 找出任何硬编码的字符串(因为它们是纯英语的)。

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

于 2008-10-01T14:19:54.207 回答
4

作为一个生活在国外的英国人,我对许多 Web 应用程序的国际化方法感到沮丧,并在博客中讲述了我的挫败感

我的建议是:

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

我在网上看到的只是公司内部化的错误。从用户的角度来看它确实很棘手。

于 2014-04-30T08:40:19.043 回答
0

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

还有一个叫做字符串资源工具的东西基本上你把所有字符串都放在一个 .RES 文件中,然后根据文化或是否有人点击了该语言的链接来确定要读取的文件

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

于 2008-10-01T14:09:01.457 回答