代码之家  ›  专栏  ›  技术社区  ›  Armstrongest

多语言网站虚拟目录的最佳方式

  •  1
  • Armstrongest  · 技术社区  · 16 年前

    我有一个网站,最终将支持4种语言和2个国家(美国和加拿大,英语和西班牙语)

    我想知道设置目录结构的最佳方法是什么?

    现在,我有一个名为site.com的根网站:

    这将带您进入一个页面,您可以在其中选择您的国家和语言。

    理想情况下,我希望目录是这样的:

    site.com/ca/en/ (Canada English)
    site.com/ca/fr/ (Canada French)
    site.com/us/en/ (US English)
    site.com/us/es/ (US Spanish)
    

    但这意味着我将在其中放置一个“ca”和一个“us”虚拟目录以及语言虚拟目录。这是好的做法吗,或者我应该做这样的事情:

    site.com/ca-en/ (Canada English)
    site.com/ca-fr/ (Canada French)
    site.com/us-en/ (US English)
    site.com/us-es/ (US Spanish)
    

    编辑:我做了以下工作:

    应用程序中有一个虚拟目录:/ca/和/us/。它们都有一个default.aspx,这只是一个重定向。就我而言,我将他们重定向到他们的英语网站:

    例如: site.com/ca/-->site.com/ca/en/ site.com/us/-->site.com/us/en/

    如果输入site.com,您将被推送到语言选择页面。基本上,我在Global.asax中对每个请求都使用正则表达式来查找语言/文化字符串。

    这有以下好处。国家分离。因此,您可以控制site.com/ca/或site.com/us/,并能够为每个国家提供一个简单的URL。

    无论如何,虚拟目录/en/、/fr/和/es/都在各自的国家物理文件夹中。

    所以你有以下内容(虚拟污垢在 大胆的 ):

    site.com/ca/ en /(默认) site.com/ca/ 神父 / site.com/us/ en /(默认) site.com/us/ 东部 /

    这意味着您需要有五个(相同的)应用程序,除了您可以使用URL获取当前语言和国家(并将其指向正确的数据库)。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Stefan    16 年前

    为什么不拥有一个站点,并检查客户端设置(request.servervariables/HTTP_ACCEPT_LANGUAGE)以了解使用哪种首选语言以及在asp中使用内置全球化。网?

    如果根据国家/语言显示完全不同的内容,那么我可以理解为什么要这样分开。

        2
  •  1
  •   Armstrongest    16 年前

    好吧,他们希望每个网站的网址都不同。

    本质上,它实际上是一个站点(出于维护原因),我们使用全球化来确定使用哪个连接字符串(不同的数据库,每个数据库中的结构相同)

    每次我们发布,我都会在四个地方发布。相同的应用程序。

    使用一个URL进行全球化听起来是个好主意,但我认为它不会正确地蜘蛛化,即使这样,也不能提供一个好的书签链接。(法国人使用设置为英语的电脑向另一个法国人发送链接)。还有其他含义,但苹果和微软等网站对每种语言/文化使用不同的网址是有原因的。

    每次会话开始时,我都会检查url,并相应地设置连接字符串。

    最后,我只是在主应用程序中放置了一个/ca/和/us/目录,为每种语言添加一些虚拟目录,并重定向到“选择语言”页面。

    也许不是最好的解决方案,但它似乎正在发挥作用。

    这样做的另一个好处是,如果有一些只适用于一个网站的特殊页面,则只能将其添加到该网站。

        3
  •  0
  •   Tracker1    16 年前

    普遍接受的本地化术语是ll CC,表示语言代码连字符国家代码。示例:en-US,尽管en-US可能是默认设置,en-GB或en-CA作为回退。..es MX等也是值得的。不过,使用子域可能更好,这将允许在没有复杂负载平衡规则的情况下拆分资源。例如:us.en.yoursite.com。..这也允许更容易地分解网络农场环境中的服务器。我建议将实际代码与每个站点的设置更改相同,以匹配本地化。然后使用您传入文本键的本地化资源,语言翻译将根据网站的本地化模式解决。注:。Net和其他平台提供内置的资源本地化选项。

    推荐文章