локализация с помощью директивы @page

#c# #blazor #blazor-server-side

Вопрос:

Могу ли я использовать директиву @page blazor с IStringLocalizer?, что-то вроде этого:

 @page @Localizer["myComponent"]
 

Я знаю, что мы не можем использовать два @ друг за другом, но может ли кто-нибудь дать мне представление, как я могу это сделать?

Спасибо

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

1. Почему ты хочешь сделать это именно так ?

Ответ №1:

Простой ответ: вы не можете этого сделать.

@page Директива генерирует a RouteAttribute в классе, созданном в C# для страницы Blazor. Вы можете увидеть это в сгенерированном коде в /obj :

     [Microsoft.AspNetCore.Components.RouteAttribute("/")]
    public partial class Index : Microsoft.AspNetCore.Components.ComponentBase
    {
 

Это означает, что маршрут определяется во время компиляции.

Localize Функция использует языковые настройки браузера во время выполнения для определения языка и перевода ресурса.

Так как же это можно было сделать? Маршруты для страниц Blazor должны быть исправлены, но вы бы добавили набор локализованных маршрутов для каждого языка: это означало бы наличие «карты перевода» локализованного маршрута в «фактический маршрут».

напр. "/fr/indice" => "/index"

Это было бы скорее ASP.NET Основная проблема маршрутизации конечных точек, чем проблема Blazor. Вы должны найти несколько статей о маршрутизации в этом отношении.

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

1. Спасибо @Quango, это дало мне несколько ключевых слов для продолжения.