====== 翻译 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();