2012-11-09 52 views
1

我正在尋找一種方法來強制Orchard在後端使用固定語言,同時仍然可以使用CulturePicker作爲前端。具有固定後端語言的多語言果園網站?

任何暗示將高度讚賞 - 是我與烏節路的第一個項目我真的不知道從哪裏開始 - 除了難看黑客...

+0

到底爲什麼你要這麼做?看起來像矯枉過正,因爲您可以在導航到儀表板之前切換文化...... – mdm

+0

這正是我不想做的。如果我在外語的前端,我可能甚至不理解,我點擊「編輯」鏈接來複制和粘貼從第三方提供的一些內容我想了解後端。一旦客戶員工想要自己開始編輯內容,情況尤其如此。 – scooby37

回答

2

最簡單的方法是實現自己ICultureSelector

您需要先檢查用戶是否在管理員屏幕上。如果是這樣,返回默認的網站文化,否則返回null(這種方式下一個文化選擇器,在你的情況下,從CulturePicker,應該踢)。

例子:

public class AdminCultureSelector : ICultureSelector { 
    private readonly IWorkContextAccessor _workContextAccessor; 

    public AdminCultureSelector(IWorkContextAccessor workContextAccessor) { 
     _workContextAccessor = workContextAccessor; 
    } 

    public CultureSelectorResult GetCulture(HttpContextBase context) 
    { 
     string currentCultureName = _workContextAccessor.GetContext().CurrentSite.SiteCulture; 

     if (!String.IsNullOrEmpty(currentCultureName) && AdminFilter.IsApplied(context.Request.RequestContext)) { 
      return new CultureSelectorResult { Priority = 1000, CultureName = currentCultureName }; 
     } 

     return null; 
    } 
} 
+0

非常感謝!我剛建立了我的第一個果園模塊,它的功能就像一個魅力。我有一種感覺,一旦你知道從哪裏開始就不會那麼難。我真的很喜歡Orchard的可擴展性,與其他系統相比,它非常乾淨 - 真正困難的事情似乎是要知道所有的定位點;-) – scooby37

+0

很高興聽到!事實上,這是非常可擴展的。幾乎每一個默認的Orchard功能都可以在不接觸核心的情況下輕鬆覆蓋/擴展。最難的部分是確定要實現的接口,但(我們將有一天記錄所有這些信息:) –