Невозможно получить доступ к файлу resx в. net Core 3 - PullRequest
0 голосов
/ 18 февраля 2020

Добавлен новый файл .Resx в папку ресурсов в. Net Базовый проект Web 3.

При попытке доступа к файлу resx его нет в контроллере или атрибуте проверки.

Что правильный способ работы с файлами Resx в. Net Core.

1 Ответ

0 голосов
/ 19 февраля 2020

Для настройки локализации в контроллере вы можете обратиться к следующим шагам

1.Настройка локализации в методе Startup.ConfigureServices и установка культур в методе Startup.Configure. Промежуточное программное обеспечение для локализации должно быть настроено перед любым промежуточным программным обеспечением, которое может проверять культуру запросов:

public void ConfigureServices(IServiceCollection services)
    {
       //Adds the localization services to the services container. The code above also sets the resources path to "Resources"
        services.AddLocalization(options => options.ResourcesPath = "Resources");

        services.AddControllersWithViews()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
            .AddDataAnnotationsLocalization();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        var supportedCultures = new[]
        {
            new CultureInfo("en-US"),
            new CultureInfo("fr"),
        };

        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture("en-US"),
            // Formatting numbers, dates, etc.
            SupportedCultures = supportedCultures,
            // UI strings that we have localized.
            SupportedUICultures = supportedCultures
        });

        ...
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }

2. Метод ConfigureServices устанавливает ResourcesPath в «Ресурсы», поэтому относительный путь проекта к домашней странице Французский файл ресурсов контроллера - Resources/Controllers.HomeController.fr.resx. Кроме того, вы можете использовать папки для организации файлов ресурсов. Для контроллера дома путь будет Resources/Controllers/HomeController.fr.resx.

enter image description here

Затем используйте IStringLocalizer, который использует ResourceManager и ResourceReader для предоставления специфичных для культуры ресурсов c во время выполнения для доступа к файлам Resx в Controller .

public class HomeController : Controller
{
    private readonly IStringLocalizer<HomeController> _localizer;

    public HomeController(IStringLocalizer<HomeController> localizer)
    {
        _localizer = localizer;
    }

    public IActionResult About()
    {
        ViewData["Message"] = _localizer["Your application description page."];

        return View();
    }
}

Для получения более подробной информации вы можете обратиться к официальному документу c, который содержит пример кода и локализацию DataAnnotations.

...