服务器之家

服务器之家 > 正文

asp.net web页面元素的多语言化(多国语化)实现分享

时间:2019-10-22 10:48     来源/作者:asp.net教程网

开发的一些系统,经常要求支持多语言(例如日文,英文等),以前大部分做法是创建一个资源文件,

将每一个标签,按钮等标题文字预先用各种语言设定保存好,

在程序中根据选择的语言来显示对应文字。

这样做的缺点是如果每次改动或增加一个控件,都需要程序开发人员刻意做多语言对应,

如果用户想要改某些标题的描述,还需要开发人员改动资源文件并替换到程序发布目录。

经过调查实验,最终想了一个办法来较好地对应此问题:

在每一个web页面,设定一个只有最高级的管理权限才能看到的一个按钮(例如叫“设定”),

来负责画面上各固定标题的设置,只要点击这个按钮,就通过控件遍历的方法来显示该页面上所有希望控制的

控件(比如Label,button,gridview,linkbutton等),   将其各种语言的内容显示到一个小页面上,让用户自己设定,

然后保存到DB。下次打开时就按照DB设定好的内容初期化页面控件的标题。

最终用户可自由设定,也无需开发人员不停修改。

画面效果如下:

asp.net web页面元素的多语言化(多国语化)实现分享

点击“设定”

asp.net web页面元素的多语言化(多国语化)实现分享

下面举例,循环设定页面中控件(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("关闭") OrElse btn.ID.Equals("btnClose") Then 
If btn.ID.Equals("btnClose") Then 
'仅关闭按钮可用 
btn.Enabled = True 
Else 
btn.Enabled = False 
End If 
End If 
If frmCtrl.HasControls Then 
LoopingControlsDisabled(frmCtrl) 
End If 
Next 
End Sub

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部