如何将语言重置为默认语言
How Do I Reset Language to Default Language
如果 URL 中没有语言,我添加了将语言更改为默认网站语言的代码。所以如果我在丹麦网站上:http://mywebsite/da
然后我删除了语言代码 "da",我正在切换到默认的网站语言,即英语。
问题是某些页面需要刷新第二页才能将语言设置为默认网站语言,即使 cookie 语言已正确更改。这是我的代码:
我为此创建了模块,所以在 web.config 中,我在 system.webServer/modules
的末尾添加了这个:
<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);
}
}
}
您应该将模块转换为处理器并将其添加到 httpRequestBegin
管道。
确保在默认 Sitecore 之前添加它 LanguageResolver
。
如果 URL 中没有语言,我添加了将语言更改为默认网站语言的代码。所以如果我在丹麦网站上:http://mywebsite/da
然后我删除了语言代码 "da",我正在切换到默认的网站语言,即英语。
问题是某些页面需要刷新第二页才能将语言设置为默认网站语言,即使 cookie 语言已正确更改。这是我的代码:
我为此创建了模块,所以在 web.config 中,我在 system.webServer/modules
的末尾添加了这个:
<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);
}
}
}
您应该将模块转换为处理器并将其添加到 httpRequestBegin
管道。
确保在默认 Sitecore 之前添加它 LanguageResolver
。