2017-01-14 3 views
0

У меня следующий вопросSitecore Multilingual

Уровень предмета Запасной включен в язык «Sitecore.LanguageFallback.config» и запасной вариант/по умолчанию является «ан»

Языки, настроенные на сайте: еп, де, эль, es, fr, it, ja, pt, zh

Сценарий: Мы пытаемся получить доступ к сайту с русским (русским) или любым другим языком, который мы не настроили в sitecore. Сайт по-прежнему загружается без каких-либо ошибок, но содержимое не загружается, так как язык не настроен, резервное копирование на английский язык не работает.

Поддерживает ли sitecore страницу для всех допустимых языков независимо от языков, которые мы настраиваем в системе/языках. Если да, то следует ли мы явно обрабатывать в нашем коде, чтобы ограничить это поведение или вернуться на английский? Или есть способ, которым мы можем справиться с этой конфигурацией.

enter image description here

ответ

0

Ваш язык запасной вариант не настроен правильно. Прочтите manual на сайте Sitecore.

Чтобы иметь русскую версию, возвращающуюся на английский язык, вам необходимо создать русский язык (он появится в списке «Языки» как на вашем скриншоте). В этом пункте вы можете заполнить поле Fallback Language. Установите это на английский. Это определяет резервный язык.

Для того, чтобы ваши товары использовали item fallback (это то, что вам нужно, если вы не хотите создавать версии на русском языке), вы должны включить это на своих элементах. Самый простой способ сделать это - установить его в шаблонах standard values. Флажок должен быть проверен на работоспособность резервного механизма.

+0

Спасибо за ответ. Русский - это просто пример в приведенном выше сценарии, это может быть другой язык и сказать: http: // Sitename /? Sc_lang = ar-AE мы можем иметь любой язык в системе, который не настроен или не требуется, поэтому вопрос Поддерживает ли sitecore страницу для всех доступных языков независимо от языков, которые мы настраиваем в системе/языках. Если да, то следует ли мы явно обрабатывать в нашем коде, чтобы ограничить это поведение или вернуться на английский? Или есть способ, которым мы можем справиться с этим через конфигурацию. – user2332873

+0

Если это допустимый код языка, Sitecore загрузит страницу, поэтому вам нужно будет справиться с этим самостоятельно, если вы хотите, чтобы она была ограничена или отменена. – Gatogordo

1

Это ожидаемое поведение, к сожалению, Sitecore будет загружаться для всех языков, независимо от того, включены ли они в CMS.

Вам необходимо обработать это самостоятельно в коде. Возможная опция: use a similar processor to this от John West и переопределить процессор 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, если требуется, чтобы он был более динамичным.

 Смежные вопросы

  • Нет связанных вопросов^_^