Почему бы вам не поместить настройку локализации в файл конфигурации?
Ваше приложение может прочитать файл конфигурации во время загрузки и применить правильные настройки на основе этого.
Затем вам нужно вручную обработать локализацию каждой строки.
Я сделал что-то подобное для инструмента, который сделал один раз (в 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"); } }
}
}
Тогда в вашем основном классе:
private Localization _localization;
public Form1()
{
InitializeComponent();
_localization = new Localization();
//----
// Load localization setting here
_localization.CurrentLanguage = "en";
//----
SetLocalization();
}
private void SetLocalization()
{
aboutToolStripMenuItem.Text = _localization.AboutToolStripMenuItem;
autocheckForUpdateToolStripMenuItem.Text = _localization.AutocheckForUpdateToolStripMenuItem;
bttn_TimerUpdater.Text = _localization.TimeUpdater;
closeToolStripMenuItem.Text = _localization.CloseToolStripMenuItem;
}