问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

asp.net(C#)如何用globalization实现多语言转换?

发布网友 发布时间:2022-04-25 14:40

我来回答

2个回答

热心网友 时间:2022-04-27 11:27

#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

热心网友 时间:2022-04-27 12:45

ASP+内部使用UNICODE,NGWS内部基类的String也是用UNICODE。可以支持某种特定的编码,实现转换。
场所属性可以通过CultureInfo类访问,其中,CurrentCulture是同场所有关的函数的缺省值,
而CurrentUICulture是场所上的资源数据格式,例:
<%=CultureInfo.CurrentCulture.NativeName %>
<%=CultureInfo.currentUICulture.NativeName %>
一些与场所有关的类提供格式化输出,如:
<%=DateTime.Now.Format( "f ",null)%>
<%=DateTime.Now.Format( "f ",new System.Globalization.CultureInfo( "de "))%>

可以为某个目录进行配置,如:
<configuration>
<globalization
fileencoding = "utf-8 "
requestencoding = "utf-8 "
responseencoding = "utf-8 "
culture = "en-us "
uiculture = "de "
/>
或者在Page指令中:
<%@ Page Culture = "fr " UICulture = "fr " ResponseEncoding = "utf-8 " %>
在页面内部还可以随时更改,使用 Thread.CurrentCulture修改,也就是说,同一个页面可以使用
很多种编码输出。

1).设置文化和编码
中文的Culture应设为:zh-cn
CultureInfo.CurrentCulture.Name = "zh-cn ";
CultureInfo.CurrentCulture.EnglishName = "Chinese(Peoples ' Republic of China ";
CultureInfo.CurrentCulture.NativeName = "中文(简体)(中华人民共和国) ";
另外,类RegionInfo还提供地域信息:
RegionInfo.CurrentRegion.NativeName = "中华人民共和国 ";
RegionInfo.CurrentRegion.CurrencySymbol = "¥ ";

2).本地化ASP+应用
3).使用资源文件
NGWS基类支持,运行时有个类叫ResourceManager的实例可以使用。可以用ResourceWriter或者实用
工具resgen.exe来生成资源文件,resgen以 key = value 的形式作为输入,如:
;
;注释
;
[Strings]
greetings = 欢迎你!
more = 更多新闻

资源文件的后缀为.resources。

如何在页面中使用资源文件?
用户的Content-Language可以用Request.UserLanguages[0]来取得。
如何实现多语言支持?
a).准备资源文件,生成.resources文件,文件取名规则:中间带Culture名。例:articles.en-us.resources
b).global.asax中取得一个ResourceManager,并放如Application中供整个Application使用
c).global.asax中为Application_BeginRequest事件写代码,根据客户的情况决定当前的Culture.
d).在页面中用ResourceManager.GetString取得内容。

例:
//global.asax中:
void Application_OnStart(){
Application[ "RM "]=new ResourceManager( "articles ",Server.Mappath( "resources ")+Enviroment.DirectorySeparatorChar,null);
}
void Application_BeginRequest(Object sender,EventArgs e){
try {
Thread.CurrentThread.CurrentCulture = new
CultureInfo(Request.UserLanguages[0]);
}catch(ArgumentException){
Thread.CurrentThread.CurrentCulture=new CultureInfo( "en-us ");
}
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}

//default.asax中:
ResourceManager rm;
void Page_Init(Object sender,EventArgs e){
rm=(ResouceManager)Application[ "RM "];
}

//输出内容时:
<%= rm.GetString( "greetings ") %>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苍雷剑和翻天印哪个好 还有玄冰剑和照妖镜 武林外传现在收购一套+15或者+16的法宝玄冰剑,苍雷剑大概是多少钱,求解... 武林外传苍雷剑玄冰剑可以用什么符强化 诗经桢字诗句 删除电脑里的共享文件夹在哪里设置电脑共享文件怎么删除 为什么我点击qq面板上的qq游戏会显示密码不正确 "CPR"真的是“检查口袋并跑步”的缩写吗? cpr屏蔽是什么意思? CPR是什么意思 CPD是什么意思 网络广告直销CPR (Cost Per Response ) 玩快手,我关注一个人,但她又没关注我,所以我对她的关注取消了,她知道的吗?怎么知道? 电脑摄像头不能用,一点就出现应用程序错误!怎么回事啊?现在照相都不行了! 交通事故保险公司会承担哪些费用 我的web.config配置文件中怎么没有全球化&lt;globalization&#47;&gt;设置节啊? 测试人员每天的工作都是做什么? win7系统里windows\Globalization文件夹里有什么东西 车祸保险报销流程是什么? Globalization是什么文件夹 我是大侦探有手游嘛?我是谜是么? 与“我是谜”相似的小程序 我是谜小程序中,诡毒祭这个剧本的答案是什么? 何星空 我是谜陈温柔怎么玩 我是谜怎么取消关注 我是谜安卓和苹果可以一起玩吗? 我是谜推理游戏是唐人街探案2里的crimaster犯罪大师APP软件嘛? 戚薇在造型用色上够大胆,荧光帽配咖色靴,你觉得如何呢? 戚薇穿衣够大胆,硬把粉色西装穿出酷帅霸气感,你觉得好看吗? 你觉得戚薇的美在哪里? 戚薇带的这款眼镜是哪个牌子的~ 戚薇经常戴美瞳,是魔眼momo泪光美瞳吗?看起来蛮好看的,自然又时尚。 QQ怎么三人聊天 交通事故中的保险具体有几种?作用是什么 电子厂的软硬件测试员是做什么的? 怎么打开一些看不见的打开文件夹 windows7里windows中,ELS和Sorting的上级文件夹是什么名字 软件测试员具体是做哪些事情? win7下系统自带的壁纸和屏幕保护程序在那个文件夹里?要怎么找?急!!!!! 谈谈对七夕节的理解吧? 在Web.config中配置AdventureWorks站点的全球化和本地化设置。 什么是测试 ,测试的工作怎么样啊,做什么样的准备才能成为测试员啊,各位给点意见啊 删除Globalization文件夹后开不了机? QQ视频三人聊天 微信两人聊天信息如何导入三人群聊页面? 如何用iTunes 12.4将视频导入iPhone 解释一下 &lt;globalization requestEncoding=&quot;utf-8&quot; responseEncoding=&quot;utf-8&quot;&#47;&gt; 有没有一款聊天软件可以打通两个人的电话,三人或者多人同时聊天! 手机测试员主要是做什么的? &lt;globalization requestEncoding=&quot;gb2312&quot; responseEncoding=&quot;gb2312&quot; &#47;&gt;添加在.net的web.config 文件什么 三人聊天,一女两男、求判断 急求一篇关于全球化问题的英文演讲稿!谢谢啊!谢谢啊!