通过_Layout.cshtml中的ASP.NET Core本地化在ASP.NET Core中进行翻译的问题

马克·克虏伯

我试图通过编写简单的程序来学习ASP.NET Core中的编程,但是我被困于使用本地化功能来翻译文本的某些部分。例如,我创建了资源和文件夹,其中包含所有需要的资源文件以及已翻译的单词和短语。对于_Layout.cshtml,我创建了资源->视图->共享-> _Layout.en.resx和_Layout.fr.resx

我尝试使用这种类型的代码,但是它不起作用,页面正在加载,但是当我将区域性从en更改为fr时,_Layout中的单词不变,只有我得到的是@localizer引号中写的单词两种语言。

_Layout中的代码与您的代码相同。

Startup.cs中的区别:

在ConfigureServices中:

services.AddLocalization(opt => {opt.ResourcesPath =“ Resources”;}); services.AddMvc()。AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix).AddDataAnnotationsLocalization();

        services.Configure<RequestLocalizationOptions>(
            opt =>
            {
                var supportCulteres = new List<CultureInfo>
                {
                    new CultureInfo("en"),
                    new CultureInfo("fr")
                };
                opt.DefaultRequestCulture = new RequestCulture("en");
                opt.SupportedCultures = supportCulteres;
                opt.SupportedUICultures = supportCulteres;
            });

在“配置”中,仅添加该代码:app.UseRequestLocalization(app.ApplicationServices.GetRequiredService <IOptions>()。Value);

我使用此文件来处理此文件_Culture.cshtml(添加代码的问题)

https://i.stack.imgur.com/WV9pn.jpg

我有这样的一面:

https://i.stack.imgur.com/1vRWE.jpg更改语言后(在此示例中,我使用的是波兰语,但通常是法语)https://i.stack.imgur.com/Fbn8j.jpg

瑞娜

这是一个完整的工作演示:

1.Resources/Views/Shared在根项目的文件夹中添加资源文件

在此处输入图片说明

2.编辑资源文件(_Layout.fr.resx),如下所示:

注意:请确保您为key(HomePrivacy. Book ListBook包含空格添加了正确的值

在此处输入图片说明

3.创建_Culture.cshtml

@using Microsoft.AspNetCore.Builder
@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Options

@inject IViewLocalizer Localizer
@inject IOptions<RequestLocalizationOptions> LocOptions

@{
    var culture = Context.Features.Get<IRequestCultureFeature>();
    var cultureList = LocOptions.Value.SupportedUICultures
        .Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName })
        .ToList();
    var returnUrl = string.IsNullOrEmpty(Context.Request.Path) ? "~/" : $"~{Context.Request.Path.Value}";
}

<div>
    <form asp-controller="Home" asp-action="CultureManagement"
          asp-route-returnUrl="@returnUrl" method="post">
        <select name="culture" asp-for="@culture.RequestCulture.UICulture.Name" asp-items="cultureList"
                onchange="this.form.submit();" >
        </select>
    </form>
</div>

4.在_Layout.cshtml下面更改您的喜欢:

@inject Microsoft.AspNetCore.Mvc.Localization.IViewLocalizer localizer

<!DOCTYPE html>
<html lang="en">
<head>
    //...
</head>
<body>
    <header>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
            <div class="container">
                <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">MvcCore3_1</a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                    <ul class="navbar-nav flex-grow-1">
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">@localizer["Home"]</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">@localizer["Privacy"]</a>
                        </li>
                    </ul>

                    //add the partial here
                    @await Html.PartialAsync("_Culture")
                </div>
            </div>
        </nav>
    </header>
    <div class="container">
        <main role="main" class="pb-3">
            @RenderBody()
        </main>
    </div>

    <footer class="border-top footer text-muted">
        <div class="container">
            &copy; 2020 - MvcCore3_1 - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
        </div>
    </footer>
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
    @RenderSection("Scripts", required: false)
</body>
</html>

5.确保AddViewLocalization像下面这样添加您的Startup.cs文件:

