--- title: IM 翻译插件 sidebar_position: 140 --- > **注意** > > - IMLib 从 5.1.2 版本开始支持翻译插件。 > - 该插件暂仅适用于使用新加坡数据中心的应用。详见[海外数据中心](/guides/data-center#overseas)。 融云即时通讯业务提供翻译插件,可为 IMLib SDK 快速接入外部翻译服务,由融云服务端负责对接外部翻译服务供应商的鉴权、API 调用、账号管理、计费等流程。翻译插件支持翻译文本。 目前已支持接入 Google 翻译服务。 ## 翻译流程 ```mermaid sequenceDiagram autonumber App ->> TranslationClient: 请求翻译 srcLanguage TranslationClient ->> IMServer: 请求翻译 IMServer -->> TranslationClient: 返回翻译结果 TranslationClient -->> App: 返回翻译结果 ``` ## 服务开通 该功能为付费增值服务。如有需求,请前往控制台 [IM 翻译](https://console.rongcloud.cn/agile/formwork/translate/index)页面开通服务。 关于 IM 翻译服务费用,详见 [IM 翻译计费说明](https://help.rongcloud.cn/t/topic/92)。 ## 客户端鉴权 客户端需要持有有效的 JWT Token,才能向融云请求翻译结果。 您的 App 服务端需要调用融云服务端 API 接口获取 JWT Token,然后返回给客户端。详见服务端文档[获取 JWT Token](/platform-chat-api/translation/get-jwt-token)。 > **注意** > > 翻译插件鉴权专用的 JWT Token 不同于 IM 用户连接 IM 服务的 Token,请注意区分。 **JWT** JWT 全称 JSON web Token,是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准。 JWT 包含 header、payload、signature 三部分。通过解析 payload 部分可获取到 Token 有效期和 UserId 等信息。 **获取和刷新 JWT Token 流程图** ```mermaid sequenceDiagram autonumber App->>AppServer: 请求 JWT Token AppServer->>IMServer: 请求 JWT Token IMServer-->>AppServer: 返回 JWT Token AppServer-->>App: 返回 JWT Token App->>IMSDK: 调用 setAuthToken 更新 JWT Token ``` ## IMKit 使用翻译插件 Web IMKit 暂不支持使用翻译插件。 ## IMLib 使用翻译插件 1. 安装插件 **示例代码** - NPM 方式: ```shell npm install @rongcloud/engine @rongcloud/imlib-next @rongcloud/plugin-translate -S ``` - CDN 方式: ```html ``` 2. 初始化,并连接融云 IM 服务。 **示例代码** ```javascript import * as RCTranslate from '@rongcloud/plugin-translate' import * as RongIMLib from '@rongcloud/imlib-next' // 初始化 IM RongIMLib.init({ appkey: '' }) const translateClient = RongIMLib.installPlugin(RCTranslate.installer) RongIMLib.connect('').then(res => { if (res.code === 0) { console.log('连接成功') } }) ``` 3. **在用户登录成功之后**,需先判断当前是否已开通翻译服务。 **示例代码** ```javascript translateClient.isSupport() ``` 4. 在确认支持翻译服务之后,可以开始进行客户端鉴权。App 需要向自身的应用服务器发起请求,由应用服务器调用融云服务端 API 获取 JWT Token。App 获取 JWT Token 后,通过 `setAuthToken` 接口设置到 SDK 中。 **示例代码** ```javascript translateClient.setAuthToken('<鉴权token>') ``` 5. 调用 `translateText` 翻译文本 **示例代码** ```javascript const params = { content: '', // 要翻译的文本 target: RCTranslate.LanguageVerify.zh_CN, // 目标语言类型 source: RCTranslate.LanguageVerify.en // 源语言类型 } translateClient.translateText(params).then(({code, data}) => { if (code === RCTranslate.TranslateCode.TranslateCodeSuccess) { // data: 翻译结果 console.log('翻译成功', data) } else { // code: 失败状态码 console.log('翻译失败', code) } }) ``` > **注意** > > 源语言类型为可选参数。Google 翻译服务会自动识别待翻译文本的源语言,并仅以识别结果为准。 ## 支持的语言类型 翻译插件支持的语言可参见文档中列出的语言列表。 ### Google 翻译服务 翻译插件已支持通过 Google Cloud Translation 服务翻译以下语言。更多细节,您可以直接参考 [Google Cloud Translation 官方文档:语言列表](https://cloud.google.com/translate/docs/languages) 。 |语言| 枚举值(已替换 ISO-639 语言代码中的 - 为 _) | |:---|:---| |南非荷兰语|af| |阿尔巴尼亚语|sq| |阿姆哈拉语|am| |阿拉伯语|ar| |亚美尼亚文|hy| |阿萨姆语|as| |艾马拉语|ay| |阿塞拜疆语|az| |班巴拉语|bm| |巴斯克语|eu| |白俄罗斯语|be| |孟加拉文|bn| |博杰普尔语|bho| |波斯尼亚语|bs| |保加利亚语|bg| |加泰罗尼亚语|ca| |宿务语|ceb| |中文(简体)|zh_CN 或 zh | |中文(繁体)|zh_TW | |科西嘉语|co| |克罗地亚语|hr| |捷克语|cs| |丹麦语|da| |迪维希语|dv| |多格来语|doi| |荷兰语|nl| |英语|en| |世界语|eo| |爱沙尼亚语|et| |埃维语|ee| |菲律宾语(塔加拉语)|fil| |芬兰语|fi| |法语|fr| |弗里斯兰语|fy| |加利西亚语|gl| |格鲁吉亚语|ka| |德语|de| |希腊文|el| |瓜拉尼人|gn| |古吉拉特文|gu| |海地克里奥尔语|ht| |豪萨语|ha| |夏威夷语|haw| |希伯来语|he 或 iw| |印地语|hi| |苗语|hmn| |匈牙利语|hu| |冰岛语|is| |伊博语|ig| |伊洛卡诺语|ilo| |印度尼西亚语|id| |爱尔兰语|ga| |意大利语|it| |日语|ja| |爪哇语|jv 或 jw| |卡纳达文|kn| |哈萨克语|kk| |高棉语|km| |卢旺达语|rw| |贡根语|gom| |韩语|ko| |克里奥尔语|kri| |库尔德语|ku| |库尔德语(索拉尼)|ckb| |吉尔吉斯语|ky| |老挝语|lo| |拉丁文|la| |拉脱维亚语|lv| |林格拉语|ln| |立陶宛语|lt| |卢干达语|lg| |卢森堡语|lb| |马其顿语|mk| |迈蒂利语|mai| |马尔加什语|mg| |马来语|ms| |马拉雅拉姆文|ml| |马耳他语|mt| |毛利语|mi| |马拉地语|mr| |梅泰语(曼尼普尔语)|mni_Mtei| |米佐语|lus| |蒙古文|mn| |缅甸语|my| |尼泊尔语|ne| |挪威语|no| |尼杨扎语(齐切瓦语)|ny| |奥里亚语(奥里亚)|or| |奥罗莫语|om| |普什图语|ps| |波斯语|fa| |波兰语|pl| |葡萄牙语(葡萄牙、巴西)|pt| |旁遮普语|pa| |克丘亚语|qu| |罗马尼亚语|ro| |俄语|ru| |萨摩亚语|sm| |梵语|sa| |苏格兰盖尔语|gd| |塞佩蒂语|nso| |塞尔维亚语|sr| |塞索托语|st| |修纳语|sn| |信德语|sd| |僧伽罗语|si| |斯洛伐克语|sk| |斯洛文尼亚语|sl| |索马里语|so| |西班牙语|es| |巽他语|su| |斯瓦希里语|sw| |瑞典语|sv| |塔加路语(菲律宾语)|tl| |塔吉克语|tg| |泰米尔语|ta| |鞑靼语|tt| |泰卢固语|te| |泰语|th| |蒂格尼亚语|ti| |宗加语|ts| |土耳其语|tr| |土库曼语|tk| |契维语(阿坎语)|ak| |乌克兰语|uk| |乌尔都语|ur| |维吾尔语|ug| |乌兹别克语|uz| |越南语|vi| |威尔士语|cy| |班图语|xh| |意第绪语|yi| |约鲁巴语|yo| |祖鲁语|zu| ## 状态码 | 状态码 | 原因 | |-------|-----------------------------------------------| | 26200 | 翻译成功 | | 26201 | 翻译失败,融云鉴权失败 鉴权失败或者 token 过期 | | 26202 | 翻译失败,翻译功能服务商鉴权失败 融云服务器的原因,token 无效 | | 26203 | 翻译失败,翻译功能服务商返回失败 具体服务商失败码信息 | | 26204 | 翻译失败,翻译功能未在融云开启 | | 26205 | 翻译失败,融云限流 | | 26206 | 翻译失败,Server 没有鉴权 token 的 sercret 需要在控制台开启 | | 34100 | 没有设置 authToken 或者 authToken 为 空串 | | 34101 | 待翻译文本内容为空 | | 34102 | 目标语言为空 |