#c# #asp.net #web #umbraco
#c# #asp.net #веб #umbraco
Вопрос:
Я изо всех сил пытаюсь реализовать многоязычную функциональность в Umbraco CMS версии 7.5, в настоящее время я вижу 2 возможных решения:
1- Использовать только один корневой путь
Я думаю, что лучшим пакетом в качестве дополнения к этому решению является «Vorto», все, что мне нужно сделать, это создать новые типы данных, которые расширяют типы данных vorto, и я могу начать редактировать тексты непосредственно в типах документов.
2- Использовать несколько корневых путей
Идея состоит в том, чтобы дублировать основной корневой путь для каждого языка.
-> Я следил за множеством руководств в Интернете, но все они относятся к предыдущим версиям Umbraco, и решения, которые я нашел, похоже, не работают с текущей версией… Каков следующий шаг после того, как я продублирую корневой путь и свяжу язык с корневой папкой?
У меня есть еще несколько вопросов:
- Есть ли у вас лучшее решение, чем 2 сверху?
- Откуда Umbraco знает язык клиента? Требуется ли первый язык в заголовке «Accept-language» в HTTP-запросе?
- Как я мог бы расширить маршрутизацию по умолчанию, чтобы добавить язык в качестве первой части, например: 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.
Однако пока еще рано, поэтому нам придется подождать и посмотреть, насколько хорошо работает эта функция!