Satellite Assemblies

.NET framework uses satellite assemblies to make applications multilingual. Satellite assembly is an assembly file that contains only resources, no code. It contains the same resources as the main assembly file but in different language. Each satellite assembly file support one language and the file must locate on a language specific sub directory of the directory where the main assembly file locate.

Let's have an example. MyApplication.exe is the main assembly of your application. It contains the original English resources. If we want to localize the application into German we have to create a DLL called MyApplication.resources.dll that contains German resources and place that into "de" sub directory. The Japanese satellite assembly file will have the same name but it will be placed in "ja" sub directory. So our final file and directory structure will be:

MyApplication.exe 
de\MyApplication.resources.dll
ja\MyApplication.resources.dll

If we want to add more language we just make new sub directories, compile the language specific satellite assembly file (Sisulizer will do this automatically) and place that on the language specific sub directory (Sisulizer will do this automatically too).

Read more about .NET localization.