====== 翻译 Android ======
更新时间:2022 年 07 月 08 日
文本消息支持翻译功能,包含按需翻译和自动翻译。
* 按需翻译:收到消息时,接收方将消息内容翻译成目标语言。
* 自动翻译:用户发送消息时,SDK 根据设置的目标语言自动翻译消息内容,然后将消息原文和译文一并发送给消息接收方。
**注意:**
翻译服务由 Microsoft Azure Translator API 提供支持。可以在 [[https://docs.microsoft.com/en-us/azure/cognitive-services/translator/language-support|Microsoft Azure Translator Language Suppor]] 页面查看目前支持的语言。
===== 前提条件 =====
开始前,请确保满足以下条件:
- 完成 ''%%3.9.1 以上版本%%'' SDK 初始化,详见 [[ccim:android:quickstart|快速开始]]。
- 了解环信即时通讯 IM API 的[[https://docs-im.easemob.com/ccim/limitation|使用限制]]。
- 已联系商务开通翻译功能。
===== 技术原理 =====
Android SDK 支持你通过调用 API 在项目中实现如下功能:
* ''%%fetchSupportedLanguages%%'':获取支持的翻译语言;
* ''%%translateMessage%%'':翻译文本消息;
* 设置自动翻译。
如下为按需翻译示例:
{{:ccim:android:translation.png|}}
===== 实现方法 =====
==== 获取翻译服务支持的语言 ====
获取支持的翻译语言的过程如下:
//获取支持的翻译语言。
EMClient.getInstance().chatManager().fetchSupportLanguages(new EMValueCallBack>(){});
==== 翻译消息内容 ====
翻译消息需要设置目标语言,翻译调用过程如下:
List languageList = new ArrayList<>();
languageList.add("en");
...
EMClient.getInstance().chatManager().translateMessage(
message,
languageList,
new EMValueCallBack() {});
翻译成功之后,译文信息会保存到消息中,用户可调用 API 获取译文列表。获取过程如下:
EMTextMessageBody body = (EMTextMessageBody)message.getBody();
List infoList = body.getTranslations();
==== 设置自动翻译 ====
设置消息体的目标翻译语言,发送消息时会将译文放在译文列表里发送给对方,设置过程如下:
...
EMTextMessageBody body = new EMTextMessageBody("文本内容");
body.setTargetLanguages(languageList);
...
同样可调用以下方法获取译文列表:
EMTextMessageBody body = (EMTextMessageBody)message.getBody();
List infoList = body.getTranslations();