如何将语言重置为默认语言

问题描述 投票:2回答:1

如果URL中没有语言,我添加了将语言更改为默认网站语言的代码。所以,如果我在丹麦网站上:http://mywebsite/da然后我删除了语言代码“da”,我将切换到默认的网站语言,这是英语。

问题是在某些页面上需要第二页刷新才能将语言设置为默认网站语言,即使cookie语言已正确更改。这是我的代码:

我为此创建了模块,所以在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);
        }
    }
}
sitecore sitecore8 sitecore-mvc sitecore8.1
1个回答
4
投票

您应该将模块转换为处理器并将其添加到httpRequestBegin管道中。

请确保在默认Sitecore LanguageResolver之前添加它。

© www.soinside.com 2019 - 2024. All rights reserved.