2016-08-30 78 views
3

人。 好吗?ASP.NET CORE(.NET Framework)和本地化

有人可以帮助我吗? ASP.NET核心与.Net框架

主题:本地化

我根据文档所做的所有设置。

当我使用:

IStringLocalizer<HomeController> 

作品完美的翻译。

IStringLocalizer<Resources.Views.Shared.Test> 

作品完美翻译。

在查看

@inject IViewLocalizer localizer 

作品翻译正确。

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

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

IStringLocalizer<ClassLibrary1.Test> 

不工作,不翻译。

它只返回默认语言。

如果我强迫在控制器的ASP.NET核心代码:

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核心参考此ClassLibrary,返回的是标准的语言,这是不对的。

如果我在Asp.Net中引用,它的工作原理和翻译完美。

这将是一个已知的错误?

在asp.net核心中使用的设计中的类库的一些特定配置?

我想在asp.net中使用.NET框架的核心asp.net应该可以同时使用相同的代码。

有没有人有类似的问题?

回答

3

问题解决了。

确定资源DLL未复制到ASP.NET Core项目。

只需在构建完成后手动复制一切即可解决。 这是目前唯一的解决方案。

详情点击这里: https://github.com/aspnet/Mvc/issues/5219

+0

烧在这几个小时。我可以证实这是正确的。不幸的是(微软的结束)但是正确。只需将包含资源的项目中生成的文化文件夹复制到Core项目的输出目录中,ResourceManager将再次正常开始工作。 (例如“en-US”文件夹为“bin \ net452”... bam ...完成交易)。感谢爱德华将这个分类出来。 – mikeo