Несколько вопросов по реализации многоязычной функциональности с помощью Umbraco?

#c# #asp.net #web #umbraco

#c# #asp.net #веб #umbraco

Вопрос:

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

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

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

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

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

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

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

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

Заранее благодарю!

Ответ №1:

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

Здесь есть телевизионный эпизод Umbraco, посвященный этой теме: https://umbraco.tv/videos/umbraco-v7/implementor/multi-lingual/creating-a-multi-lingual-site/introduction/.

Вкратце:

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

Что касается ваших вопросов:

Объявление.1. У меня нет 🙂

Объявление.2. Он выбирает язык, настроенный на узле (узлах), поэтому он может быть принудительным. Кроме этого, он использует стандартное определение культуры .NET, так что да — он использует заголовки «accept-language».

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

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

Комментарии:

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

Ответ №2:

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

Корень

  • LanguageA
  • LanguageB

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

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

Ответ №3:

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

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