我希望在ASP.NET中构建一个站点。我需要使用法语和英语,域名设置如下:
en.mysite.com fr.mysite.com
如果可能,我不想复制代码或必须将文件上传到这两个域。
最好将所有文件放在www.mydomain.com上,然后使用资源文件对翻译进行排序。
在ASP.NET中设置它的最佳方法是什么?
答案 0 :(得分:3)
我的解决方案是在BeginRequest
global.asax
中设置lang
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim lang As String = "es" ''//default
If Request.Url.ToString.ToLower.StartsWith("http://es.")
lang = "es"
ElseIf Request.Url.ToString.ToLower.StartsWith("http://en.") Then
lang = "en"
End If
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang)
Site.Idioma = lang ''//static variable that I use in other parts of the site
End Sub
当用户使用用户的浏览器语言首选项点击www.mysite.com时,不要忘记设置重定向
Imports System.Globalization
Partial Class redirect_Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal s As Object, ByVal e As System.EventArgs) _
Handles Me.Load
Select Case Mid(Request.UserLanguages(0).ToString(), 1, 2).ToLower
Case "en"
Response.Redirect("http://en.mysite.com")
Case Else
Response.Redirect("http://es.mysite.com")
End Select
End Sub
End Class
作为一个侧面点,我建议您使用http://www.mysite.com/en,因为从SEO角度来看它更好(如果它对您的网站很重要)
答案 1 :(得分:0)
据我所知,您希望将所有文件放在根目录中,但将子域用于不同的语言。
我认为en.mysite.com和fr.mysite.com必须只是别名,并且应该告诉asp.net应用程序使用什么语言。您可以使用代码更改文化设置。这是很好的描述here。
但是从我的观点来看,这是一种更好的方法,可以在主域上提供语言设置,并提供一些默认语言和在语言之间切换的能力。如果用户建议更改语言 - 他只需点击一个链接即可。语言设置此案例可以存储在任何地方(用户档案,cookie,会话,数据库,如果注册用户等)。
答案 2 :(得分:0)
如果我要实现这个,我会这样做: 将en.mysie.com映射到www.mysite.com/page?lang=en 将fr.mysite.com映射到www.mysite.com/page?lang=fr
然后在母版页中,使用全球化根据参数设置您的语言,如果找到具有相同语言代码的正确app_localresource文件,asp.net页面将自动以该语言提供。
希望这有帮助