Сложная проблема с ASP.NET ресурсами веб-форм и локализацией

StackOverflow https://stackoverflow.com/questions/835027

Вопрос

У меня есть следующая нестандартная настройка (VS2008, .NET 3.5 SP1):

Существует основной веб-проект под названием MainSite и есть несколько "подключаемых" веб-проектов с разными названиями.

При создании этих плагинов у меня есть пользовательский шаг сборки, который вызывает aspnet_compiler.exe и aspnet_merge.exe.В результате получается два .DLL-файла - имя_заголовка.dll и имя_заголовка_deploy.dll .Первый содержит классы codebehind, второй содержит код, сгенерированный из файлов .ascx.

Эти плагины .Затем DLL-файлы копируются в /MainSite/bin/Plugins/ папка.Во время выполнения (запуска приложения) основное приложение просматривает эту папку и динамически загружает все находящиеся там .DLL-файлы.

Все мои формы находятся в плагинах, в файлах .ascx.Основное приложение - это просто скелет, который загружает эти пользовательские элементы управления .ascx по мере необходимости.

И теперь возникает необходимость в локализации.В идеале я хотел бы иметь следующее:

  • При создании ресурсов в Visual Studio для каждой формы должен быть отдельный файл ресурсов (файл .ascx), чтобы пользователям было проще локализовать формы параллельно.
  • Приятный meta:resourcekey метод в файлах .ascx очень удобен для локализации элементов управления;
  • Механизм автоматического возврата языка / культуры ресурсов в .NET должен быть пригоден для использования;
  • Результат компиляции должен быть таким, чтобы файлы из всех плагинов могли быть скопированы в /MainSite/bin/Plugins/ папка.Если есть DLL-файлы для каждого языка / культуры, и их нужно поместить в какие-то определенные подпапки - это нормально, если .DLL-файлы из разных плагинов не имеют совпадающих имен.

Есть какие-нибудь идеи о том, как этого добиться?

Это было полезно?

Решение

По-видимому, в .NET можно реализовать пользовательских поставщиков ресурсов. Здесь это статья, которая содержит ссылки на различные другие статьи, объясняющие весь процесс.По сути, вы берете значение из meta:resourcekey и получайте ценность из любого места, где вы хотите.В приведенной выше статье, например, вся информация о локализации хранится в базе данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top