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

问题描述 投票:0回答:4

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

我认为获得 SO 社区的意见是很有用的,程序员在决定国际化他们的 Web 应用程序时应该注意这些事情。

language-agnostic internationalization
4个回答
62
投票

国际化很困难,以下是我在与 2 个超过 20 种不同语言的网站合作中学到的一些东西:

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

资源:


12
投票

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

Click here

像这样:

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

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

这使我们能够:

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

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


5
投票

作为一名居住在国外的英国人,我对许多网络应用程序的国际化方法感到沮丧,并在博客中讲述了我的挫败感

我的建议是:

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

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.