2017-01-14 74 views
0

我有以下問題Sitecore的多語種

物品等級回退在「Sitecore.LanguageFallback.config」和回退/默認語言是啓用「EN」

語言在網站上配置了:恩,德,EL, ES,FR,IT,JA,PT,ZH

情景:我們嘗試用俄語(RU)或我們沒有在Sitecore的配置任何其他語言來訪問網站。該網站仍然加載沒有任何錯誤,但沒有內容被提取,因爲未配置語言,英語語言的後退不起作用。

Sitecore的是否加載了所有可用的有效語言的頁面,不論語言中,我們配置下的系統/語言。如果是,那麼我們是否應該在代碼中明確處理以限制此行爲或回退到英語?或者我們可以通過配置來處理這種情況。

enter image description here

回答

0

你的語言回退不設置正確。閱讀Sitecore站點上的manual

爲了有一個俄羅斯版本回落到英語,你需要創建一個俄語(它會出現在語言列表中的截圖)。在該項目上,您可以填寫Fallback Language字段。將其設置爲英文。這定義了回退語言。

爲了讓您的物品使用item fallback(這是你想要的,如果你不想用俄語創建版本),你必須啓用你的物品。最簡單的方法是將其設置在模板的standard values中。必須檢查複選框以使後備機制生效。

+0

感謝您的答覆俄羅斯只是在以上場景的例子也可以是其他語言也說的http://網站名稱/ sc_lang = AR-AE我們可以有沒有配置或不需要在系統中的任何語言,所以問題是, sitecore是否加載所有可用語言的頁面,而不管我們在系統/語言下配置的語言如何。如果是,那麼我們是否應該在代碼中明確處理以限制此行爲或回退到英語?或者有什麼辦法可以通過配置來處理這個問題 – user2332873

+0

如果它是一個有效的語言代碼,Sitecore會加載頁面,所以如果你想讓它受到限制或備用,你需要自己處理。 – Gatogordo

1

這是預期的行爲不幸的是,Sitecore的將所有語言的加載,無論你是否有他們啓用/ CMS中的配置。

你需要自己處理代碼。可能的選項是約翰韋斯特的use a similar processor to this並覆蓋StripLanguage處理器。

public override void Process(PreprocessRequestArgs args) 
{ 
    if (args != null 
    && args.Context != null 
    && !string.IsNullOrWhiteSpace(args.Context.Request.FilePath)) 
    { 
    string prefix = WebUtil.ExtractLanguageName(
     args.Context.Request.FilePath); 

    if ((!string.IsNullOrWhiteSpace(prefix)) 
     && !this._validLanguages.Contains(prefix.ToLower())) 
    { 
     return; 
    } 
    } 

    base.Process(args); 
} 

通過解讀URL請求的時候根本就沒有剝離出來的語言代碼,Sitecore的將盡力解決這個問題不會找到你的家下一個匹配ru項目,因此拋出404,你會期望它的項目。 (您也可以在此階段將用戶重定向到默認語言)。

小幅下跌一面,這是該語言在配置中指定的任何改變都需要部署。根據您的具體要求,如果您需要更具動態性,則可以從Sitecore樹中指定的項中讀取這些內容。