翻译 Android

更新时间:2022 年 4 月 29 日

文本消息支持翻译功能,包含按需翻译和自动翻译。

  • 按需翻译:收到消息时,接收方将消息内容翻译成目标语言。
  • 自动翻译:用户发送消息时,SDK 根据设置的目标语言自动翻译消息内容,然后将消息原文和译文一并发送给消息接收方。

注意: 翻译服务由 Microsoft Azure Translator API 提供支持。可以在 Microsoft Azure Translator Language Suppor 页面查看目前支持的语言。

开始前,请确保满足以下条件:

  1. 完成 3.9.1 以上版本 SDK 初始化,详见 快速开始
  2. 了解环信即时通讯 IM API使用限制
  3. 已联系商务开通翻译功能。

Android SDK 支持你通过调用 API 在项目中实现如下功能:

  • fetchSupportedLangurages:获取支持的翻译语言;
  • translateMessage:翻译文本消息;
  • 设置自动翻译。

获取翻译服务支持的语言

获取支持的翻译语言的过程如下:

//获取支持的翻译语言。
EMClient.getInstance().chatManager().fetchSupportLanguages(new EMValueCallBack<List<EMLanguage>>(){});

翻译消息内容

翻译消息需要设置目标语言,翻译调用过程如下:

List<String> languageList = new ArrayList<>();
languageList.add("en");
...
EMClient.getInstance().chatManager().translateMessage(
         message,
         languageList,
         new EMValueCallBack<EMMessage>() {});

翻译成功之后,译文信息会保存到消息中,用户可调用 API 获取译文列表。获取过程如下:

EMTextMessageBody body = (EMTextMessageBody)message.getBody();
List<EMTranslationInfo> infoList = body.getTranslations();

设置自动翻译

设置消息体的目标翻译语言,发送消息时会将译文放在译文列表里发送给对方,设置过程如下:

...
EMTextMessageBody body = new EMTextMessageBody("文本内容");
body.setTargetLanguages(languageList);
...

同样可调用以下方法获取译文列表:

EMTextMessageBody body = (EMTextMessageBody)message.getBody();
List<EMTranslationInfo> infoList = body.getTranslations();