机器学习套件(ML Kit)组件在在线版和教育版中提供,离线版(含机房版)不包含。
它能做什么
离线翻译支持 50 多种语言互译,翻译完全在手机本地完成,不上传文本。设好源语言和目标语言后直接调用「翻译」,语言包没下载会自动下载。也可以检查、删除、列出已下载的语言包。
准备工作
- 语言包下载:每种语言约 30MB,首次需联网从 Google 服务器下载(国内网络可能失败),下载后永久离线。
- 仅 WiFi 下载:勾选后只在 WiFi 下下载,移动网络下会一直等待。
- 联机调试:安卓上用 AI 伴侣调试需要安装 MLKit 版 AI 伴侣(应用宝,包名 cn.fun123.appinventor);普通版伴侣不含识别引擎,调用时会触发「屏幕.出现错误时」(错误码 4722)。直接打包 APK 安装测试不受影响。
- 安装包体积:只有用到本组件的 App 才会打包它的识别引擎与模型,体积以编译结果为准。
- 鸿蒙:暂不支持:鸿蒙系统没有开放端侧翻译接口,调用会触发「翻译失败」。
案例一:翻译一段文字
翻译前把下拉框选择的语言写进属性;源语言与目标语言相同时原样返回、不下载:
when 按钮_翻译.Click() {
离线翻译1.SourceLanguage = 下拉框_源.Selection
离线翻译1.TargetLanguage = 下拉框_目标.Selection
离线翻译1.Translate(文本输入框_原文.Text)
}
when 离线翻译1.GotTranslation(原文, 译文) {
标签_结果.Text = 译文
}
when 离线翻译1.TranslateFailed(操作, 错误信息) {
标签_错误.Text = join(操作, ":", 错误信息)
}
案例二:管理语言包
列出、检查、删除语言包都是异步的,结果走各自的事件:
when 按钮_已下载.Click() {
离线翻译1.ListDownloadedModels()
}
when 离线翻译1.GotDownloadedModels(数量, 语言代码列表) {
标签_详情.Text = join("已下载 ", 数量, " 个语言包:", 语言代码列表)
}
when 按钮_检查.Click() {
离线翻译1.CheckModel(下拉框_目标.Selection)
}
when 离线翻译1.GotModelState(语言代码, 已下载) {
标签_详情.Text = join(语言代码, choose(已下载, " 已下载", " 未下载"))
}
when 按钮_删除.Click() {
离线翻译1.DeleteModel(下拉框_目标.Selection)
}
结果数据说明
语言代码常用:zh 中文、en 英文、ja 日文、ko 韩文、fr 法文、de 德文、es 西班牙文、ru 俄文。「支持的语言」方法返回全部代码列表。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 第一次翻译很慢或失败 | 正在下载语言包;网络不通会触发「模型下载失败」 |
| 一直没反应 | 勾了「仅WiFi下载」但当前是移动网络 |
| 翻译质量一般 | 离线模型比在线翻译弱,适合日常短句 |
完整 .aia 源码与操作指导
导入 OfflineTranslatorDemo.aia 后可以直接打包 APK 运行;用 AI 伴侣联机调试请安装 MLKit 版 AI 伴侣。源码文件已通过正式编辑器载入、后台导入和 APK 编译校验;真机识别效果请以实际设备为准。
| 功能 | 操作 | 预期结果 |
|---|---|---|
| 中译英 | 直接点「翻译」 | 首次先下载语言包,然后显示英文译文 |
| 互换语言 | 点「互换语言」再翻译 | 源和目标对调,译文变成原文 |
| 已下载的语言包 | 点「已下载的语言包」 | 列出已下载的语言代码 |
| 检查与删除 | 点「检查目标语言」「删除目标语言」 | 显示是否已下载;删除后再检查显示未下载 |
案例界面与积木源码在仓库 docs/markdown/reference/components/guide/examples/OfflineTranslatorDemo/,SHA-256:841e65c83b465219ec8cbd47d5969735283b9320565c1a780a6c46decd0a82d1。
扫码添加客服咨询