当前位置: 首页 > news >正文

Access调用Azure翻译:轻松实现系统多语言切换

hi,大家好!

上一篇文章,我们讲了一个中英文切换的功能,翻译的内容我们都是保存在表中了,那如果遇到多语言的切换该怎么办呢?显然,还是用原来的方法感觉又有点帮不上忙了,所以是不是可以考虑一下,调用API的方式来实现?

今天就和大家聊聊如何调用Azure翻译API,实现Access系统的智能多语言切换。

当然如果要用Azure翻译的话,你先要申请Azure翻译服务,这里我们就不具体的讲了,怎么来注册申请账号之类的,你可以自己先研究一下,后期有时间,我可以单独来讲一下。

创建完成后,进入资源页面,记录:

密钥(Key):a1b2c3d4e5f6...(像密码一样保密)

区域(Region):你申请的区域

终结点:你的终结点地址

申请的时候,你也可以申请F0免费,每月翻译大概有200W个字符

我们按往常那样开发的话,首先我们是需要先做一个窗体,一个表,之类的,因为上一篇文章我们已经讲过类似的功能了,所以这里我们直接把一个函数给到大家,教大家用一下,其他的由大家自己来调整。

具体的代码如下:

翻译代码模块

'=============================================
' 模块:modAzureTranslator
' 功能:Azure翻译API调用
' 作者:Access开发
'=============================================
Option Compare Database
Option Explicit
'Azure配置(替换为你的密钥)
Private Const AZURE_KEY As String = "123456" '你的Azure翻译密钥
Private Const AZURE_REGION As String = "eastus"  '你的区域
Private Const AZURE_ENDPOINT As String = "https://你的终结点.com/"
'翻译单条文本
Public Function TranslateText(sourceText As String, _fromLang As String, _toLang As String) As StringOn Error GoTo Err_HandlerIf Len(Trim(sourceText)) = 0 Then Exit FunctionDim http As ObjectDim url As StringDim requestBody As StringDim response As String'构建API URLurl = AZURE_ENDPOINT & "translate?api-version=3.0" & _"&from=" & fromLang & "&to=" & toLang'构建JSON请求体requestBody = "[{""Text"":""" & EscapeJson(sourceText) & """}]"'创建HTTP请求Set http = CreateObject("MSXML2.XMLHTTP")http.Open "POST", url, Falsehttp.setRequestHeader "Ocp-Apim-Subscription-Key", AZURE_KEYhttp.setRequestHeader "Ocp-Apim-Subscription-Region", AZURE_REGIONhttp.setRequestHeader "Content-Type", "application/json; charset=UTF-8"http.send requestBody'解析响应If http.status = 200 Thenresponse = http.responseTextTranslateText = ParseTranslation(response)ElseMsgBox "翻译失败: " & http.status & vbCrLf & http.responseText, vbCriticalTranslateText = ""End IfSet http = NothingExit FunctionErr_Handler:MsgBox "翻译出错: " & Err.Description, vbCriticalTranslateText = ""
End Function
'批量翻译资源表
Public Sub TranslateAllResources(toLang As String)Dim rs As DAO.RecordsetDim translated As StringDim count As LongDim total As LongDim strSQL As StringDim langField As String'确定目标语言字段Select Case toLangCase "en": langField = "EN"Case "ja": langField = "JA"Case "ko": langField = "KO"Case ElseMsgBox "不支持的语言: " & toLang, vbExclamationExit SubEnd Select'查询未翻译的记录strSQL = "SELECT * FROM tblLanguage WHERE IsTranslated = False OR " & langField & " Is Null"Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)If rs.EOF ThenMsgBox "没有需要翻译的内容", vbInformationrs.CloseExit SubEnd Ifrs.MoveLasttotal = rs.RecordCountrs.MoveFirst'显示进度SysCmd acSysCmdInitMeter, "正在翻译...", totalDo While Not rs.EOFcount = count + 1SysCmd acSysCmdUpdateMeter, count'调用翻译translated = TranslateText(Nz(rs!cn, ""), "zh-Hans", toLang)If Len(translated) > 0 Thenrs.Editrs.fields(langField).value = translatedrs!IsTranslated = Truers!LastUpdate = Now()rs.UpdateDebug.Print count & "/" & total & ": " & rs!cn & " -> " & translatedEnd If'避免频繁调用触发限流(每秒最多3次)If count Mod 3 = 0 ThenApplication.Wait (Now + TimeValue("0:00:01"))End Ifrs.MoveNextDoEventsLoopSysCmd acSysCmdRemoveMeterrs.CloseMsgBox "翻译完成!共处理 " & count & " 条记录", vbInformation
End Sub
'批量翻译(带进度窗体版本)
Public Sub TranslateWithProgress(toLang As String)Dim rs As DAO.RecordsetDim translated As StringDim count As LongDim total As LongDim strSQL As StringDim langField As String'打开进度窗体(假设你已创建)DoCmd.OpenForm "frmProgress"Select Case toLangCase "en": langField = "EN"Case "ja": langField = "JA"Case "ko": langField = "KO"Case Else: Exit SubEnd SelectstrSQL = "SELECT * FROM tblLanguage WHERE " & langField & " Is Null"Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)If Not rs.EOF Thenrs.MoveLast: total = rs.RecordCount: rs.MoveFirstDo While Not rs.EOFcount = count + 1'更新进度条(假设你有ProgressUpdate函数)ProgressUpdate Forms!frmProgress, count, total, _"翻译中: " & rs!TextKeytranslated = TranslateText(rs!cn, "zh-Hans", toLang)If Len(translated) > 0 Thenrs.Editrs.fields(langField).value = translatedrs!IsTranslated = Truers!LastUpdate = Now()rs.UpdateEnd IfIf count Mod 3 = 0 ThenApplication.Wait (Now + TimeValue("0:00:01"))End Ifrs.MoveNextLoopEnd Ifrs.CloseDoCmd.Close acForm, "frmProgress"MsgBox "翻译完成!", vbInformation
End Sub
'转义JSON特殊字符
Private Function EscapeJson(text As String) As Stringtext = Replace(text, "\", "\\")text = Replace(text, """", "\""")text = Replace(text, vbCrLf, "\n")text = Replace(text, vbCr, "\n")text = Replace(text, vbLf, "\n")text = Replace(text, vbTab, "\t")EscapeJson = text
End Function
'解析翻译结果JSON
Private Function ParseTranslation(json As String) As StringDim pos1 As Long, pos2 As Long'简单解析:查找 "text":"翻译结果"pos1 = InStr(1, json, """text"":""", vbTextCompare)If pos1 > 0 Thenpos1 = pos1 + 8pos2 = InStr(pos1, json, """")If pos2 > pos1 ThenParseTranslation = Mid(json, pos1, pos2 - pos1)'还原转义字符ParseTranslation = Replace(ParseTranslation, "\n", vbCrLf)ParseTranslation = Replace(ParseTranslation, "\\", "\")ParseTranslation = Replace(ParseTranslation, "\""", """")End IfEnd If
End Function

