电竞比分网-中国电竞赛事及体育赛事平台

分享

asp.net開發(fā)中,web頁面實(shí)現(xiàn)頁面元素的多語言化(多國語化)

 昵稱10504424 2013-02-18

開發(fā)的一些系統(tǒng),經(jīng)常要求支持多語言(例如日文,英文等),以前大部分做法是創(chuàng)建一個(gè)資源文件,

將每一個(gè)標(biāo)簽,按鈕等標(biāo)題文字預(yù)先用各種語言設(shè)定保存好,

在程序中根據(jù)選擇的語言來顯示對應(yīng)文字。

這樣做的缺點(diǎn)是如果每次改動(dòng)或增加一個(gè)控件,都需要程序開發(fā)人員刻意做多語言對應(yīng),

如果用戶想要改某些標(biāo)題的描述,還需要開發(fā)人員改動(dòng)資源文件并替換到程序發(fā)布目錄。

 

經(jīng)過調(diào)查實(shí)驗(yàn),最終想了一個(gè)辦法來較好地對應(yīng)此問題:

 在每一個(gè)web頁面,設(shè)定一個(gè)只有最高級(jí)的管理權(quán)限才能看到的一個(gè)按鈕(例如叫“設(shè)定”),

來負(fù)責(zé)畫面上各固定標(biāo)題的設(shè)置,    只要點(diǎn)擊這個(gè)按鈕,就通過控件遍歷的方法來顯示該頁面上所有希望控制的

控件(比如Label,button,gridview,linkbutton等),   將其各種語言的內(nèi)容顯示到一個(gè)小頁面上,讓用戶自己設(shè)定,

然后保存到DB。下次打開時(shí)就按照DB設(shè)定好的內(nèi)容初期化頁面控件的標(biāo)題。

 

最終用戶可自由設(shè)定,也無需開發(fā)人員不停修改。

 

畫面效果如下:

 

點(diǎn)擊“設(shè)定”

 

下面舉例,循環(huán)設(shè)定頁面中控件(TextBox,DropDownList等)為Disable的代碼【讀取控件的Text屬性方法類似】:

Public Shared Sub LoopingControlsDisabled(ByVal oControl As Control)
        Dim frmCtrl As Control
        Dim btn As Button
        For Each frmCtrl In oControl.Controls
            If TypeOf frmCtrl Is TextBox Then
                DirectCast(frmCtrl, TextBox).Enabled = False
            End If
            If TypeOf frmCtrl Is DropDownList Then
                DirectCast(frmCtrl, DropDownList).Enabled = False
            End If
            If TypeOf frmCtrl Is CheckBox Then
                DirectCast(frmCtrl, CheckBox).Enabled = False
            End If
            If TypeOf frmCtrl Is RadioButton Then
                DirectCast(frmCtrl, RadioButton).Enabled = False
            End If
            If TypeOf frmCtrl Is FileUpload Then
                DirectCast(frmCtrl, FileUpload).Enabled = False
            End If
            If TypeOf frmCtrl Is Button Then
                btn = DirectCast(frmCtrl, Button)
                'If btn.Text.Equals("關(guān)閉") OrElse btn.ID.Equals("btnClose") Then
                If btn.ID.Equals("btnClose") Then
                    '僅關(guān)閉按鈕可用
                    btn.Enabled = True
                Else
                    btn.Enabled = False
                End If
            End If
            If frmCtrl.HasControls Then
                LoopingControlsDisabled(frmCtrl)
            End If
        Next
    End Sub

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多