Многоязычный проект, включая маршрутизацию

Один из моих сотрудников написал это приложение в .netCore 3.1 около 18 месяцев назад. Он работает «до некоторой степени», но я чувствую, что он раздут и, возможно, не лучшим образом. Я работаю где-то, где все наши приложения должны быть двуязычными, и почти в каждом учебнике вы увидите локализацию пользовательского интерфейса, но не маршрутизацию.

Приложение работает, как я указал, но есть ряд ограничений, которые, как мне кажется, делают его довольно неэффективным. Такие вещи, как ‘ [TranslatedRoute(«en», «home»)]’декоратор, который не позволяет мне использовать ресурс. Кроме того, каждое действие должно быть уникальным, т. Е. Я не могу использовать List как действие на каждом контроллере, он должен быть уникальным, поэтому мы использовали List-Entityname для маршрутизации, но я считаю это ограничением. Это также делает замену новых контроллеров более длительной и более подверженной ошибкам.

Вот пример из моего startup.cs

       app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute("default", "{culture=en}/{controller=home}/{action=index}");
            endpoints.MapDynamicControllerRoute<TranslationTransformer>("{culture}/{controller=home}/{action=index}/{id?}");
        });

Я собрал очень, очень упрощенный .Sln, на который я ссылался ниже, у него есть некоторая рабочая маршрутизация на домашней странице, и я добавил раздел «Администратор» с двумя контроллерами. Уже в этот момент я теряю контроль над маршрутизацией, и приложение возвращается к использованию имен действий вместо маршрутизации, которую я добавил.

Моя цель — просто разработать умный шаблон для создания нового многоязычного веб-сайта, когда это необходимо.

Если я каким-то образом пропустил одно руководство, в котором показано, как это уже сделать, по крайней мере, в .NetCore 3.1, пожалуйста, дайте мне знать, и я перестану пытаться изобретать велосипед.

В противном случае, пожалуйста, посмотрите мой простой проект здесь — Ссылка на GitHub

Обратите внимание, я впервые публикую публичный проект на GitHub.

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *