基于ASP.NET實現(xiàn)全球化
2006/11/9 9:01:27
因為項目的關系,這兩天一直在研究ASP.NET的全球化問題。我知道,在JAVA體系中有專門的I18N處理方案,.NET中不可能會沒有。所以,到網上查了查資料,經過一番“苦斗”,略有小成。感覺網上目前還沒有非常完整的解決方案(也可能是我沒有發(fā)現(xiàn)),遂花了點時間總結一下經驗教訓,希望與大家共享之。若有什么不足之處,請各位多多指教。
本文中,將以在VS.Net2002中創(chuàng)建一個實際項目的方式來描述在ASP.NET中實現(xiàn)全球化的基本步驟和需要注意的地方。
第一步,我們創(chuàng)建一個名為TestRM的Web Application。這個項目將缺省包含
- AssemblyInfo.cs
- TestRM.csproj
- TestRM.csproj.webinfo
- TestRM.sln
- TestRM.suo
- TestRM.vsdisco
- WebForm1.aspx(包含aspx.cs和aspx.resx)
- Global.asax(包含asax.cs和asax.resx)
- Web.Config
第二步,需要為項目創(chuàng)建若干不同語種的資源文件。在.Net中,資源文件的擴展名是.resx,此文件是基本于XML的,VS.NET提供了非常方便的資源文件編輯工具(個人感覺很象XmlSpy),這兒就不多說了。在此,以簡體中文(zh-cn)和美國英語(en-us)為例。通過“項目->添加新項->資源文件”向項目中分別添加名為string.en-us.resx和string.zh-cn.resx的資源文件,并在string.en-us.resx中添加一條記錄,內容是name:String001;value:Welcome,在string.zh-cn.resx中添加一條記錄name:String001;value:歡迎。其XML文件的結構如下:

<?xml version="1.0" encoding="utf-8" ?>
<root>
...
<data name="String001">
<value>歡迎</value>
</data>
...
</root>
這兒有一點需要說明,如果你不是希望通過修改配置文件動態(tài)的切換語種,而是希望通過設置Windows的“區(qū)域設置”功能來切換語種的話,請?zhí)^第三步。(有這種需求嗎???-_-)
這樣,當此項目被編譯后,在bin目錄下將為出現(xiàn)en-us和zh-cn兩個子目錄,其中分別有一個dll文件。名為TestRM.resources.dll。
第三步,修改Global.asax和Web.Config文件以實現(xiàn)動態(tài)切換語種。
首先,我們需要在Global.asax的Application_BeginRequest事件中添加如下代碼:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ConfigurationSettings.AppSettings["DefaultCulture"]);
}
這是最簡單的應用,當然,你可以將一些配置項存儲到Cookie之中。
然后,在Web.Config中添加如下代碼:
<appSettings>
<add key="DefaultCulture" value="zh-cn" />
</appSettings>
注意,appSettings元素與system.web屬于同一層次。
最后,在WebForm1的Page_Load事件中加入如下代碼:
public class WebForm1 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
WebForm1 form1 = new WebForm1();
ResourceManager resManager = new ResourceManager(form1.GetType().Namespace + ".string", form1.GetType().Assembly);
System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;

Response.Write(resManager.GetString("String001",ci));
}

...
}
請大家注意上面這段代碼中有下劃線的這行代碼,在VS.NET 2002中,如果使用this.GetType().Namespace和this.GetType().Assembly.FullName得到竟然是ASP和6fqpc_hh, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null,獲得的Assembly顯然是隨機產生。但在c#的類文件和WinForm中是正常的,不清楚是什么原因。結果當然不用說,肯定是找不到相應的資源文件的。
此外,需要強調的

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 黑人太粗太深了太硬受不了了 | 天天躁夜夜踩狠狠踩2022| 九九久久精品国产AV片国产| 爱呦视频在线播放网址| 国产丰满老熟女重口对白| 日本dhxxxxxdh14日本| 在线日本妇人成熟| а天堂中文最新版在线| 日出水了特别黄的视频| 亚1州区2区三区4区产品| 欧美牲交a欧美牲交aⅴ免费下载 | 国产精品久久久久影院嫩草| 99在线观看国产| 少妇人妻偷人精品视频| 久久4k岛国高清一区二区| 男女啪啪进出阳道猛进| 国产一区二区精品在线观看| 国产情侣一区二区| 国产精品免费观看| 97精品人人妻人人| 日韩人妻无码一区二区三区99| 亚洲日本久久一区二区va| 视频在线一区二区三区| 国产男女猛烈无遮挡免费视频网站| 91精品国产色综合久久不| 天天摸天天操免费播放小视频 | 中文字幕在线观看免费| 日韩人妻无码精品无码中文字幕| 亚洲伊人色欲综合网| 欧美系列第一页| 亚洲资源在线视频| 看看镜子里我怎么玩你| 又大又粗好舒服好爽视频| 色香蕉在线观看网站| 国产在线观看中文字幕| 狠狠色伊人亚洲综合网站色| 国产精品久久久久久久久齐齐 | 国产成人无码区免费内射一片色欲| 男人资源在线观看| 成a人片亚洲日本久久| 丰满少妇三级全黄|