Как настроить многоязычные сайты в Sitecore?

Я только начинаю добавлять поддержку нескольких языков на свой сайт... возникли проблемы. Вот шаги, которые я предпринял до сих пор:

  1. В Панели управления -> Глобализация добавлен новый язык (немецкий).

  2. Добавлено новое определение <site> в Web.config с hostName="localGerman.com" и language="de". Также добавил псевдоним в файл hosts для localgerman.com, чтобы указать на localhost, и добавил заголовок хоста в IIS.

  3. Перешел к элементу в моем дереве и добавил новую версию для немецкого языка. Опубликован весь сайт.

Теперь настройка хоста/сайта работает нормально. Когда я перехожу к http://localgerman.com/, я получаю свою домашнюю страницу с большим количеством недостающих данных... немецкой версии нет... так что, кажется, используется правильный язык.

Однако... когда я перехожу к элементу, для которого я добавил немецкую версию, я все равно получаю пустые данные. В отладчике я вижу, что Sitecore.Context.Item это немецкая версия... но все поля пусты. Item["Content"] возвращает пустую строку. Если я вручную установлю язык «en» в URL-адресе (http://localgerman.com/myitem.aspx?sc_lang=en), я получу английскую версию с данными.

Что мне здесь не хватает?

Кроме того... при загрузке домашней страницы на немецком языке... мое меню пусто. Предположительно, потому что элементы, которые генерируют этот контент, не имеют немецких версий. Я исходил из того, что, когда языковая версия для данного элемента не может быть загружена, используется языковая версия по умолчанию? Но, похоже, это не так. Я ошибся?


person Bryan    schedule 22.02.2011    source источник
comment
Я не уверен в этом, но вы публиковали постепенно? Такое изменение может потребовать как минимум умной публикации. Просто мысль...   -  person Yan Sklyarenko    schedule 22.02.2011


Ответы (2)


Хорошо, похоже, я просто ошибся в коде языка. Установка языка сайта на «de-DE» вместо «de» сработала.

Это немного сбивает с толку, потому что сайты по умолчанию используют language="en" вместо en-US.

person Bryan    schedule 22.02.2011

Вы добавили немецкую версию элемента, но заполняли ли поля на немецком языке? Любые локализуемые поля (не общие) будут пустыми по умолчанию при создании новой версии. Похоже, вы сделали другие части правильно.

Ожидается, что меню будет пустым: когда вы попытаетесь получить языковую версию несуществующего элемента, Sitecore вернет null.

person driis    schedule 22.02.2011
comment
Судя по вашему описанию, что-то не так в установке или настройке. Попробуйте получить элемент с помощью API (Sitecore.Context.Database.GetItem) на немецком языке и проверьте, есть ли в полях содержимое. - person driis; 22.02.2011