调用测试:

'测试翻译
Public Sub TestTranslate()Dim result As Stringresult = TranslateText("客户管理系统", "zh-Hans", "en")MsgBox "翻译结果: " & result
End Sub

运行测试效果

翻译成英文

翻译成日文

翻译成法语

OK,那剩下的就由你们自己去扩展啦!

📌 常见问题FAQ

Q1:Azure翻译准确吗?

A:整体很准确(90%+),但要注意:

✅ 通用文本:非常准确

✅ 商务用语:质量高

⚠️ 专业术语:可能需要校对

⚠️ 地方俚语:不太支持

建议:AI翻译 + 人工校对 = 完美组合

适用场景

这套方案特别适合:

  • 外企/合资企业的内部系统

  • 跨境电商后台管理

  • 制造业MES/ERP系统

  • 多语言移动应用后台

  • 国际化SaaS产品

http://www.dtcms.com/a/457873.html

相关文章:

  • R语言从入门到精通Day5之【数据输入】
  • 网站开发挣不挣钱南通网站建设知识
  • 仿手机底部导航栏制作
  • 二维码生成的技术原理与全场景实践
  • 做网站 嵌入支付wordpress优化攻略
  • Chromium Embedded Framework (CEF)的构建及运行
  • 批量替换yaml文件url字段
  • “软件维护” 分 4 类?用 “奶茶店售后” 讲透更正 / 适应性 / 完善性维护
  • 恋爱ppt模板免费下载网站网站建设项目风险管理的主要内容
  • 网站主机选择98建筑人才网
  • Windows中在QTCreator中调试,提示缺少debug information files问题的解决
  • 做宠物店网站的素材seo一级域名和二级域名
  • 施工工地云监管平台,工程建设现场管理,智慧工地云平台源码,以AI、物联网、BIM技术为手段,对施工现场进行立体化、全方位、全时段管理
  • 用单调栈高效解决 “首尾均为最大值” 的子数组计数问题(Leetcode 3113)
  • 企业网站自己可以做吗wordpress 登陆 插件
  • 初学c#-c#和.NET Framework - onecopper
  • 大沥南庄网站建设网站开发建设流程
  • nvMolKit:一套基于GPU加速的RDKit核心函数集
  • LOBE-GS:分块致密化效率提升
  • 福州建设招聘信息网站pt网站怎么下载与做
  • dede免费手机网站模板象山seo的优化
  • 央视支持新消费模式:积分助力商家锁客,复购率翻倍
  • 专业政务软件开发北京移动端网站优化
  • 怎样提高网站访问速度一起做网站欧洲站
  • 公司网站建设费属于宣传费吗重庆专业的网站建设公司
  • 广西网站建设哪里好wordpress消息通知
  • 海南网站建设网站开发网站建设的流程步骤
  • 吴恩达机器学习课程(PyTorch适配)学习笔记:1.5 决策树与集成学习
  • 网站推广营销方法成都网站建设 致尚
  • 常州网站建设网站做网站必须要加v吗