翻译是实时聊天应用程序中广泛使用的一项流行功能。为实现翻译,即时通讯 IM SDK 集成了 Microsoft Azure Translation API,支持在发送或接收消息时对文本消息进行按需翻译或自动翻译:
开始前,请确保满足以下条件:
即时通讯 IM Android SDK 支持你通过调用 API 实现如下翻译功能:
本节介绍如何将翻译功能集成到项目中。
无论是按需翻译还是自动翻译,都需先调用 fetchSupportLanguages
获取支持的翻译语言。获取支持的翻译语言的示例代码如下:
ChatClient.getInstance().chatManager().fetchSupportLanguages(new ValueCallBack<List<Language>>{});
接收方调用 translateMessage
对收到的文本消息进行翻译。翻译调用过程如下:
List<String> languageList = new ArrayList<>();
languageList.add("en");
...
ChatClient.getInstance().chatManager().translateMessage(
message,
languageList,
new ValueCallBack<ChatMessage>() {});
翻译成功之后,译文信息会保存到消息中。调用 getTranslations
获取译文内容。示例代码如下:
TextMessageBody body = (TextMessageBody)message.getBody();
List<TranslationInfo> infoList = body.getTranslations();
创建文本消息时,发送方可将 MessageBody.setTargetLanguage
设置为消息的目标语言,发送消息时 SDK 会自动将文本翻译为目标语言,原文和译文一起发送。接收方收到的消息将包含译文信息。使用过程如下:
TextMessageBody body = new TextMessageBody("The message content");
body.setTargetLanguages(languageList);
接收方收到消息后,调用 getTranslations
方法获取消息的译文列表,示例代码如下:
TextMessageBody body = (TextMessageBody)message.getBody();
List<TranslationInfo> infoList = body.getTranslations();
设置推送的目标语言,设置之后收到的离线推送就会是目标语言,如果目标语言在消息里不存在,就以原文推送,详见离线推送。