Как организовать многоязычные URL-адреса в ASP.Net Основные страницы Razor?

#c# #asp.net-core #razor

#c# #asp.net-ядро #razor

Вопрос:

ASP.NET Core 2.2.0

Я ищу языковые URL-адреса в ASP.NET Ядро. Нашел много примеров в Интернете для .NET Core MVC, но не могу заставить его работать на страницах Razor.

Чего я хочу добиться, так это:

  • domain.com/informatie -> ссылка на страницу «информация» на языке по умолчанию (голландский для меня)
  • domain.com/en/information -> ссылка на ту же страницу на английском языке

Для этого мне нужны 2 функции:

  1. Распознать язык в URL-адресе или установить язык по умолчанию, если языковой тег не указан
  2. Переведите имена моих моделей страниц

Я напишу пользовательский метод для перевода содержимого.

Наиболее подходящий пример

Я нашел 2 примера, которые делают почти то же самое, что я хочу, но они используют MVC:

Второй выглядит великолепно, я попытался переписать его для страниц Razor, но застрял на LocalizationController.cs (поскольку я использую не контроллер, а Pagemodel) CultureActionLinkTagHelper.cs (я использую атрибут asp-page).

Есть ли кто-нибудь, кто исправил это на страницах Razor и кто хотел бы поделиться кодом? Или кто-нибудь, кто может мне помочь?

Ответ №1:

Вам необходимо создать свое приложение с учетом глобализации / локализации.

Вот официальная документация от Microsoft.

Возможно, вам пригодится этот учебник по разработке мультикультурного веб-приложения, он предназначен для страниц Razor DotNetCore 2.1, но он действителен и для 2.2.

Кроме того, her — пример проекта для локализации страниц razor в GitHub

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

1. Проверил учебник, и он мне очень помогает. Но последнее недостающее звено для меня — это как перевести Pagemodels (имя страницы в URL). Это тоже возможно?

2. вы хотите иметь что-то вроде <a href="/en/register/">Register</a> для английского и <a href="/es/registro/">Registro</a> испанского языков в качестве примера? если это так, я не предпочитаю этого делать, это добавит сложную логику в маршрутизацию, и в этом нет особой необходимости. Достаточно локализовать только отображаемый текст.

3. Да, это то, что я хочу. У нас есть международная компания, которая продает продукты по всему миру, даже людям, которые не говорят и не читают по-английски. Я действительно хочу, чтобы каждый мог понять наши URL-адреса. В этом примере link — довольно простая логика для этого, но она написана для MVC, а не для Razor.

4. @CribAd Я искал возможность сделать это в MVC и очень удивлен, что это не кажется обычным делом — я согласен с вами в том, что для наших клиентов, не владеющих английским языком, приятно давать им понятные URL-адреса. в конце концов, целью MVC было «сделать URL-адрес доступным для взлома»… Я знаю, что вы искали страницы Razor, но я так рад, что вы нашли мне то, что я могу попробовать в MVC!

5. @KrishanPatel добро пожаловать! Действительно, 2 связанных примера отлично подходят для MVC!