2016-08-30 111 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