【问题标题】:How to switch website language in VB.NET Web.Form?如何在 VB.NET Web.Form 中切换网站语言?
【发布时间】:2014-02-07 01:04:05
【问题描述】:

我有一个简单的网站,有两种语言,英语和法语。在我的母版页中,我有一个可以切换到其他语言的超链接。当用户单击该超链接时,我想生成与 Microsoft.com 完全相同的 URL!意思是:

  1. http://www.microsoft.com/fr-ca/locale.aspx
  2. http://www.microsoft.com/zh-cn/locale.aspx

要做到这一点,我有点困惑!我注册了一些路由来做到这一点,但我不知道我在哪里动态切换查询字符串变量来实现这一点。

这是我在 Global.asax 中来自 Application_Start 的 RegisterRoutes:

Sub RegisterRoutes(ByVal routes As RouteCollection)

    Dim language As String = "en-us"

    routes.MapPageRoute("Home", "home/{language}/{ReturnUrl}", "~/Default.aspx", True, 
        New RouteValueDictionary(New With {.language = language, .ReturnUrl = "default.aspx"}))

    routes.MapPageRoute("DetailsUser", "info-user/{language}/{id}", "~/DetailUsager.aspx", True,
        New RouteValueDictionary(New With {.language = language, .id = ""}))

    routes.MapPageRoute("Contact", "contact-us/{language}", "~/ContactForm.aspx", True,
        New RouteValueDictionary(New With {.language = language}))

    routes.MapPageRoute("SwitchLanguage", "{language}", "~/Home.aspx", True,
        New RouteValueDictionary(New With {.language = language}))
End Sub

我知道这是一个基本问题,但我没有找到任何答案。那么有什么好的方法可以做到这一点呢?

再次感谢您的帮助!

【问题讨论】:

    标签: c# asp.net vb.net routes request.querystring


    【解决方案1】:

    以下代码将从用户请求/浏览器标头中获取语言(en-US)

    VB.Net

    For Each s As String In Me.Request.UserLanguages
        Response.Write(s)
    Next
    

    C#

    foreach (string s in this.Request.UserLanguages) {
        Response.Write(s);
    }
    

    当前语言是数组中的第一个:

    VB.Net

    Me.Request.UserLanguages(0)
    

    C#

    this.Request.UserLanguages[0]
    

    希望这能回答它。 谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多