Я изо всех сил пытаюсь реализовать многоязычную функциональность в Umbraco CMS версии 7.5, в настоящее время я вижу 2 возможных решения:

1- Используйте только один корневой путь

Я думаю, что лучшим дополнением к этому решению является «Vorto». Все, что мне нужно сделать, это создать новые типы данных, которые расширяют типы данных vorto, и я могу начать редактировать тексты непосредственно на типах документов.

2- Используйте несколько корневых путей

Идея состоит в том, чтобы продублировать основной корневой путь для каждого языка.

-> Я следил за множеством руководств в Интернете, но все они относятся к предыдущим версиям Umbraco, и решения, которые я нашел, похоже, не работают с текущей версией ... Как только я дублирую корневой путь и связываю язык с корневой папкой , что дальше?

У меня есть еще несколько вопросов:

  1. У вас есть лучшее решение, чем 2 сверху?
  2. Как Umbraco знает клиентский язык? Принимает ли он первый язык в заголовке «Accept-language» в HTTP-запросе?
  3. Как я могу расширить маршрутизацию по умолчанию, чтобы добавить язык в качестве первой части, например: http: //domainName.ext/language /....

Заранее спасибо!

0
Aliz 10 Окт 2016 в 14:32

3 ответа

Лучший ответ

Оба сценария имеют свои плюсы и минусы, и оба широко используются в сообществе / решениях Umbraco. Я предпочитаю второе решение, так как особенно на крупных сайтах оно дает вам возможность ограничить доступ, например, для редакторов на разных языках, и не каждый сайт должен иметь структуру содержимого 1-1.

Здесь есть эпизод телеканала Umbraco: https://umbraco.tv/videos/umbraco-v7/implementor/multi-lingual/creating-a-multi-lingual-site/introduction/.

Таким образом:

  • вам нужно создать копию вашего корневого языкового узла
  • затем настройте культуру для этого
  • использовать элементы словаря для перевода статического содержимого для каждого языка
  • создать простой выбор языка, выбирая связанный сайт или просто перенаправляя на выбранный корень языка

По поводу ваших вопросов:

Ad.1. Нет :)

Ad.2. Он выбирает культуру, установленную на узле (ах), поэтому это может быть принудительно. В остальном он использует стандартное определение культуры .NET, так что да - он использует заголовки "accept-language".

Ad.3. Существует ключ umbracoHideTopLevelNodeFromPath, который позволяет вам включать корни верхнего уровня в пути URL. Подробнее: https://our.umbraco.org/documentation/reference/config/webconfig /

И все же, если вы предпочитаете вариант 1, есть отличная статья об этом с примером кода: http://24days.in/umbraco/2015/multilingual-vorto-nested-content/. Я сейчас тоже поиграюсь! :)

3
Marcin Zajkowski 10 Окт 2016 в 12:34

Что касается вашего первого пункта, есть другой путь, но не на время. Umbraco 8 (выйдет в первом квартале 2017 года) будет поддерживать концепцию вариантов страниц, что означает, что у вас может быть одно дерево, а затем вариант для каждого другого языка, что устраняет необходимость в таких вещах, как Vorto.

Однако еще рано, поэтому нам придется подождать и посмотреть, насколько хорошо работает эта функция!

0
Tim 12 Окт 2016 в 09:25

Что ж, самый простой способ сработать для варианта 2 - это создать такую ​​древовидную структуру:

Корень

  • LanguageS
  • Язык

Если вам нужен URL-адрес domain.ext / language /, установите domain.ext на корневом узле и установите язык на каждом из языковых узлов. Вы также можете установить домен и язык на каждом из языковых узлов, чтобы получить (например) domainname.com для одного и domainname.net для другого.

Этот способ сделать это в последнее время не должен был меняться.

1
Jannik Anker 10 Окт 2016 в 11:55