2016-04-06 13 views
1

URLに言語がない場合、デフォルトのウェブサイト言語に言語を変更するコードを追加しました。だから私はdansihウェブサイト上にある場合:http://mywebsite/da 私は言語コード "ダ"を削除した、私は英語のデフォルトのウェブサイトの言語に切り替える。 Cookie言語が正しく変更されていても、言語をデフォルトのウェブサイト言語に設定するには、2ページ目の更新が必要なページがあります。これは私のコードです:言語をデフォルトの言語にリセットするには

web.configファイルで私はsystem.webServer/modulesの下で最後のintこれを追加しましたので、私は、そのためのモジュールを作成しました:

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

マイコード:

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

あなたのコードを 'httpRequestBegin'パイプラインに移動しようとしましたか?デフォルト 'LanguageResolver'の前に? –

+1

私はsitecore LanguageResolverの前に移動しましたが、今は正常に動作しています。Thanks @MarekMusielak –

答えて

4

あなたのを変換する必要がありますモジュールをプロセッサに追加し、httpRequestBeginパイプラインに追加します。

デフォルトのSitecore LanguageResolverの前に追加してください。

関連する問題