ASP.NET網(wǎng)站支持多語言
(本地資源文件和全局資源文件的調用及需注意的地方總結)
一、 本地資源文件(App_LocalResources):
①、 本地資源的生成及調用
1、本地資源的VS自動生成方法:
將頁面調整到【設計】視圖,然后在VS2008菜單欄中
【工具】=》【生成本地資源】即可生成該頁面的資源文件,在App_LocalResources文件夾中可查看。eg:Default2.aspx.resx
2、本地資源的手動生成方法:
選中網(wǎng)站=》添加新項=》然后選擇【資源文件】即可創(chuàng)建一個資源文件,但是此時可以看到剛剛創(chuàng)建的資源文件.resx存放在App_GlobalResources文件夾中,當前為全局資源文件,需要在網(wǎng)站中創(chuàng)建一個名為App_LocalResources的文件夾(即本地資源文件夾)然后將剛剛創(chuàng)建的全局資源文件拖到當前文件夾中即可,然后在調用的時候需要在控件中添加meta:resourcekey=”資源鍵” 代碼,具體在調用中講解。
3、本地資源的調用:
(1)、服務器控件
1.1、前臺隱示使用本地化資源,VS2008自動生成本地資源在控件中就會自動包含meta:resourcekey=”資源鍵” 代碼,如果某控件未掃描到則就不會有該代碼標識需要手動添加此代碼
eg:
<asp:Label ruant=”server” ID=”lbl_msg” meta:resourcekey=”lbl_msg” ></asp:Label>
1.2、前臺顯示使用本地化資源
eg:
<asp:Label ruant=”server” ID=”lbl_msg”
Text=”<%$ Resources: lbl_msg .Text %>”
ToolTip=”<%$ Resources: lbl_msg .ToolTip %>”
></asp:Label>
藍色圖標和紅色圖標表示綁定數(shù)據(jù)形式(顯示/隱示),如下圖示:
1.3、后臺編碼時使用本地化資源
方法一:
//后臺通過資源鍵來獲取資源值,然后賦值給頁面對象
this.txtbox1.Text=(string)GetLocalResourceObject("資源鍵");
或
this.txtbox1.Text=(string)HttpContext.GetLocalResourceObject("資源文件名", "資源鍵");
(2)、非服務器控件(HTML控件,input …):
1.1、html控件或input控件都無法自動生成資源文件,需要手動添加meta:resourcekey=”資源鍵” 標記,并將其添加到資源文件中,但必須注意的是控件中必須添加服務器標識屬性,即:runat=”server”
eg:
<input id=”txt_msg” type=”text” meta:resourcekey=” txt_msg” />
測試結果:無法顯示資源txt_msg值,將其修改如下:
<input id=”txt_msg” type=”text” meta:resourcekey=”txt_msg” runat="server" />
測試結果:正常顯示資源txt_msg值
②、注意事項:
1、 每個頁面必須包含一個默認的本地資源文件,(資源文件名和頁面文件名區(qū)別在于資源文件名是在頁面文件名(包含文件的后綴)基礎上添加一個.resx后綴)
eg:index.aspx.resx。
默認的本地資源文件的作用:當其他本地資源文件,eg:index.aspx.en-US.resx 或…資源文件中未包含某鍵,而默認的本地資源文件中包含某鍵,則從默認的本地資源文件中取值。
2、 如果頁面需要支持多語言則可以復制默認的本地資源文件,然后修改其文件名稱
eg:index.aspx.en-US.resx(英文)
然后將index.aspx.en-US.resx中的鍵值修改為英文即可
3、 1)如果需要將所有的頁面都使用同一種語言則可以配置web.config文件,前提將頁面Page指令中的culture="auto" uiCulture="auto" 刪除,否則首先使用頁面中的語言形式
eg:
<system.web>
<!—en-US(英文),zh-CN(中文) …
UICulture-針對用戶界面的安鈕之類的控件顯示Culture-決定各種數(shù)據(jù)類型是如何組織,如數(shù)字與日期,貨幣-->
<globalization culture="en-US" uiCulture="en-US"/>
</system.web>
2)如果某個頁面和其他的頁面使用的語言不同,則可以在某個頁面Page命令中設置culture和uiCulture, 這兩個屬性的作用是使頁面優(yōu)先跟據(jù)瀏覽器的語言設置自動加載相應語言的資源文件等顯示方式
eg:
<%@ Page culture="zh-CN" uiCulture="zh-CN" %>
4、 如果想在頁面后臺(即.cs文件)通過傳遞參數(shù)的方式設置使用的語言,則
eg:
命名空間引用:
using System.Threading;
using System.Globalization;
PRotected override void InitializeCulture()
{
string culture = Request.QueryString[“culture”].ToString();
if (culture != "")
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
}
else
{
//默認中文
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-CN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
}
base.InitializeCulture();
}
通過傳遞編碼參數(shù)的方式,進行重寫InitializeCulture (初始化語言方法)來改變頁面語言顯示方式。
5、 本地資源文件只能在本頁面調用,不能被其他頁面調用,假如有兩個頁面Index1.aspx和Page 2.aspx則,如下資源文件
eg:Index1.aspx.resx
Page2.aspx.resx
Index1.aspx頁面不能調用Page 2.aspx.resx中的資源鍵值;
Page 2.aspx頁面也不能調用Index1.aspx.resx中的資源鍵值;
Index1.aspx頁面只能調用Index1.aspx.resx中的資源鍵值;
Page 2.aspx頁面只能調用Page 2.aspx.resx中的資源鍵值;
二、 全局資源文件(App_GlobalResources):
① 、全局資源的生成及調用
1、全局資源的手動生成方法:
選中網(wǎng)站=》添加新項=》然后選擇【資源文件】即可創(chuàng)建一個資源文件,但是此時可以看到剛剛創(chuàng)建的資源文件.resx存放在App_GlobalResources文件夾中,當前為全局資源文件.
2、前臺全局資源文件的調用:
1)、在需要調用的控件中添加<%$ Resources : 資源文件名,資源鍵 %>
eg:
<asp:Label ID="lbl_global" runat ="server" Text ="<%$ Resources:lang,lbl_global %>">
</asp:Label>
2)、前臺頁面級javaScript中調用全局資源文件方法:
<%= Resources .資源文件名 . 資源鍵 %>
eg:
<script>
var msg=” <%= Resources . lang . lbl_global %>”
</script>
3、后臺全局資源文件的調用:
1)、在后臺直接使用Resources .資源文件名 .資源鍵 方可獲取資源值
eg:
this. lbl_global.Text=Resources . lang . lbl_global ;
//后臺獲取image類型對象
System.Drawing.Bitmap imgJpg= Resources.lang.img_jpg
2)、
//后臺通過資源鍵來獲取資源值,然后賦值給頁面對象
this.lbl_global.Text=(string)GetGlobalResourceObject ("資源鍵");
或
this.lbl_global.Text=(string)HttpContext.GetGlobalResourceObject("資源文件名", "資源鍵");
3)、后臺使用 ResourceManager類來獲取資源
ResourceManager rm = new ResourceManager(Resource1.ResourceManager.BaseName,
Assembly.GetExecutingAssembly());
string str=rm. GetString(“資源鍵”);
② 注意事項:
1、全局的資源文件,存放在App_GlobalResources文件夾中,以.resx為后綴,首先必須添加一個默認的全局資源文件
eg:lang.resx。
默認的全局資源文件的作用:①、當其他全局資源文件,eg:lang.en-US.resx 或lang.zh-CN.resx等 資源文件中未包含某鍵,而默認的全局資源文件中包含某鍵,則從默認的全局資源文件中取值;②、資源調用時只能通過默認的資源文件名去調用,即
Resources . lang . 資源鍵 (正確√)
而不能使用
Resources . lang . en-US . 資源鍵; (錯誤×)
lang.en-US.resx 或lang.zh-CN.resx 只是根據(jù)使用的語言不同來自動調用
2、全局資源文件可以在本網(wǎng)站的所有頁面中調用。
其他需要注意的地方和本地資源差不多,這里就不重復講解。
以上是我對本地資源和全局資源的理解,如果有錯誤的地方請各位大神給予指導。^.^
<
新聞熱點
疑難解答