2

我处理过许多 .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 而是其他名称?

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

更新 见下面的答案

4

3 回答 3

2

现在的工作答案:

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

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

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

于 2020-06-19T04:20:01.990 回答
0

我已经使用这个 github 包进行本地化。效果很好,并且相当容易实现。我知道这并不能直接回答您的问题,但这是一种潜在的解决方法。

https://github.com/LazZiya/ExpressLocalization/wiki

于 2020-06-19T13:53:01.453 回答
-1

创建最简单的应用程序来本地化模型/数据注释并使用 2.2 并在 3.1 中失败这可能有助于找到问题。如果没有,请在 loc 文档上打开一个问题并提供指向该 repo 的链接。

转到loc页面底部并选择此页面

您打算从 迁移AddNewtonsoftJson吗?请参阅 Newtonsoft.Json (Json.NET)支持

于 2020-06-19T02:44:43.747 回答