Why don't you put the localization parameter in the configuration file? Your application can read the configuration file at boot time and apply the correct settings to it. Then you need to handle the localization of each line manually.
I did something similar for a tool that I did once (in C #):
Localization.cs
using System.Globalization; using System; namespace DummyProject { public class Localization { private string _language = "en"; public Localization() { if (CultureInfo.CurrentCulture.Name.StartsWith("de") == true) { CurrentLanguage = "de"; } else if (CultureInfo.CurrentCulture.Name.StartsWith("fr") == true) { CurrentLanguage = "fr"; } else if (CultureInfo.CurrentCulture.Name.StartsWith("es") == true) { CurrentLanguage = "es"; } else { // Default english CurrentLanguage = "en"; } } //------------------------- public string CurrentLanguage { get { return _language; } set { _language = value; } } private string GetLocalizedString( string pDefault, string pDe = "", string pFr = "", string pEs = "") { string returnValue = pDefault; switch (_language) { case "de": returnValue = pDe; break; case "fr": returnValue = pFr; break; case "es": returnValue = pEs; break; default: returnValue = pDefault; break; } if (String.IsNullOrEmpty(returnValue) == true) { returnValue = pDefault; } return returnValue; } public string AboutToolStripMenuItem { get { return GetLocalizedString("A&bout", "Ü&ber", "&A Propos", "&Acerca"); } } public string AutocheckForUpdateToolStripMenuItem { get { return GetLocalizedString("&Autocheck for update", "&Automatisch nach Updates suchen", "&Vérifier automatiquement les mises à jour", "&Comprobar actualizaciones automáticamente"); } } public string TimeUpdater { get { return GetLocalizedString("Timer Updater", "Zum Timer-Upater", "Mettre a jour", "Actualización de temporizador"); } } public string CloseToolStripMenuItem { get { return GetLocalizedString("&Close", "&Beenden", "F&ermer", "&Cerrar"); } } } }
Then in your main class:
private Localization _localization; public Form1() { InitializeComponent(); _localization = new Localization();
source share