views:

357

answers:

1

I've got the following nonstandard setup (VS2008, .NET 3.5 SP1):

There is a main web project called MainSite and There are several "plugin" web projects with different names.

When building these plugins I have a custom build step that calls aspnet_compiler.exe and aspnet_merge.exe. This results in two .DLL files - *plugin_name*.dll and *plugin_name*_deploy.dll. The first one contains the codebehind classes, the second one contains code generated from .ascx files.

These plugin .DLL's are then copied to /MainSite/bin/Plugins/ folder. At runtime (application startup) MainSite application looks in this folder and dynamically loads all the .DLL files there.

All my forms are in the plugins, in .ascx files. The main application is just a skeleton which loads these .ascx usercontrols as needed.

And now comes the need for localization. Ideally I would like to have the following:

  • When making the resources in Visual Studio, there should be a separate resource file for every form (.ascx file) so that it is easier for people to localize the forms in parallel.
  • The nice meta:resourcekey method in .ascx files is very comfortable for localizing controls;
  • The automatic resource language/culture fallback mechanism in .NET should be useable;
  • The result of compilation should be such that the files from all the plugins can be copied to the /MainSite/bin/Plugins/ folder. If there is a .DLL file for every language/culture and they hav to be put in some specific subfolders - that's fine as long as the .DLLs from different plugins don't have colliding names.

Any ideas on how to achieve this?

A: 

Apparently it is possible to implement custom resource providers in .NET. Here is an article that contains links to various other articles that explain the whole process. In effect, you take the value from meta:resourcekey and get the value from wherever you want. The article above, for example, stores all localization information in a DB.

Vilx-