﻿This simplified example shows the use of culture-specific resources 
within a VS project.

Inside VS, you can highlight a project or a folder and add a new item of
the type "Resources File." This will create a resource file with the 
extension .resx. In this example it is Menus.resx, which contains text for
the menu items.

Taking your Menus.resx file and defining a language-dependent version is 
as easy as adding a new item under the same directory called Menus.en-GB.resx.

Inside this language-dependent file, you will specify your resources in Great 
Britain English. And when you tell VS to build SatelliteDemo, you will see that 
an extra directory is constructed under the bin directory, and a .dll file 
inside it: 

bin\en-GB\SatelliteDemo.resources.dll

This DLL is essentially the satellite assembly of your resources. 
As you add more and more languages, you will see these satellite assemblies 
created automatically.

This will work fine in a smaller environment where the developers are 
working as language translators as well. Once we introduce external 
language translators, it is better to remove these files (just the 
language-dependent ones and not the default ones) from the VS environment 
and send them off to the language translators. Once the translations 
are available, you can use the resources to generate satellite assemblies 
independently of the mainline VS IDE. A satellite assembly is a DLL which
does not include any code, just resources.

Steps:

1. Create and build application

2. Get resources from translators as .resx files, for example, en-GB.resx
   
3. Use resgen command at VS2008 command prompt to create .resources files,
   for example, SatelliteAssemblyDemo.en-GB.resources 
   
   >resgen en-GB.resx SatelliteAssemblyDemo.en-GB.resources
   
4. Use Assembly linker (al) command to create satellite assemblies, for
   example, SatelliteAssemblyDemo.en-GB.resources.dll
   
   >al /t:lib /embed:SatelliteAssemblyDemo.en-GB.resources /culture:en-GB 
   /out:SatelliteAssemblyDemo.en-GB.resources.dll
   
5. Place satellite assemblies in appropriately named subfolders so that the
   ResourceManager can find them, for example

   bin\SatelliteAssemblyDemo.exe
   bin\en-GB\SatelliteAssemblyDemo.en-GB.resources.dll
   bin\en-US\SatelliteAssemblyDemo.en-US.resources.dll
   ...
   
   
see: http://ondotnet.com/pub/a/dotnet/2002/10/14/local2.htm