Как сделать локализацию ASP. NET Core 3.1 (Route, ActionName)? - PullRequest
2 голосов
/ 30 апреля 2020

Я занимаюсь разработкой 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 (кроме имени домена), но это не мой вариант использования. Я пытался использовать имена переменных для атрибутов, но, конечно, это не работает.

...