2016-04-06 11 views
1

Ich habe einen Code hinzugefügt, um die Sprache auf die Standard-Webseitensprache zu ändern, wenn keine Sprache in der URL vorhanden ist. Also, wenn ich auf Dansih Website bin: http://mywebsite/da dann habe ich den Sprachcode "da" entfernt, ich bin auf die Standard-Website Sprache, die Englisch ist. Das Problem ist, dass auf einigen Seiten eine zweite Seite aktualisiert werden muss, um die Sprache auf die Standardwebsite-Sprache einzustellen, auch wenn die Cookie-Sprache korrekt geändert wurde. dies ist mein Code:Wie setze ich die Sprache auf die Standardsprache zurück?

Ich habe Modul für das, so in web.config ich das int Ende unter system.webServer/modules hinzugefügt:

<add name="ResetLanguageModule" type="MyWebsite.Modules.ResetLanguageModule, MyWebsite.Web" /> 

Mein Code:

public void Init(HttpApplication app) 
{ 
    app.BeginRequest += Application_BeginRequest; 
} 

private static void Application_BeginRequest(object sender, EventArgs e) 
{ 
    // if user is on the root or the url does not contians language in url 
    if (HttpContext.Current.Request.RawUrl == "/" || !HttpContext.Current.Request.RawUrl.Contains(string.Format("/{0}/", Sitecore.Context.Language.Name))) 
    { 
     ResetLanguage(); 
    } 
} 
private static void ResetLanguage() 
{ 
    // change language to default one if the comming request is a page. 
    if (Sitecore.Context.Page != null && 
     Sitecore.Context.Site != null && 
     Sitecore.Context.Language.Name != Sitecore.Context.Site.Language) 
    { 
     Language currentSiteLanugage; 
     if (Language.TryParse(Sitecore.Context.Site.Language, out currentSiteLanugage)) 
     { 
      Sitecore.Context.SetLanguage(currentSiteLanugage, true); 
     } 
    } 
} 
+3

Haben Sie versucht, Ihren Code in die Pipeline 'httpRequestBegin' zu verschieben? Vor dem Standard 'LanguageResolver'? –

+1

Ich habe es vor SiteCore LanguageResolver verschoben, und es funktioniert jetzt gut, Danke @MarekMusielak –

Antwort

4

sollten Sie wandeln Sie Ihre Modul in einen Prozessor und fügen Sie es der Pipeline httpRequestBegin hinzu.

Stellen Sie sicher, dass Sie es vor dem Standard Sitecore LanguageResolver hinzufügen.

Verwandte Themen