開發(fā)的一些系統(tǒng),經(jīng)常要求支持多語言(例如日文,英文等),以前大部分做法是創(chuàng)建一個資源文件,
將每一個標簽,按鈕等標題文字預先用各種語言設(shè)定保存好,
在程序中根據(jù)選擇的語言來顯示對應(yīng)文字。
這樣做的缺點是如果每次改動或增加一個控件,都需要程序開發(fā)人員刻意做多語言對應(yīng),
如果用戶想要改某些標題的描述,還需要開發(fā)人員改動資源文件并替換到程序發(fā)布目錄。
經(jīng)過調(diào)查實驗,最終想了一個辦法來較好地對應(yīng)此問題:
在每一個web頁面,設(shè)定一個只有最高級的管理權(quán)限才能看到的一個按鈕(例如叫“設(shè)定”),
來負責畫面上各固定標題的設(shè)置,只要點擊這個按鈕,就通過控件遍歷的方法來顯示該頁面上所有希望控制的
控件(比如Label,button,gridview,linkbutton等), 將其各種語言的內(nèi)容顯示到一個小頁面上,讓用戶自己設(shè)定,
然后保存到DB。下次打開時就按照DB設(shè)定好的內(nèi)容初期化頁面控件的標題。
最終用戶可自由設(shè)定,也無需開發(fā)人員不停修改。
畫面效果如下:

點擊“設(shè)定”

下面舉例,循環(huán)設(shè)定頁面中控件(TextBox,DropDownList等)不可用的代碼:
復制代碼 代碼如下:
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
您可能感興趣的文章:- ASP.NET MVC的Localization本地化多語言支持
- asp.net 支持多語言站點的實現(xiàn)方法
- asp.net 2.0多語言網(wǎng)站解決方法
- Asp.Net Core MVC項目實現(xiàn)多語言實例(Globalization/Localization)