为什么不把本地化设置放在一个配置文件中呢?
您的应用程序可以在加载时读取配置文件,并根据正确的设置应用正确的设置。
然后您需要手动处理每个字符串的本地化。
我曾经为一个工具做过类似的事情(在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
{
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;
}