#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 функции:
- Распознать язык в URL-адресе или установить язык по умолчанию, если языковой тег не указан
- Переведите имена моих моделей страниц
Я напишу пользовательский метод для перевода содержимого.
Наиболее подходящий пример
Я нашел 2 примера, которые делают почти то же самое, что я хочу, но они используют MVC:
- ASP.NET Ядро: Простая локализация и языковые URL-адреса
- Локализованная маршрутизация с использованием ASP.NET Ядро MVC 2
Второй выглядит великолепно, я попытался переписать его для страниц 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!