2016-08-30 7 views
3

человек. Хорошо?ASP.NET CORE (.NET Framework) и локализация

Может кто-нибудь мне помочь? ASP.NET ядро ​​с .Net Framework

Тема: Локализация

Я сделал все настройки в соответствии с документацией.

Когда я использую:

IStringLocalizer<HomeController> 

отлично работает перевод.

IStringLocalizer<Resources.Views.Shared.Test> 

работ совершенно перевод.

в View

@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")); 

Если я ссылаться на этот ClassLibrary в ASP.NET CORE, возвращение является стандартным языком, который является неправильным.

Если я ссылаюсь на Asp.Net, он отлично работает и отлично переводится.

Это была бы известная ошибка?

Определенная конфигурация для библиотек классов в проектах, используемых в ядре asp.net?

Я предполагаю, что тот же код должен работать как в asp.net, так и в качестве основного asp.net с .NET framework.

У кого-нибудь была аналогичная проблема?

ответ

3

Проблема решена.

Было обнаружено, что библиотеки ресурсов не копируются в основные проекты ASP.NET.

Просто скопируйте копию после сборки, чтобы все было решено. Это единственное решение на данный момент.

Подробности здесь: https://github.com/aspnet/Mvc/issues/5219

+0

Сожжены несколько часов на этом. Я могу подтвердить, что это правильно. Несчастливо (на Microsoft's End), но правильно. Просто скопируйте папку культуры, созданную в проекте, которая содержит ресурсы в выходной каталог основного проекта, и ResourceManager снова начнет нормально работать. (например, папка «en-US» в «bin \ net452» ... bam ... done deal). Спасибо Edwardo за то, что он сортировал это. – mikeo

Смежные вопросы