2016-07-16 22 views
0

Ich möchte Multi-Language-Website in MVC zu machen. Hier ist, was ich habe, bis Know getanRoute wechseln, MultiLanguage Website in MVC

  1. Machen Sie zwei Ordner in Ansichten wie En und Ar
  2. Innerhalb dieses Ordners habe ich eine 2 Ansicht beide mit dem gleichen Namen wie „Home“

Jetzt Nehmen wir an, wenn ich in englischer Version bin, wird die URL etwas wie localhost/En/Home sein, In der Home-Ansicht habe ich html Button Nun was ich will ist, dass, wenn der Benutzer den Button drückt, sollte er auf localhost/Ar/umleiten WhateverPage und wenn der Benutzer in arabischer Version ist, sollte umgekehrt passieren.

Also zusammenzufassen, alles, was ich tun möchte, ist die Url von En/Startseite zu Ar/Home ändern.

Hinweis werde ich diese HTML-Taste in dem Layout.cshtml so Einmal

ich dies nur zu programmier
+0

Für das Routing/Gewindeteil finden Sie unter [ASP.NET MVC 5 Kultur in Route und url] (http: // Stackoverflow. com/a/32839796/181087). Nachdem Sie das getan haben, wird Ihr aktueller Thread die aktuelle Kultur haben. Sie müssen nur [die Ansichts-Engine anpassen] (http://Stackoverflow.com/a/16517536/181087) auswählen, um die richtige Ansicht basierend auf dem aktuellen Thread auszuwählen. Sie könnten LTR- und RTL-Ansichten mit Ressourcen in Erwägung ziehen, aber wenn dies die einzigen zwei Sprachen sind, die Sie benötigen, lohnt sich der zusätzliche Aufwand möglicherweise nicht. – NightOwl888

Antwort

0

Sie zwischen den Seiten durch die Kenntnis der aktuelle Kultur des Browsers und hält auch die Auswahl für die Nutzer ihn zu umleiten navigieren zu den Zielsprachen unabhängig der aktuellen Kultur des Browsers

dies einfach durch den Code unten

if (!string.IsNullOrEmpty(Request.QueryString["Lang"])) 
    { 
     HttpCookie myCookie = (HttpCookie)Request.Cookies["cLang"]; 
     if (myCookie != null) 
     { 
      if (myCookie["Lang"] != Request.QueryString["Lang"].ToString()) 
      { 
       myCookie["Lang"] = Request.QueryString["Lang"].ToString(); 
       myCookie.Expires = DateTime.Now.AddYears(1); 
       Response.Cookies.Add(myCookie); 

       System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Request.QueryString["Lang"]); 
       System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(Request.QueryString["Lang"]); 
       Response.Redirect(Request.Url.AbsoluteUri); 
      } 
     } 
     else 
     { 
      string strLang = Request.QueryString["Lang"]; 
      myCookie = new HttpCookie("cLang"); 
      myCookie.Values.Add("Lang", strLang); 
      myCookie.Expires = DateTime.Now.AddYears(1); 
      Response.Cookies.Add(myCookie); 
      System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(strLang); 
      System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(strLang); 
     } 

    } 

Aber was, wenn Sie eine andere Sprache zu Ihrer Website hinzufügen wollen getan werden kann? werden Sie die gleichen Seiten kopieren und in die andere Sprache übersetzen?!

nicht die beste Wahl, so stark empfehle ich den folgenden Artikel zu lesen (http://afana.me/post/aspnet-mvc-internationalization.aspx)