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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 08 мая 2009

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

...