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

4

大家好。

有人能帮我吗?使用.Net Framework的ASP.NET Core。

主题:本地化

我根据文档进行了所有设置。

但是当我使用:

IStringLocalizer<HomeController> 

完美地工作的翻译。

IStringLocalizer<Resources.Views.Shared.Test>

完美地工作翻译。

在视图中

@inject IViewLocalizer localizer

工作已经被正确地翻译了。

然而,在所有以前的情况下,资源都是在ASP.NET CORE项目中创建的。

如果我创建一个单独的项目并使用:

IStringLocalizer<ClassLibrary1.Test> 

无法工作,也不会翻译。

它只返回默认语言。

如果我强制在 ASP.NET Core 控制器的代码中:

ResourceManager rm = new ResourceManager(typeof(ClassLibrary1.Test));
string test = rm.GetString("Hello", new System.Globalization.CultureInfo("en-US"));

它的翻译效果不佳。

它只会返回默认语言。

也就是说,我怀疑这与它处于一个独立项目有关。

现在奇怪的是,我创建了另一个ClassLibrary并将代码放进去:

string test = Test.ResourceManager.GetString("Hello", new System.Globalization.CultureInfo("en-US"));

如果我在ASP.NET CORE中引用这个ClassLibrary,返回的是标准语言,这是错误的。
如果我在Asp.Net中引用它,它可以正常工作并且翻译得很完美。
这可能是一个已知的bug吗?
在设计中使用的类库是否需要一些特定的配置来适用于asp.net core?
我想相同的代码应该在asp.net和core asp.net with .NET framework中都能正常工作。
有人遇到过类似的问题吗?
1个回答

4
问题已经解决。
发现资源 DLL 没有被复制到 ASP.NET Core 项目中。
只需要在编译之后手动复制,一切问题都可以得到解决。 目前这是唯一的解决方法。
详细信息请参见: https://github.com/aspnet/Mvc/issues/5219

在这上面花费了几个小时。我可以确认这是正确的。不幸的是(对于微软来说),但是正确的。只需将包含资源的项目中生成的 culture 文件夹复制到 Core 项目的输出目录中,ResourceManager 就会再次正常工作。(例如,“en-US”文件夹到“bin\net452”...完成)。感谢 Edwardo 解决了这个问题。 - mikeo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接