注意:应该是:app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>()不是app.ApplicationServices.GetRequiredService<IOptions>()

    public void ConfigureServices(IServiceCollection services)
    {

        services.AddLocalization(options => options.ResourcesPath = "Resources");

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

        services.Configure<RequestLocalizationOptions>(
         opt =>
         {
             var supportCulteres = new List<CultureInfo>
             {
                new CultureInfo("en"),
                new CultureInfo("fr")
             };
             opt.DefaultRequestCulture = new RequestCulture("en");
             opt.SupportedCultures = supportCulteres;
             opt.SupportedUICultures = supportCulteres;
         });

    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {

        var options = app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>();
        app.UseRequestLocalization(options.Value);
        
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseAuthentication();

        app.UseRouting();

        app.UseAuthorization();

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

    }

6,控制器

[HttpPost]
public IActionResult CultureManagement(string culture, string returnUrl)
{
    Response.Cookies.Append(
        CookieRequestCultureProvider.DefaultCookieName,
        CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
        new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
    );

    return LocalRedirect(returnUrl);
}

结果:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.Net Core本地化

来自分类Dev

ASP.NET CORE(.NET Framework)和本地化

来自分类Dev

ASP.NET Core 3.0中的本地化

来自分类Dev

ASP.NET Core请求本地化选项

来自分类Dev

Asp.net Core 2.0 查看本地化错误

来自分类Dev

在单独的项目Asp.net Core MVC中进行本地化

来自分类Dev

在单独的项目Asp.net Core MVC中进行本地化

来自分类Dev

ASP.NET Core 3 MVC端点路由和按路由进行本地化

来自分类Dev

如何进行ASP.NET Core 3.1路由(Route,ActionName)本地化?

来自分类Dev

如何在Asp.Net Core 1.0.0中本地化Display属性?

来自分类Dev

ASP.NET Core 3.0 Razor页面中的路由本地化

来自分类Dev

ASP.NET CORE 3.1中的数据注释和错误验证消息的本地化

来自分类Dev

Asp.Net Core中基于请求的Razor页面本地化

来自分类Dev

在asp.net core 2.1中基于国家的本地化

来自分类Dev

ASP.NET Core 全球化和本地化

来自分类Dev

ASP .NET Core 1.0 RTM本地化无法正常工作

来自分类Dev

无法使用ASP.NET CORE 2.2生成用于本地化的Response cookie

来自分类Dev

ASP.NET Core 3.1:共享的本地化版本3.1不起作用

来自分类Dev

使用VSCode的Asp.Net Core本地化无法正常工作

来自分类Dev

在ASP.NET Core中的_Layout.cshtml中访问cookie

来自分类Dev

如何在ASP.NET Core中的自定义本地化提供程序中注入DbContext?

来自分类Dev

在ASP.net Core MVC 3.1中的HtmlHelper扩展方法中使用DataAnnotation本地化器

来自分类Dev

_Layout.cshtml css 在 ASP.NET Core Web 应用程序中损坏

来自分类Dev

更改ASP.NET Core RazorPages中的cshtml文件的名称

来自分类Dev

在ASP.Net Core中进行模板

来自分类Dev

asp.net中的应用程序本地化

来自分类Dev

在ASP.NET中本地化动态绑定的DropDownList

来自分类Dev

ASP.NET 5 MVC 6中的本地化

来自分类Dev

在ASP.NET中本地化动态绑定的DropDownList

Related 相关文章

  1. 1

    ASP.Net Core本地化

  2. 2

    ASP.NET CORE(.NET Framework)和本地化

  3. 3

    ASP.NET Core 3.0中的本地化

  4. 4

    ASP.NET Core请求本地化选项

  5. 5

    Asp.net Core 2.0 查看本地化错误

  6. 6

    在单独的项目Asp.net Core MVC中进行本地化

  7. 7

    在单独的项目Asp.net Core MVC中进行本地化

  8. 8

    ASP.NET Core 3 MVC端点路由和按路由进行本地化

  9. 9

    如何进行ASP.NET Core 3.1路由(Route,ActionName)本地化?

  10. 10

    如何在Asp.Net Core 1.0.0中本地化Display属性?

  11. 11

    ASP.NET Core 3.0 Razor页面中的路由本地化

  12. 12

    ASP.NET CORE 3.1中的数据注释和错误验证消息的本地化

  13. 13

    Asp.Net Core中基于请求的Razor页面本地化

  14. 14

    在asp.net core 2.1中基于国家的本地化

  15. 15

    ASP.NET Core 全球化和本地化

  16. 16

    ASP .NET Core 1.0 RTM本地化无法正常工作

  17. 17

    无法使用ASP.NET CORE 2.2生成用于本地化的Response cookie

  18. 18

    ASP.NET Core 3.1:共享的本地化版本3.1不起作用

  19. 19

    使用VSCode的Asp.Net Core本地化无法正常工作

  20. 20

    在ASP.NET Core中的_Layout.cshtml中访问cookie

  21. 21

    如何在ASP.NET Core中的自定义本地化提供程序中注入DbContext?

  22. 22

    在ASP.net Core MVC 3.1中的HtmlHelper扩展方法中使用DataAnnotation本地化器

  23. 23

    _Layout.cshtml css 在 ASP.NET Core Web 应用程序中损坏

  24. 24

    更改ASP.NET Core RazorPages中的cshtml文件的名称

  25. 25

    在ASP.Net Core中进行模板

  26. 26

    asp.net中的应用程序本地化

  27. 27

    在ASP.NET中本地化动态绑定的DropDownList

  28. 28

    ASP.NET 5 MVC 6中的本地化

  29. 29

    在ASP.NET中本地化动态绑定的DropDownList

热门标签

归档