日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

基于语言文件的asp.net全球化解决方案

發(fā)布時(shí)間:2024/1/17 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于语言文件的asp.net全球化解决方案 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

方案描述
??? 本方案采用一種語(yǔ)言一個(gè)資源文件的方法,能夠有效提高資源文件的可維護(hù)性。而VS.NET提供的一個(gè)WebForm一個(gè)資源文件的方案,無法滿足統(tǒng)一維護(hù)的需要。

實(shí)現(xiàn)步驟
1. 準(zhǔn)備資源文件
??? 資源文件通常有.resx和.resources兩種,前者是xml文件,后者是二進(jìn)制文件。本方案中采用.resources作為資源文件,因此需要一個(gè)第三方提供的資源編輯器對(duì)資源文件進(jìn)行編輯,我使用的是Resourcer,反正只要能編輯資源文件并且保存為.resources文件的軟件都可以。在資源文件中添加一些string資源,通常情況下,只會(huì)用到string資源,有些項(xiàng)目可能需要全球化的圖片資源,原理里一樣的,本文就不涉及了。
??? 資源文件的命名是有規(guī)定,該方案中,我把所有的資源文件名設(shè)為business.[culture].resources,其中business這個(gè)名字可以改,可以改成任何一個(gè)你喜歡的名字,[culture]部分必須使用.net允許的文化縮寫,如zh-cn、ja-jp、en-us等。
2. 把資源文件放入項(xiàng)目
??? 為了方便管理,我把所有的資源文件放在網(wǎng)站的一級(jí)目錄Resources中。由于讀取資源文件時(shí)要用到資源文件的物理位置,建議把Resources目錄直接放在wwwroot下,否則會(huì)因?yàn)槁窂絾栴}而變得很麻煩。
3. 增加默認(rèn)語(yǔ)言設(shè)置
??? 在web.config中加入<add key="cultureName" value="zh-cn" />,表明默認(rèn)情況下使用zh-cn作為默認(rèn)語(yǔ)言文化。
4. 通過Session設(shè)置當(dāng)前語(yǔ)言
??? 我們用一個(gè)Session變量——Session["cultureName"]來告訴每一個(gè)頁(yè)面應(yīng)該使用哪種語(yǔ)言進(jìn)行初始化。當(dāng)Session["cultureName"]==null時(shí),表明該變量未設(shè)置過,就直接用默認(rèn)語(yǔ)言文化,即web.config中的設(shè)置值。
如果用戶想改變當(dāng)前的界面語(yǔ)言,只需要設(shè)置Session["cultureName"]為指定的文化縮寫即可。

全球化資源輔助管理類
通過這個(gè)類你不需要了解ResourceManager的使用方法,就可以完成全球化的初始化和資源讀取工作。該類初始化時(shí)需要傳入一個(gè)Page對(duì)象,該對(duì)象將用于獲得Session變量值。一般情況下,大家只需要用該類的GetString()方法就可以了。

????/**////?<summary>
????
///?全球化資源輔助管理類
????
///?</summary>

????public?class?ResourceHelper
????
{
????????
private?ResourceManager?_rm=null;
????????
private?Page?_page=null;

????????
public?ResourceHelper(Page?page)
????????
{
????????????_page
=page;
????????????PrepareResource();
????????}

????????
/**////?<summary>
????????
///?獲得當(dāng)前文化,從Session["cultureName"]取
????????
///?</summary>

????????protected?CultureInfo?GetCurrentCulture
????????
{
????????????
get
????????????
{
????????????????
if(_page.Session["cultureName"]!=null)
????????????????????
return?CultureInfo.CreateSpecificCulture(_page.Session["cultureName"].ToString());
????????????????
else????//如果Session未設(shè)置,則直接從web.config中讀取默認(rèn)設(shè)置
????????????????????return?CultureInfo.CreateSpecificCulture(System.Configuration.ConfigurationSettings.AppSettings["cultureName"]);
????????????}

????????}

????????
/**////?<summary>
????????
///?初始化資源管理
????????
///?</summary>

????????public?void?PrepareResource()
????????
{
????????????_rm?
=?ResourceManager.CreateFileBasedResourceManager("business",_page.Server.MapPath("resources")+System.IO.Path.DirectorySeparatorChar,null);
????????}

????????
/**////?<summary>
????????
///?獲得資源指針
????????
///?</summary>

????????protected?ResourceManager?resource
????????
{
????????????
get
????????????
{
????????????????
if(_rm==null)
????????????????????PrepareResource();
????????????????
return?_rm;
????????????}

????????}

????????
/**////?<summary>
????????
///?獲得資源字符串
????????
///?</summary>
????????
///?<param?name="ResourceID">資源ID</param>
????????
///?<returns></returns>

????????public?string?GetString(string?ResourceID)
????????
{
????????????
return?this.resource.GetString(ResourceID,this.GetCurrentCulture);
????????}

????}

為了方便大家學(xué)習(xí),做了個(gè)Demo給大家參考
關(guān)于Demo的一些說明
1. 本演示在WindowsXP Professional+VS.NET2003環(huán)境下調(diào)試通過
2. 演示中提供了三種語(yǔ)言的資源文件:business.zh-cn.resources, business.en-us.resources,business.ja-jp.resources
它們都放在Resources目錄下,每個(gè)資源文件中有001_01、001_02、001_03三個(gè)string資源,分別表示用戶名、密碼、生日。
3. 通過選擇下拉式列表中的語(yǔ)言,然后按“確定”按鈕,可以完成語(yǔ)言切換

總結(jié)

以上是生活随笔為你收集整理的基于语言文件的asp.net全球化解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。