---
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 | 目标语言为空 |