Language agnostic web应用程序国际化的最佳实践?

Language agnostic web应用程序国际化的最佳实践?,language-agnostic,internationalization,Language Agnostic,Internationalization,将web应用程序国际化似乎总是件麻烦事。无论您对可插拔语言有多大的计划,编码、不适合您的模板的时髦措辞以及其他问题总是存在 我认为,获得SO社区对一系列问题的意见会很有用,程序员在决定将其web应用国际化时应该注意这些问题。我有两个“双语”应用程序 我在ASP.NET1.1中使用了资源文件 还有一种叫做字符串资源工具的东西 基本上,您可以将两种语言的所有字符串都放在一个.RES文件中,然后根据区域性或是否有人单击了该语言的链接来确定从哪个文件中读取 最大的难题是确保翻译正确进行在我的公司,我们所

将web应用程序国际化似乎总是件麻烦事。无论您对可插拔语言有多大的计划,编码、不适合您的模板的时髦措辞以及其他问题总是存在


我认为,获得SO社区对一系列问题的意见会很有用,程序员在决定将其web应用国际化时应该注意这些问题。

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

还有一种叫做字符串资源工具的东西 基本上,您可以将两种语言的所有字符串都放在一个.RES文件中,然后根据区域性或是否有人单击了该语言的链接来确定从哪个文件中读取


最大的难题是确保翻译正确进行

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

Click here
[~~ Çļïčк н∑ѓё ~~ タウ ~~]
比如说:

Click here
[~~ Çļïčк н∑ѓё ~~ タウ ~~]
现在,当我们在配置文件中将语言设置为“test”时,将使用这些属性文件。(当然,我们不提供测试语言文件)

这使我们能够:

  • 确保正确显示Unicode字符,包括日语/汉语/朝鲜语
  • 确保布局适合单词较长的语言(尤其是德语的单词平均比英语长)
  • 找出任何硬编码字符串(因为它们是纯英语的)

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

    国际化很难,我从使用20多种不同语言的两个网站的工作中学到了一些东西:

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


    作为一名生活在国外的英国人,我对许多web应用程序的国际化方法感到沮丧,并因此而感到沮丧

    我的建议是:

    • 考虑一下如何显示页面的国际版本
    • 使用地理位置可能对许多用户有效,但正如我的示例所示,对许多用户无效
    • 为什么不使用Accept Language标头来确定要使用哪种语言
    • 如果用户通过搜索引擎访问某个页面,则不要将其重定向到其他地方,例如使用不同语言的主页
    • 更改语言并重新加载不同的页面是非常烦人的-在重定向之前,要么为同一页面提供服务,要么警告用户当前内容不可用其他语言
    • 英语是一种非常通用的语言,因此可能默认为英语
    • 但是要确保GUI上的change language选项是清晰的(我喜欢GoogleMaps所做的事情,如文章所示)

    我在网上看到的只是公司内部化的错误。从用户的角度正确理解它确实是一件棘手的事情。

    这就是所谓的;翻译的默认存储是.properties文件,这是为数不多的现成的Java文件格式之一!我意识到这是旧的。我会记住这些好建议。你能提供一个具体的例子吗?