首页 > 解决方案 > .net core 3.1 本地化 resx 命名的明显重大变化?

问题描述

我处理过许多 .net Core 2.2 应用程序的本地化。

我现在正在开发一个 .net Core 3.1 本地化应用程序

在 Startup.cs ConfigureServices 我有

services.AddLocalization(o =>
        {
            // We will put our translations in a folder called Resources
            o.ResourcesPath = "Resources";
        });

        services.AddControllersWithViews()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder)
            .AddDataAnnotationsLocalization()
            .AddNewtonsoftJson(); 

在配置方法中,我定义了我的文化等并包括

app.UseRequestLocalization(localizationOptions);

我的资源的文件夹结构如下所示: 在此处输入图像描述

我的观点都是完美的本地化。然而,即使模型/数据注释或控制器被正确命名并放置在模型或控制器文件夹中,它们也不会本地化。

在之前的 2.2 中,使用文件夹结构对我来说完美无缺。我是否错过了 3.1 下的新内容,应该告诉它以不同的方式查看文件夹?该文件夹不应该命名为 Models 而是其他名称?

我查看了所有文档,在网上搜索过,但没能找到。

更新 见下面的答案

标签: c#.netvisual-studioasp.net-coreasp.net-core-mvc

解决方案


现在的工作答案:

看来我可以通过将控制器和模型移出子文件夹并更改每个 resx 的名称以包括模型的 NameSpace.Models.Modelname 和控制器的 NameSpace.Controllers.Controllername 来使控制器和模型本地化。这是我目前可以让他们工作的唯一方法。

那么显然只有视图会使用文件夹/子文件夹方法?除非我完全错过了这一点,否则我认为这要么是一个巨大的问题,要么是我在任何地方都看不到清楚记录的重大变化。

我没有得到 MS 的确认这是一个重大变化,但在这一点上对我来说确实是这样。如果您从早期的 .net 核心本地化迁移,这将是一个惊喜,或者它对我来说确实如此。希望这对其他人有帮助。


推荐阅读