摘要:好用的GlobalResource(多國語系應用)
以前在網站在作多國語系時,大多的方法大多是一個語系作一張網頁,進階一些的懂得作語言檔來管理,但在管理語言檔時總是無好的管理工具可管理,且要自已寫code來作語言置換的動作,而asp.net裡面提供了許多人性化的東西來解決了許多網站煩人的管理問題。
GlobalResource就是其中之一,以下是小弟拿他來作語言檔的管理當然他可放的資源很多樣化(圖片、文字、檔案 ...etc)。
step1
首先建立好asp.net App_GlobalResources檔案夾
step2
建立語言檔,看您有幾種語系就建幾個吧。
lanFile.resx
step3
接下來就是寫,轉換語系的code,您可寫個basePage來繼承,並利用session暫存目前已選的語系。
Imports ...Microsoft.VisualBasic
Imports System.Threading
Imports System.Globalization
Imports System.web.Security
Imports Common
Namespace Localization
Public Class MyPage
Inherits System.Web.UI.Page
"--內部變數--"
Public Property Language() Property Language() As String
Get
Return str_language
End Get
Set(ByVal value As String)
str_language = value
End Set
End Property
"--語言設定--""--語言設定--"
Imports System.Threading
Imports System.Globalization
Imports System.web.Security
Imports Common
Namespace Localization
Public Class MyPage
Inherits System.Web.UI.Page
"--內部變數--"
Public Property Language() Property Language() As String
Get
Return str_language
End Get
Set(ByVal value As String)
str_language = value
End Set
End Property
"--語言設定--""--語言設定--"
step4
測試頁多國語系
在.aspx上要呼叫語言檔語法=>Text="<%$ resources:lanFile,lan000007 %>"
在.vb上要呼叫語言檔語法=> Resources.lanFile.lan000010
<%@ import namespace="system.web.security"%>
<%@ Page Language="vb" AutoEventWireup="false" CodeFile="login.aspx.vb" Inherits="login"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml" >
<HEAD runat="server">
<title>測試頁</title>
<LINK rel="stylesheet" href="~/images/mycss.css" type="text/css" />
</HEAD>
<body style="font-size: 12pt" >
<form id="Form1" method="post" runat="server">
<asp:DropDownList ID="drp_lan" runat="server" AutoPostBack="True" Visible="False">
<asp:ListItem Value="ZH-TW">繁體中文</asp:ListItem>
<asp:ListItem Value="EN-US">English</asp:ListItem>
<asp:ListItem Value="ZH-CN">簡體中文</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="lbl_lan" runat="server" Text="<%$ resources:lanFile,lan000007 %>" Visible="False"></asp:Label>
</form>
</body>
</HTML>
<%@ Page Language="vb" AutoEventWireup="false" CodeFile="login.aspx.vb" Inherits="login"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml" >
<HEAD runat="server">
<title>測試頁</title>
<LINK rel="stylesheet" href="~/images/mycss.css" type="text/css" />
</HEAD>
<body style="font-size: 12pt" >
<form id="Form1" method="post" runat="server">
<asp:DropDownList ID="drp_lan" runat="server" AutoPostBack="True" Visible="False">
<asp:ListItem Value="ZH-TW">繁體中文</asp:ListItem>
<asp:ListItem Value="EN-US">English</asp:ListItem>
<asp:ListItem Value="ZH-CN">簡體中文</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="lbl_lan" runat="server" Text="<%$ resources:lanFile,lan000007 %>" Visible="False"></asp:Label>
</form>
</body>
</HTML>
Imports Common
Imports System.Web.Security
Imports System.Data
Public Class login
Inherits Localization.MYPAGE
"--SetPageValue--"
"--page_load--"
Protected Sub drp_lan_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles drp_lan.SelectedIndexChanged
Try
Session("PreferredCulture") = Me.drp_lan.SelectedValue
Response.Redirect(Request.Url.PathAndQuery)
Catch ex As Exception
End Try
End Sub
End Class
以上是小弟對 GlobalResource小小應用範例,提供大家參考,內容若有錯誤也請多多指教。
ps: 小弟是用doNet2.0 開發的 若是doNet1.1可能無法使用。