gpt4 book ai didi

sitecore - 如何在 Sitecore 多语言解决方案中设置默认语言?

转载 作者:行者123 更新时间:2023-12-02 07:32:11 26 4
gpt4 key购买 nike

我有一个支持 3 种语言(英语、西类牙语和法语)的 Sitecore 网站,用户可以通过网站上的切换开关更改语言。

web.config 站点部分,defaultLanguage 是“en”,但即使在这之后,当我转到 www.abc.com/es.aspx 等西类牙语版本时,然后如果我去 www.abc.com(英文版),网站仍然是西类牙语。

知道如何将默认语言设置为英语吗?

最佳答案

假设您的sites 配置包含

<site ... language="en" ... />

您可以定义自己的模块,对于每个新 session 都会将语言重置为默认语言。

首先你需要创建模块类:

using Sitecore.Globalization;
using System;
using System.Web;
using System.Web.SessionState;

namespace My.Assembly.Namespace
{
public class ResetLanguageModule : IHttpModule, IRequiresSessionState
{
public void Init(HttpApplication app)
{
if (app.Modules["Session"] != null)
{
SessionStateModule session = (SessionStateModule) app.Modules["Session"];
session.Start += Session_Start;
}

app.BeginRequest += Application_BeginRequest;
}

private static void Application_BeginRequest(object sender, EventArgs e)
{
// if there is no referrer or user comes from external site
if (HttpContext.Current.Request.UrlReferrer == null
|| HttpContext.Current.Request.UrlReferrer.Host != HttpContext.Current.Request.Url.Host)
{
// if user is on the root
if (HttpContext.Current.Request.RawUrl == "/")
{
ResetLanguage();
}
}
}

private static void Session_Start(object sender, EventArgs e)
{
ResetLanguage();
}

private static void ResetLanguage()
{
if (Sitecore.Context.Language.Name != Sitecore.Context.Site.Language)
{
Language currentSiteLanugage;
if (Language.TryParse(Sitecore.Context.Site.Language, out currentSiteLanugage))
{
Sitecore.Context.SetLanguage(currentSiteLanugage, true);
}
}
}

public void Dispose()
{
}
}
}

然后在web.config中注册模块:

<system.webServer>
<modules>
... all existing modules
<add name="ResetLanguageModule" type="My.Assembly.Namespace.ResetLanguageModule, My.Assembly" />
</modules>
</system.webServer>

当您打开浏览器并且关闭选项卡并重新打开时,这可能不起作用,因为浏览器可能仍保持 session 事件。

关于sitecore - 如何在 Sitecore 多语言解决方案中设置默认语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20724084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com