views:

51

answers:

1

I have an .NET application with satellite assemblies containing resource to be localized, but I want to leave the localization work to the customer, could I sign my application with strong-name and then deliver the application binary to the customer and let they do the localization job on their own? what else do i need to do? thanks a lot.

+1  A: 

First question would be why you want to leave this up to your customers. If you wish to use the built-in .NET localization capabilities, that requires generation of a .resources file, linking that file into a satellite assembly, and placement into either the GAC or a proper relative child path to the executable. Thats really a developer thing...not exactly a customer thing.

That said, there is no reason you couldn't provide your customers with a tool that would do all that for them, and simply require that they fill in the proper language-specific data for each of your resources. It should be easy enough to write a tool that provides a simple editor for resources (you might even be able to re-host the Visual Studio resource editor), and some options to pick a language code and build, sign (if necessary), and deploy.

The following MSDN documentation area might be helpful. Resources in Applications, Creating Resource Files

jrista
Hi, thanks for your replying. If I strong-name signed my binary, is it possible for my users to localize it?
smwikipedia
Your assembly would not contain the localization data. Your resources are compiled into satellite assemblies, one for each language code. So, if you have MyAssembly.dll, you could have a bunch of language-specific assemblies: MyAssembly.en.dll (general english), MyAssembly.en-us.dll (U.S. english), MyAssembly.en-gb.dll (british english), MyAssembly.de.dll (german), MyAssembly.fr.dll (french), MyAssembly.sp.dll (spanish), etc. If your customers wish to create german and french translations of your program, and you provide them with a tool to do so...
jrista
...your tool would take the resources they provide, generate a .resources file, link that file into a satellite assembly, and if necessary, sign the new satellite assembly. Once the assembly exists, it would simply need to be deployed to the right child folder of your application (you can find more about that in MSDN documentation.) So long as you properly use the .NET resource manager to retrieve localized strings, images, icons, etc., once a culture-specific assembly exists in the right place...then .NET does the rest.
jrista