怎么实现asp.net本地化多语言

Python014

怎么实现asp.net本地化多语言,第1张

我在我的项目中是这样做的,给你做个参考吧。这个重写的方法你可以直接定义在当前页面的cs文件中。不过我是定义在页面基类中了。网站所有页面继承页面基类,就可以实现统一的多语言控制了。

protected override void InitializeCulture()

{

string strCurrentCulture = Request.QueryString["CurrentCulture"]//获取当前语言参数,你也可以从Session、Cookie、全局变量或是控件获取

if (!String.IsNullOrEmpty(strCurrentCulture))

{

try

{

Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture)

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture)

UserStaticValue.CurrentCulture = strCurrentCulture

}

catch//如果当前语言参数不合法则默认显示中文

{

strCurrentCulture = "zh-cn"

//UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言

//Culture - 决定各种数据类型是如何组织,如数字与日期

Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture)

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture)

}

}

else

{

strCurrentCulture = "zh-cn"

//UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言

//Culture - 决定各种数据类型是如何组织,如数字与日期

Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture)

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture)

}

}

希望可以帮到你!

#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

我在我的项目中是这样做的,给你做个参考吧。这个重写的方法你可以直接定义在当前页面的cs文件中。不过我是定义在页面基类中了。网站所有页面继承页面基类,就可以实现统一的多语言控制了。

protected override void InitializeCulture()

{

string strCurrentCulture = Request.QueryString["CurrentCulture"]//获取当前语言参数,你也可以从Session、Cookie、全局变量或是控件获取

if (!String.IsNullOrEmpty(strCurrentCulture))

{

try

{

Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture)

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture)

UserStaticValue.CurrentCulture = strCurrentCulture

}

catch//如果当前语言参数不合法则默认显示中文

{

strCurrentCulture = "zh-cn"

//UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言

//Culture - 决定各种数据类型是如何组织,如数字与日期

Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture)

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture)

}

}

else

{

strCurrentCulture = "zh-cn"

//UICulture - 决定了采用哪一种本地化资源,也就是使用哪种语言

//Culture - 决定各种数据类型是如何组织,如数字与日期

Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture)

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture)

}

}

希望可以帮到你!