翻译 Android
更新时间:2022 年 07 月 08 日
文本消息支持翻译功能,包含按需翻译和自动翻译。
- 按需翻译:收到消息时,接收方将消息内容翻译成目标语言。
- 自动翻译:用户发送消息时,SDK 根据设置的目标语言自动翻译消息内容,然后将消息原文和译文一并发送给消息接收方。
注意: 翻译服务由 Microsoft Azure Translator API 提供支持。可以在 Microsoft Azure Translator Language Suppor 页面查看目前支持的语言。
前提条件
技术原理
Android SDK 支持你通过调用 API 在项目中实现如下功能:
fetchSupportedLanguages
:获取支持的翻译语言;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();