Sitecore.Context.Language和Sitecore.Context.ContentLanguage之间的Sitecore差异

Kam*_*ran 2 c# sitecore sitecore7.2

对于我的网站:

输出Sitecore.Context.Languageda

而输出Sitecore.Context.ContentLanguageen.

lblTest.Text = Sitecore.Context.Language+" & "+ Sitecore.Context.ContentLanguage;

output: da & en
Run Code Online (Sandbox Code Playgroud)

这两个术语之间的基本区别是什么?我如何修改它们以使用其他语言?

谢谢!

Vla*_*giu 12

内容语言表示客户端(内容编辑器)中的默认编辑语言.这是每个网站的网站定义属性.

Sitecore.Context.Language代表网站导航时的上下文语言.

例如,如果您有丹麦编辑,那么内容语言将是丹麦语.您可以使用多种上下文语言,因为访问者可以切换他们的语言.

Sitecore.Context.Language是一个智能属性,这意味着它遵循延迟加载模式:如果代码在没有设置它时访问此属性,则属性的getter包含用于确定上下文语言的逻辑.

Sitecore使用httpRequestBegin管道中的Sitecore.Pipelines.HttpRequest.LanguageResolver处理器来确定上下文语言.

如果要更改内容语言,则需要修改网站定义.要更改编程上下文语言,您可以使用:

 Sitecore.Context.Language=yourlanguage;
Run Code Online (Sandbox Code Playgroud)

更新 后,我读了评论更改上下文的语言,你可以使用:

 var myItem = Sitecore.Context.Item;
 using (new Sitecore.Globalization.LanguageSwitcher("da-DK"))
 {
    myItem = myItem.Database.GetItem(myItem.ID);
 }
Run Code Online (Sandbox Code Playgroud)

  • 如果要为一小段代码临时调整上下文语言,可以在using块中使用`LanguageSwitcher`. (2认同)