Proper localization of a WinForms application

I’ve just completed a C# .Net 3.5 project with a similar problem. We were writing WinForms plugin for an existing multi-lingual application with 8 languages (including English).

This is how we did it:

  1. Create all our forms and UI in the default language, English.

  2. Put all our internal strings in a resource file (stuff not tied directly to a form like custom error messages and dialog box titles etc)

Once we had completed most of the work and testing we localised it.

  1. Each form already had a .resx file but this was empty. We set the property ‘Localizable’ to true, the .resx file was filled with things like button sizes & strings.

  2. For each of the other languages, we changed the ‘Language’ property on the form. We chose the basic version of each language eg: ‘Spanish’ instead of ‘Spanish (Chile)’ etc. so that it would work for every ‘Spanish’ dialect, I think.

  3. Then we went through each control, translated its text and resized, if needed. This created a .resx per language and form combination.

We were then left with, for 8 languages, 8 .resx for each form and 8 .resx for the general strings. When compiled the output folder had the .dll we were creating and then a sub folder for each language with a .resources.dll in it.

We were able to test the versions of the UI in the designer by just changing the language property to check that we had the correct strings & layout.

All in all once we got our heads around it, it was quite easy and painless.

We didn’t need to write any custom tweaks to the form loading

Leave a Comment