2014-10-16 49 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