2008-12-16 60 views
1

我有,这将最终支持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”和“我们”虚拟目录和语言的虚拟内部的目录。是很好的做法,或者我应该这样做:

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/ FR/ 网站。 COM /美国/ EN /(默认) site.com/us/ ES/

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

+0

感谢您写回您的解决方案! – Ropstah 2010-01-14 15:52:35

+0

没问题。虽然,我现在在我的网站中使用URL路由来执行此操作。更优雅。 – Armstrongest 2010-01-15 16:44:38

回答

1

那么,他们希望每个网站的Url都不相同。

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

我们每次发布,我会发布时间到四个地点。完全相同的应用

使用一个URL的全球化听起来像一个好主意,但我不认为它会正确蜘蛛,即使它,也不提供良好的书签链接。 (法国人使用设置为英语的计算机将链接发送给另一个法国人)。还有其他的影响,但是有一个原因像苹果和微软这样的网站为每种语言/文化使用不同的URL。

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

在结束,我只是把一个/ ca /​​和/ us /目录放在主应用程序中,为每种语言添加一些虚拟目录做一个响应重定向到“选择语言”页面。

也许不是最好的解决方案,但它似乎工作。

这样做的另一个好处是,如果有一些特殊页面只适用于一个站点,它可以只添加到该站点。

1

为什么不在一个站点上检查客户端设置(request.servervariables/HTTP_ACCEPT_LANGUAGE)以选择使用哪种首选语言并在asp.Net中使用内置的全球化?

如果完全不同的内容将显示取决于国家/语言,那么我可以理解为什么将它们分开。

0

对于语言代码连字符国家代码,本地化的一般接受术语是ll-CC。例如:en-US,虽然en-US可能是默认的en-GB或en-CA,因为后备... es-MX等也值得。尽管使用子域名可能会更好,但如果前面没有复杂的负载均衡规则,则可以分割资源。例如:us.en.yoursite.com ...这也允许在webfarm环境中更轻松地分解服务器。我建议让实际代码与每个网站的设置更改相同以匹配本地化。然后使用通过文本键传递的本地化资源,并根据网站的本地化模式解析语言翻译。注意:.Net和其他平台提供了内置的资源本地化选项。