2016-04-06 15 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.