2014-10-16 50 views
2

我正尝试以编程方式创建sitecore项目。一切正常。但是我创建的项目使用语言“EN-GB”,但是创建的新项目使用语言“EN”。有没有办法在创建项目时设置语言值?以特定语言编程创建sitecore项目

var currentDatabase = Sitecore.Configuration.Factory.GetDatabase(selectedItem.Database.Name); 

    if (currentDatabase != null) 
    { 
     var rootItem = currentDatabase.GetItem(RootItemPath); 

     if (rootItem != null) 
     { 
      //Create new item 
      var item = rootItem.Add(selectedItem.Name, CommunityProjectTemplateId); 

      if (item != null) 
      { 
       item.Fields.ReadAll(); 
       item.Editing.BeginEdit(); 

       try 
       { 
        //Add values for the fields 
        item.Fields["Overview Body Content"].Value = selectedItem.GetStringField("ProjectOverview"); 
       } 
       catch (Exception) 
       { 
        item.Editing.EndEdit(); 
       } 
      } 
     } 
    } 

回答

8

您需要在检索根项目之前切换上下文语言。

using (new LanguageSwitcher("en-gb")) 
{ 
    var rootItem = currentDatabase.GetItem(RootItemPath); 
    var item = rootItem.Add(selectedItem.Name, CommunityProjectTemplateId); 

    // Do your editing on item here... 
} 
+1

但为什么不从配置文件中选择默认语言? – 2014-10-16 14:19:29

1

您可以使用下面的代码创建一个项目

var language = Sitecore.Globalization.Language.Parse("en-GB");  

Sitecore.Context.SetLanguage(language, true); 

最后一行之前将上下文语言设置为EN-GB。然后该项目将使用该语言版本创建。

4

如果您尝试在en-GB中添加项目,请确保您获得的“Root项目”位于en-GB中。

Language language; 
Language.TryParse("en-GB", out language); 
var rootItem = currentDatabase.GetItem(RootItemID, language); 

之后,如果您尝试添加项目,它将以该语言。 使用语言切换器也是一个好主意,但在更改语言上下文时要小心。

+0

根项目位于en-GB。 – 2014-10-16 14:20:05