2014-01-17 5 views
1

У меня есть простой веб-сайт с двумя языками, английский и французский. На моей главной странице у меня есть гиперссылка, которая переключается на другой язык. Когда пользователь нажимает на эту гиперссылку, я хочу создать URL-адрес точно так же, как это делает Microsoft.com! То значит:Как переключить язык сайта в VB.NET Web.Form?

  1. http://www.microsoft.com/пт-ча /locale.aspx
  2. http://www.microsoft.com/ан-нас /locale.aspx

И сделать это, я немного запутался! Я регистрирую somes маршруты, чтобы сделать это, но я не знаю, где я динамически переключаю переменную querystring для достижения этого.

Вот мое RegisterRoutes из Application_Start в Global.asax:

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 

Я знаю, что это основной вопрос, но я не нахожу никакого ответа об этом. Итак, каков хороший способ сделать это?

Еще раз спасибо за помощь!

ответ

0

Следующий код будет получить язык из заголовка запроса пользователя/браузера (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] 

Надеется, что это отвечает его. Thanks

Смежные вопросы