Я занимаюсь разработкой ASP. NET Core 3.1 MVC веб-сайта, который использует доменные имена для определения культуры локализации.
Например, все запросы, поступающие в домен example.com
, будут имеет культуру en-US
, тогда как все запросы, поступающие на домен example.org
, будут иметь культуру de-DE
.
Я изменил свой ранее нелокализованный веб-сайт, чтобы использовать локализацию в представлениях, и т. д. c .. I использовали собственную реализацию RequestCultureProvider
для установки культуры на основе доменного имени. В результате получилось следующее:
Примечание: Products
- это контроллер, My-Application
- имя приложения (URL-адрес из базы данных), а Help
- действие в контроллере Products
. Структура URL - это фактическая структура, которую я использую для своего веб-сайта.
Однако я также хочу перевести URL, полагаясь только на имена Engli sh в реальном исходном коде ( классы контроллера и функции действия).
Например, вот фиктивный контроллер с одним действием (разрыв с приведенным выше примером URL из-за упрощения).
[Controller]
[Route("/Products")]
public class ProductController : Controller
{
[ActionName("EnglishName")]
public IActionResult EnglishName()
{
return View();
}
}
Для этот упрощенный пример:
- Примеры URL:
- В исходном коде (для ясности) значение
Route
контроллера не должно изменяться. - В исходном коде (для ясности) значение
ActionName
функция действия EnglishName
не должна изменяться. - В исходном коде (для ясности) имя функции действия
EnglishName
не должно изменяться. - В контексте маршрутизации, значение
Route
должно быть " / Produkte " в культуре de-DE
. * 106 4 * - В контексте маршрутизации значение
ActionName
действия EnglishName
должно быть " GermanName " в культуре de-DE
. - Все локализации должны использовать «обычным способом» ( .resx , например, стандартная локализация для представлений и т. д. c.).
Как этого добиться, не создавая вручную Dynami c таблица маршрутизации?
В настоящее время у меня нет отправной точки. Например, результаты поиска, например, ASP. NET Локализация основного маршрута , приводят ответы на вопрос о наличии языка в URL (кроме имени домена), но это не мой вариант использования. Я пытался использовать имена переменных для атрибутов, но, конечно, это не работает.