ASP.NET Core 3.0 中的本地化

2024-01-09

我正在尝试使用 .resx 文件使我的项目本地化。

对我来说,这不起作用,但对我正在从事该项目的同事来说,它也起作用。

有关代码的一些详细信息: Startup.cs 文件

 public void ConfigureServices(IServiceCollection services)
        {
            .
            .
            .
            // Localization

            services.AddLocalization(options => options.ResourcesPath = "Lang/");

            services.AddMvc(option => option.EnableEndpointRouting = false)
                .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
                .AddDataAnnotationsLocalization();



            services.Configure<RequestLocalizationOptions>(options =>
            {
                var supportedCultures = new List<CultureInfo>
                    {
                        new CultureInfo("cs"),
                        //new CultureInfo("en")
                    };

                options.DefaultRequestCulture = new RequestCulture(culture: "cs", uiCulture: "cs");
                options.SupportedCultures = supportedCultures;
                options.SupportedUICultures = supportedCultures;
            });
            services.AddTransient<Messages>();
            // Localization end
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            // Localization
            var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
            app.UseRequestLocalization(locOptions.Value);
            // Localization end

            .
            .
            .

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

我的控制器:

public class AccountController : BasicController
    {     
        private readonly UserManager<User> userManager;
        private readonly IPasswordHasher<User> passwordHasher;
        private IStringLocalizer<Default> _localizer;


        public AccountController(UserManager<User> userManager, SignInManager<User> signInManager, IPasswordHasher<User> passwordHasher,
            IStringLocalizer<Default> LangDefault, IDataProtectionProvider provider) : base(signInManager,provider)
        {
            this.userManager = userManager;
            this.passwordHasher = passwordHasher;
            _localizer = LangDefault;
        }

我的登录视图:

@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer

@{
    Layout = "_LayoutLogin";
    ViewData["Title"] = Localizer["TitleLogin"];

我的项目结构 https://i.stack.imgur.com/9o7Q3.png

对我来说,它返回“TitleLogin”并且值“ResourceNotFound”为true。

对于我的同事来说,它使用相同的代码返回正确的值......

你能帮帮我吗——我做错了什么?

非常感谢。


我不知道哪个 resx 文件包含TitleLogin.为了显示正确的本地化数据,它在我修改时起作用services.AddLocalization(options => options.ResourcesPath = "Lang/"); to

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

然后添加一个名为的resx文件Views.Account.Login.cs.resx in Lang folder.

更新 2020 年 3 月 19 日

事实证明,在asp.net core 3.1中,你需要放置Default.cs超出资源文件夹(您的Lang文件夹在这里),请参阅这个github问题 https://github.com/dotnet/aspnetcore/issues/17733.

如果上课Default.cs and Default.*.resx在同一文件夹中,编译dll xxx.lang.dll时命名空间会出错。

所以,解决方案是

1.删​​除原来的Default.cs直接在项目下新建一个:

namespace MyApp
{
    public class Default
    {
    }
}

2.Add Default.cs.resx in the Lang folder

3._ViewImports.cshtml

@using MyApp
@using Microsoft.Extensions.Localization
@inject IStringLocalizer<Default> LangDefault
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Core 3.0 中的本地化 的相关文章

随机推荐

  • 在 Android 的异步任务线程中调用 invalidate 时出现问题!

    我试图从 asynctask 线程调用 invalidate 我收到此错误 10 18 15 14 30 469 错误 AndroidRuntime 889 导致 android view ViewRoot CalledFromWrongT
  • 如何获取 Lucene 索引中文档子集的顶级术语?

    我知道可以获取 Lucene 索引中的顶级术语 但是有没有办法根据 Lucene 索引的子集获取顶级术语 IE 特定日期范围内的文档索引中最重要的术语是什么 理想情况下 应该有一个实用程序可以执行此操作 但我不知道有这样的实用程序 然而 以
  • 根据字符集对单词进行聚类

    假设有一个单词集 我想根据它们的字符包 多重集 对它们进行聚类 例如 茶 吃 阿爸 阿阿 你好 将被聚类成 茶 吃 abba aabb 你好 abba and aabb聚集在一起是因为它们具有相同的字符包 即两个a和两个b 为了提高效率 我
  • 适用于 Windows 和 Mac 的 Node.js — 正斜杠、反斜杠修正

    有没有一种方法可以纠正从 Windows 到 Linux 和 Mac 的 Node js 中有关反斜杠与正斜杠的差异 Windows 在调用以下位置时需要反斜杠git bash 而 Mac Linux 需要正斜杠 我正在与 Mac 和 Wi
  • 如何将支持库小吃栏文本颜色设置为 android:textColor 以外的颜色?

    因此 我开始在设计支持库中使用新的 Snackbar 但我发现当您在主题中定义 android textColor 时 它会应用于 Snackbar 的文本颜色 如果您的主要文本颜色是深色 这显然是一个问题 有谁知道解决这个问题的方法或者对
  • 带有 ngmodel 的 Angular 2 动态表单示例导致“表达式在检查后已更改”

    我正在寻找使用这个example https angular io docs ts latest cookbook dynamic form htmlAngular 文档中提供了与 ngmodel 结合使用动态表单的功能 以便动态表单控件可
  • 路由器 waitOn 在每次渲染时等待订阅

    我有一条路线waitOn返回一个钩子Meteor subscribe 每次触发路线时 我都会看到我的旋转器loadingTemplate在查看实际数据之前先简单介绍一下 我本以为我只需要等待订阅下载一次 即第一次 如果我做错了 请提出更好的
  • 如何使用 Files.lines(...).forEach(...) 读取文件?

    我目前正在尝试从我拥有的纯文本文件中读取行 我在另一个 stackoverflow 上发现 用Java读取纯文本文件 https stackoverflow com questions 4716503 best way to read a
  • Angularjs ui 路由器正则表达式

    我正在尝试匹配 1 个可以有 2 种值的参数 当前 或至少包含 10 个密码的数字 我试过了 url history code current 0 9 10 当我使用这个正则表达式时 我的应用程序会转到history current 但是当
  • 克服 Windows Azure Sql 数据库 150 GB 大小限制

    SQL Azure 的数据库大小限制为 150 GB 我已多次阅读他们的文档并在网上搜索 但我不清楚这一点 使用联合是否允许开发人员超越 150 GB 的数据库 例如我可以有几个 150GB 的联邦成员吗 如果没有 我如何在 Windows
  • js 中的脚本

    我有一个jsp页面 我根据请求参数动态添加一些内容到页面 请求将返回一个数组 基于此我必须创建一个下拉列表 我想在更改另一个下拉菜单时执行此操作 因此只能使用 javascript 来完成 但我无法在 js 中使用 scriptlet 这真
  • Node.js 快速路由和控制器有什么区别?

    与传统的快速路线控制器相比 有什么不同或更强大的地方吗 如果您有一个 Express 应用程序并定义了模型 那么它是否会成为 MVC 应用程序 还是还有更多必要 我只是想知道我是否因为不升级到更合法的 控制器 而错过了节点表达应用程序中的额
  • 在 ASP.NET MVC 上使用绝对路径访问视图

    我正在尝试以这种方式访问 视图 return View Items Details aspx 我收到此错误 无法找到视图 Items Details aspx 或其主视图 搜索了以下位置 Items Details aspx 在 Items
  • 用于设置 IIS 环境变量的 PowerShell 脚本

    如何使用 PowerShell 自动执行以下步骤 转到 IIS 并选择一个网站 网站名称很可能会作为参数在脚本中传递 Go Inside the Configuration Editor Choose the aspNetCore Sect
  • 为什么 .NET Remoting 服务器无法向 Internet 客户端发送事件

    如您所知 NET Remoting 有一些限制 其中之一是服务器无法跨 NAT 防火墙向 Internet 客户端发送事件 这是一个证据 http social msdn microsoft com forums en US netfxre
  • 如何为自定义 B2B 应用程序添加 Apple ID?

    我正在尝试将自定义 B2B 应用程序添加到 iTunes 连接 从 Apple 文档看来应该有一个文本框来输入客户端 Apple ID 但我似乎没有类似的内容 Apple 文档如下所示苹果文档 https i stack imgur com
  • 在 django 形式中使用reverse()

    我正在尝试使用 django 的撤销 https docs djangoproject com en dev topics http urls reverse我的自定义小部件的 django 表单定义中的函数 但出现错误 Improperl
  • 网站的 NuGet 包恢复

    我正在尝试使用 NuGet Package RestoreVS2010 视觉源安全 它对我来说部分有效 这是从哪里来的 NuGet 没有获取丢失的包 https stackoverflow com questions 17797052 nu
  • admob 与 AndEngine + google play 服务集成时无法显示游戏画面

    我正在使用 andengine 通过 google play 服务进行游戏开发 我的游戏运行良好 但是 一旦我添加了 admob 并调用了 onSetContentView 回调 我的游戏屏幕就会变黑 只有广告可见 这是我的回调 onSet
  • ASP.NET Core 3.0 中的本地化

    我正在尝试使用 resx 文件使我的项目本地化 对我来说 这不起作用 但对我正在从事该项目的同事来说 它也起作用 有关代码的一些详细信息 Startup cs 文件 public void ConfigureServices IServic