Access开发如何优雅实现中英文切换

B站影视 韩国电影 2025-09-29 20:52 1

摘要:在我服务过众多的甲方爸爸中,有不少是外企或者是合资企业,他们大多有一个共同的语言语言要求,就是英文!当然,像我这样的开发老炮,英语水平也只是勉强够用。所以,今天就和大家聊聊如何实现Access系统的中文与英文切换功能。

Hi,大家好!

在我服务过众多的甲方爸爸中,有不少是外企或者是合资企业,他们大多有一个共同的语言语言要求,就是英文!当然,像我这样的开发老炮,英语水平也只是勉强够用。所以,今天就和大家聊聊如何实现Access系统的中文与英文切换功能。

很多朋友遇到多语言需求,第一反应是:

❌ 维护成本翻倍

❌ 功能更新要改两次

❌ 容易出现版本不一致

❌ 代码臃肿难维护

❌ 新增语言要改所有代码

❌ 翻译散落各处,管理混乱

❌ 界面设计复杂

❌ 控件太多影响性能

❌ 调整布局要改两遍

01创建翻译资源表

建表 tblLanguage:

可以填写一些数据:

02新建窗体

接着创建一个窗体,如图:

在窗体设计视图中,给需要翻译的控件设置Tag属性,比如标签控件的tag输入:LANG=FORM_TITLE_MAIN

03

先添加一个通用模块:

模块:modLanguage' 功能:多语言支持模块' 作者:Access开发Public sLan As String'获取翻译文本Public Function T(strKey As String) As String Dim rs As DAO.Recordset Dim strSQL As String Dim strLang As String On Error GoTo Err_Handler strLang = sLan strSQL = "SELECT " & strLang & " FROM tblLanguage WHERE TextKey='" & strKey & "'" Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot) If Not rs.EOF Then T = Nz(rs.fields(0).value, strKey) Else T = strKey '找不到翻译就返回键名 End If rs.Close Set rs = Nothing Exit Function Err_Handler: T = strKeyEnd Function'应用语言到窗体Public Sub ApplyLanguageToForm(frm As Form) Dim ctl As Control Dim strKey As String On Error Resume Next '处理窗体标题(Tag格式:LANG=键名) If InStr(frm.Tag, "LANG=") > 0 Then strKey = Mid(frm.Tag, InStr(frm.Tag, "LANG=") + 5) strKey = Split(strKey, ";")(0) '支持多个标记用分号分隔 frm.Caption = T(strKey) End If '处理所有控件 For Each ctl In frm.Controls If InStr(ctl.Tag, "LANG=") > 0 Then strKey = Mid(ctl.Tag, InStr(ctl.Tag, "LANG=") + 5) strKey = Split(strKey, ";")(0) '根据控件类型设置不同属性 Select Case ctl.ControlType Case acLabel, acCommandButton, acToggleButton ctl.Caption = T(strKey) Case acTextBox, acComboBox, acListBox '文本框可能需要设置占位符 If InStr(ctl.Tag, "PLACEHOLDER") > 0 Then ctl.PlaceholderText = T(strKey) End If Case acPage '选项卡页 ctl.Caption = T(strKey) End Select End If Next ctlEnd Sub'刷新所有打开的窗体Public Sub RefreshAllForms Dim i As Integer For i = 0 To Forms.Count - 1 ApplyLanguageToForm Forms(i) Next i '刷新界面 DoEventsEnd Sub

在窗体上输入代码:

Private Sub btnLanguage_Click '可以加个提示 If Me.cmb_Lan = "EN" Then MsgBox "Language switched to English", vbInformation Else MsgBox "语言已切换为中文", vbInformation End If sLan = Me.cmb_Lan ApplyLanguageToForm MeEnd SubPrivate Sub Form_Load ApplyLanguageToForm MeEnd Sub04运行测试

最后就是运行测试一下了。

来源:小岳科技频道

相关推荐