Как добавить поддержку перевода в Blazor?

Работаю над приложением на Blazor и столкнулась с задачей добавления поддержки перевода интерфейса на несколько языков. Как лучше всего реализовать поддержку многоязычного интерфейса в Blazor? Какие библиотеки или подходы использовать?


Ответы (1 шт):

Автор решения: Dev18

исходник на GitHub

Чтобы добавить поддержку перевода в Blazor, выполните следующие шаги:

  1. Добавьте контроллер для установки культуры: (Этот контроллер позволит переключаться между различными культурами (языками) в вашем приложении)
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;

namespace TranslateSimple.Controller
{
    [Route("[controller]/[action]")]
    public class CultureController : Microsoft.AspNetCore.Mvc.Controller
    {
        public IActionResult SetCulture(string culture, string redirectionUri)
        {
            if (culture != null)
            {
                HttpContext.Response.Cookies.Append(
                    CookieRequestCultureProvider.DefaultCookieName,
                    CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)));
            }

            if (redirectionUri == null) redirectionUri = "/";

            return LocalRedirect(redirectionUri);
        }
    }
}
  1. Добавьте ресурсы: (Создайте файлы ресурсов для каждого языка, который вы хотите поддерживать. пр., Resources/Pages/Index.ru-RU.resx для русского итд)

введите сюда описание изображения

  1. Настройте локализацию в Program.cs: (Здесь вы указываете поддерживаемые культуры и настройки локализации.)
...
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new List<CultureInfo>()
                {
                    new CultureInfo("en-US"),
                    new CultureInfo("es-ES"),
                    new CultureInfo("de-DE"),
                    new CultureInfo("fr")
                };
    options.DefaultRequestCulture = new RequestCulture("fr");
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
});
....

app.UseRequestLocalization();
  1. Используйте локализацию на Razor страницах: (Инъектируйте IStringLocalizer и используйте его для вывода локализованных строк.)
@inject IStringLocalizer<Index> myLocalizer

<p>@myLocalizer["Test"]</p>

введите сюда описание изображения

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

→ Ссылка