You have different things to make a "globalized" application.
1) Translate each label in your forms and controls in the application
You need to set the "Localizable" property to true for each form and control. This property allows you to create resource files in each language and region. Now, using the Language property, you can choose which language you want to support. When you select a language from the list with the list, your form (or control) will be automatically switched to that language. Now your job is to translate each word into a control. Once you make the modification, Visual Studio will create a resource file for a specific language. (For example, MyForm.fr-FR.resx for French-French).
2) Import each line of hard code into your code into a resx file
Create a resource file (personally, I use StringTable.resx) and add each line to translate to this file. After that, create a resource file for each language that you want to support, and translate the lines in each file. For example, if you want to support French, you create StringTable.fr.resx or StringTable.fr-FR.resx for French-French. With the ResourceManager class, you can load every row.
Note. If you are using Visual Studio 2005 or 2008, you already have the default resource files.
3) You need to carefully develop your forms and control
Microsoft Recommendations: User Guides
4) Work with date and numbers
If your application creates data files that can be sent to another user in another region, you need to think about it when you save your data in a file. Therefore, always indicate your time in UTC and perform the conversion in local mode only when downloading information. The same applies to decimal numbers, especially if they are stored in the text.
When you compile your application, Visual Studion will create a file with sound, such as MyApplication.fr.dll , in the subfolder fr . To load this DLL, you need to switch the language of the current thread at application startup.
Here is the code:
CultureInfo ci = new CultureInfo("fr"); Thread.CurrentThread.CurrentUICulture = ci;