我认为第一种要更好一点~~因为制作简单,读取也方便,只有不到10行代码!
而第二种,貌似代码要用10行来做单位了吧~~
综上,我认为第一种好!
但是这是个人习惯问题!!习惯就是最好的~~
#region Language Operation/// <summary>
/// 设置app.config中的Language的value.
/// </summary>
/// <param name="AppKey">key</param>
/// <param name="AppValue">value</param>
public void SetLanguageValue(string AppKey, string AppValue)
{
XmlDocument xDoc = new XmlDocument()
string configpath = System.Reflection.Assembly.GetExecutingAssembly().CodeBase + ".config"
string path = configpath.Substring(8)
//此处配置文件在程序目录下
xDoc.Load(path)
XmlNode xNode
XmlElement xElem1
XmlElement xElem2
xNode = xDoc.SelectSingleNode("//appSettings")
xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']")
if (xElem1 != null)
{
xElem1.SetAttribute("value", AppValue)
}
else
{
xElem2 = xDoc.CreateElement("add")
xElem2.SetAttribute("key", AppKey)
xElem2.SetAttribute("value", AppValue)
xNode.AppendChild(xElem2)
}
xDoc.Save(path)
}
public void SetCurrentLanguageIMG()
{
设置调用的资源文件语言包
switch (OctoSTPNet.Method.Language.LanguageType)
{
case "zh-CHS":
{
menuSChinese1.Checked = Janus.Windows.UI.InheritableBoolean.True
menuEnglish.Checked = Janus.Windows.UI.InheritableBoolean.False
menuTChinese.Checked = Janus.Windows.UI.InheritableBoolean.False
// menuSChinese.Image = OctoSTPNet.Properties.Resources.Tip
//menuEnglish.Image = null
//menuTChinese.Image = null
}
break
case "zh-TW":
{
menuSChinese1.Checked = Janus.Windows.UI.InheritableBoolean.False
menuEnglish.Checked = Janus.Windows.UI.InheritableBoolean.False
menuTChinese.Checked = Janus.Windows.UI.InheritableBoolean.True
}
break
default:
{
menuSChinese1.Checked = Janus.Windows.UI.InheritableBoolean.False
menuEnglish.Checked = Janus.Windows.UI.InheritableBoolean.True
menuTChinese.Checked = Janus.Windows.UI.InheritableBoolean.False
}
break
}
}
private void englishToolStripMenuItem_Click_1(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e)
{
SetLanguageValue("LanguageType", "EN")
menuSChinese1.Checked = Janus.Windows.UI.InheritableBoolean.False
menuEnglish.Checked = Janus.Windows.UI.InheritableBoolean.True
menuTChinese.Checked = Janus.Windows.UI.InheritableBoolean.False
MessageBoxManager.Show("Please Re-Start OctO to view new Language!", "OctO-Change Language")
}
private void chinaCHSToolStripMenuItem_Click_1(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e)
{
SetLanguageValue("LanguageType", "zh-CHS")
menuSChinese1.Checked = Janus.Windows.UI.InheritableBoolean.True
menuEnglish.Checked = Janus.Windows.UI.InheritableBoolean.False
menuTChinese.Checked = Janus.Windows.UI.InheritableBoolean.False
MessageBoxManager.Show("Please Re-Start OctO to view new Language!", "OctO-Change Language")
}
private void chinaTWToolStripMenuItem_Click_1(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e)
{
SetLanguageValue("LanguageType", "zh-TW")
menuSChinese1.Checked = Janus.Windows.UI.InheritableBoolean.False
menuEnglish.Checked = Janus.Windows.UI.InheritableBoolean.False
menuTChinese.Checked = Janus.Windows.UI.InheritableBoolean.True
MessageBoxManager.Show("Please Re-Start OctO to view new Language!", "OctO-Change Language")
}
#endregion
呵呵,要实现跨多语言,除非多语言支持某一特定的规范才行。许多人往往不太理解规范的意思,我举个例子。
同一条铁路凭什么能够支持彼此不同的火车?是因为所有火车都支持一个特定的规范——左右车轮的间距与轨道的间距相等。
因此,.net的多语言必须支持特定的规范,这个规范就是通用类型系统(CTS)和公共语言规范(CLS),而实现这个规范的就是MSIL代码。