多语言,多顶级域名Webapp

时间:2011-07-20 08:34:51

标签: url cookies internationalization web-applications

鉴于,像ebay这样的设置......

域:

domain.com
domain.de
domain.it
domain.ru
domain.xyz
....

BUT: 用户可以用德语查看该页面,并可以创建英语内容,这些内容已列在英文目录中。

我的问题: 如何设计语言切换,网址为url:

示例1:(与亚马逊一样)

domain.com -> english catalogue
domain.de -> german catalogue

示例2:(网址内的网址)

domain.com/en/ -> english catalogue
domain.com/de/ -> german catalogue (redirect the .de domain)

示例3:(Cookie中的区域设置)

domain.com -> english
domain.de -> redirect to example.com/?locale=de, set a cookie

示例4:(您还有更多吗?)

您更喜欢哪一个?为什么?

感谢所有回复...

1 个答案:

答案 0 :(得分:2)

你有更多吗?我当然是了。但首先......

广告1.亚马逊有不同的目录,因为事实上亚马逊德国(其德国子公司),亚马逊英国(其英国子公司)实际上是不同的公司(在法律基础上)。他们的提议往往有所不同,当然法律要求(即税收)也有很大差异。因此这些站点是相似的(我很确定它们运行的​​是通用软件并且它们使用的是通用基础架构)但不完全相同(DB后端可能不同)。
如果您正在为类似的公司建立网站,那就有意义了。

广告2.重定向到基于语言的域在与第一个示例完全相同的情况下是有意义的 - 如果您对国际客户的报价差异很大。

广告3.使用网址参数和设置Cookie实际上是最佳做法,但请注意,这应该只是工作流程的一部分(稍后会详细介绍)。如果您的网站实际上是完全相同的应用程序,那么它尤其有意义。所有用户的内容都没有差异,但您只想翻译它。

示例4.有时(请参阅CNN)人们使用本地域名部分,即http://english.example.com/http://arabic.example.com/。这可以被视为3的变体 - 您实际上会使用某种URL过滤器并在cookie中设置语言。

示例5.对于典型的Web应用程序/网站(到处都是相同的内容),在我看来,最好实际使用某种Locale检测工作流程。在这种情况下,您是否会使用任何语言提供特定域名 BTW。您可能希望在地理位置上拆分基础架构,以便位于俄罗斯的服务器池响应http://example.ru/并且这些池仅包含俄语资源 - 在这种情况下,您肯定会使用重定向。如果你有一个中央服务器池,它实际上没有多大意义 回到检测工作流程......

  1. 从Web浏览器中检测区域设置(毕竟有一些原因需要引入HTTP Accept-Language标头)。这应该占主导地位:用户通常希望以他/她的语言查看内容。它已经在Web浏览器首选项中设置了,那么为什么我们要强制用户再次选择呢? 在检测到语言(在任何域上)之后,您只需设置会话cookie,以便所有后续请求都使用此信息(除非......)。
  2. 如果您的应用程序包含用户配置文件,则最好允许在配置文件中更改用户的默认UI语言和格式化语言。它也是存储首选时区的好地方。请注意,浏览器Locale应该是这些设置的良好默认值 - 对于UI语言,您将使用后备机制(我稍后会深入研究),因此如果用户更喜欢de-AT(德国,奥地利)Locale,那么将简单地de(德语的公共资源),Formatting Locale不会回退,因此它将是de-AT(或de_AT,取决于实际的Locale表示)。时区问题较多,但不是这个答案的主题 显然,这应该覆盖Web浏览器的Locale。
  3. 您可以使用任一网址参数(即http://example.com/index.html?lang=de)或较低级别的域名(即http://deutsch.example.com/)来覆盖当前选择的内容。这很重要有两个原因:一个是允许用户以给定语言为链接添加书签,其次是允许选择在技术支持会话期间可能有用的精确给定语言(想象一些帮助台工程师在中文语言环境中远程控制Web浏览器 - 如何切换语言?)。
  4. 或者,您可能希望实现语言切换下拉菜单。显然,它可以简单地重定向到http://deutsch.example.com/
  5. 示例6.虽然我高度反对,但有些网站使用用户IP地址来评估他/她的地理位置,以便将他/她重定向到本地化网站。地理定位也可用于此目的。同样,如果您的本地网站存在显着差异,那么它可能很少(只是很少)。

    现在语言回落。通常HTTP Accept-Language标头如下所示:

    Accept-Language: da, de;q=0.8, fr;q=0.7
    

    在这种情况下,最喜欢的语言是丹麦语,但用户似乎也懂德语和法语。因此,如果你找不到丹麦语的资源但实际上有德语资源,那么回归英语是不合适的。只有当没有任何内容适合时,您应该浏览列表并回退到您的应用程序默认值 这也显示了另一个问题:有时此标题中没有关于国家/地区的信息。那么Locale应该使用什么来格式化日期,数字等?我不认为这个问题有一个很好的答案 - 在这种情况下,用户配置文件确实是一个很好的解决方案。问题是,如果你已经拥有一些用户群,那么很难强迫他们设置这些信息。