• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        基于ASP.NET完成全球化

        基于ASP.NET完成全球化

        更新時間:2022-04-30 文章作者:未知 信息來源:網絡 閱讀次數:

        基于ASP.NET實現全球化


        因為項目的關系,這兩天一直在研究ASP.NET的全球化問題。我知道,在JAVA體系中有專門的I18N處理方案,.NET中不可能會沒有。所以,到網上查了查資料,經過一番“苦斗”,略有小成。感覺網上目前還沒有非常完整的解決方案(也可能是我沒有發現),遂花了點時間總結一下經驗教訓,希望與大家共享之。若有什么不足之處,請各位多多指教。
        本文中,將以在VS.Net2002中創建一個實際項目的方式來描述在ASP.NET中實現全球化的基本步驟和需要注意的地方。
        第一步,我們創建一個名為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
        第二步,需要為項目創建若干不同語種的資源文件。在.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>
        這兒有一點需要說明,如果你不是希望通過修改配置文件動態的切換語種,而是希望通過設置Windows的“區域設置”功能來切換語種的話,請跳過第三步。(有這種需求嗎???-_-)
        這樣,當此項目被編譯后,在bin目錄下將為出現en-us和zh-cn兩個子目錄,其中分別有一個dll文件。名為TestRM.resources.dll。
        第三步,修改Global.asax和Web.Config文件以實現動態切換語種。
        首先,我們需要在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中是正常的,不清楚是什么原因。結果當然不用說,肯定是找不到相應的資源文件的。
        此外,需要強調的一點是,這兒使用了form1.GetType().Namespace + ".string",如果資源文件不是被放置在項目根目錄下,而是被放在某個子目錄下時,請注意修改項目的缺省命名空間。因為,資源文件被編譯后,在項目的資源文件TestRM.resources.dll的Manifest(用ILDASM查看)中會有如下一行,.mresource public 'TestRM.string.zh-CN.resources'或.mresource public 'TestRM.string.en-US.resources'。其基本的構成規則是項目缺省命名空間+資源文件所在目錄名+資源文件名[+語種],如果一種項目的資源文件不分語種,如:我們定義了一個名為string.resx的資源文件,此時,編譯項目后在bin目錄下將不再會產生諸如zh-CN和en-US之類的子目錄,資源文件將被直接嵌入項目的Assembly中。同時,在項目的Assembly的Manifest中會有如下一行.mresource public 'TestRM.string.resources'。所以,如果資源文件不是放在項目的根目錄,且缺省命名空間沒有被改變的話,在試圖使用resManager.GetString時將會被提示“無法訪問任何語種的資源文件”,原因就是上面所說的。
        基本上,上述的這些就是我在研究基于ASP.NET實現全球化時的一些心得,希望能對一些朋友

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 久久免费视频网站| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲最大AV网站在线观看| 日韩电影免费在线观看网址 | 亚洲伊人久久大香线蕉苏妲己| 在线播放免费人成毛片乱码| 亚洲精品高清无码视频| 免费人成激情视频在线观看冫| 亚洲女同成av人片在线观看| 免费无码又爽又刺激网站 | 亚洲伊人精品综合在合线| 国产免费的野战视频| 亚洲国产成人精品电影| 免费精品国产自产拍在| 亚洲国产精品18久久久久久| 四虎永久免费影院| 国产精品免费在线播放| 777亚洲精品乱码久久久久久 | 亚洲一区二区三区播放在线| 成人免费一区二区三区在线观看| 亚洲国产精华液2020| MM131亚洲国产美女久久 | 国产做国产爱免费视频| 亚洲人成电影福利在线播放| 久久久久久久免费视频| 粉色视频成年免费人15次| 红杏亚洲影院一区二区三区| 日日麻批免费40分钟无码| 2020国产精品亚洲综合网| 亚洲成人一区二区| 久久99青青精品免费观看| 亚洲精品国产首次亮相| 中文字幕亚洲天堂| 一级女人18毛片免费| 免费一级特黄特色大片| 亚洲人成在线观看| 又黄又爽的视频免费看| 免费无码又爽又刺激高潮视频| 亚洲国产成人无码AV在线| 亚洲国产精品福利片在线观看| 四虎永久在线精品免费网址|