我想看看是否有办法使用请求URL / URL重写来设置通过检查ASP.NET中的部分URL来呈现页面的语言。我们有已经与ASP.NET资源本地化一起工作的站点和用户可以更改他们在网站上看到页面/资源的语言,但是由于每种语言的语言变体都显示为一页,因此当前机制不是非常适合搜索引擎。如果我们可以拥有像www.site.com/en-mx/realfolder/realpage.aspx这样的页面,它们可以更好地链接到特定文化版本的页面。
我知道很多人之前可能已经通过URL结构进行了本地化,我想知道你们中的一个人是否可以在Global.asax文件或HTTP模块中共享如何执行此操作(指向链接到博客帖子也很棒。我们限制该网站基于ASP.NET 2.0(所以我们还不能使用3.5+功能)。
以下是示例方案:
真实页面退出: www.site.com/realfolder/realpage.aspx
该页面为用户提供了一种机制 更改显示的语言 通过下拉列表。
有搜索引擎优化 和用户链接共享的好处 这样做,因为人们可以链接 直接到有内容的页面 适用于某种情况 语言(这也可能包括 从右到左的语言布局 像日本人一样。)
我想使用HTTP模块 看看后面的URL的第一部分 www.site.com,site.com, subdomain.site.com等包含一个 有效的文化代码(例如en-us,es-mx) 然后使用该值来设置 本土文化 基于该URL的页面/资源。
因此,如果用户访问该URL www.site.com/en-MX/realfolder/realpage.aspx
然后页面将在墨西哥呈现 西班牙语的变体。
如果用户去了 www.site.com/realfolder/realpage.aspx 直接页面只会使用他们的 浏览器的语言设置。
答案 0 :(得分:0)
我在global.asax中执行此操作,就像这个answer explains一样,然后我在母版页中设置了不同的网址,根据当前的情况更改语言:
即:
If Request.Path.Contains("/en/") Then
DestinationPathEs = Request.Path.Replace("/en/", "/es/")
DestinationPathPt = Request.Path.Replace("/en/", "/pt/")
litLangBar.Text = "<span id='langbares'><a href='" & DestinationPathEs & "'>Español</a></span>"
litLangBar.Text += "<span id='langbarpt'><a href='" & DestinationPathPt & "'>Portugues</a></span>"
litLangBar.Text += "<span id='langbaren' class='active'>English</span>"