翻译是实时聊天应用程序中广泛使用的一项流行功能。为了实现翻译,即时通讯 IM SDK 集成了 Microsoft Azure Translation API,它可以在消息发送时或收到消息后进行翻译。
SDK 在支持按需翻译和自动翻译:
开始前,请确保满足以下条件:
即时通讯 IM iOS SDK 支持你通过调用 API 实现如下翻译功能:
本节介绍如何将翻译功能集成到项目中。
无论是按需翻译还是自动翻译场景,都需要先调用 fetchSupportedLanguages
查询支持的翻译语言:
[AgoraChatClient.sharedClient.chatManager fetchSupportedLangurages:^(NSArray<AgoraChatLanguage *> * _Nullable languages, AgoraChatError * _Nullable error) {
}];
当接收方收到文本消息时,调用 translateMessage
翻译。翻译完成后,已翻译的消息存储在消息中。
// 翻译消息。
[AgoraChatClient.sharedClient.chatManager translateMessage:message targetLanguages:@[@"en"] completion:^(AgoraChatMessage *message, AgoraChatError *error) {
// 翻译后的译文信息获取。
AgoraChatTextMessageBody* body = (AgoraChatTextMessageBody*)message.body;
NSDictionary* translations = body.translations;
}];
用户在创建文本消息时,可以将 AgoraChatTextMessageBody.targetLanguages
设置为消息的目标语言,发送消息时 SDK 会自动将文本翻译为目标语言,原文和译文一起发送。接收方收到的消息将包含译文信息。使用过程如下:
AgoraChatTextMessageBody* msgBody = [[AgoraChatTextMessageBody alloc] initWithText:@"Hello!!"];
msgBody.targetLanguages = @[@"en",@"ja"];
AgoraChatMessage *message = [[AgoraChatMessage alloc] initWithConversationID:@"to" from:@"from" to:@"to" body:msgBody ext:nil];
[AgoraChatClient.sharedClient.chatManager sendMessage:message progress:nil completion:nil];
SDK 发送原始消息和翻译后的消息。收件人收到消息后,请参阅以下代码示例以获取翻译:
- (void)messagesDidReceive:(NSArray *)aMessages
{
for (AgoraChatChatMessage *msg in aMessages) {
if (msg.body.type == AgoraChatMessageBodyTypeText) {
// Get the translation
AgoraChatTextMessageBody* body = (AgoraChatTextMessageBody*)message.body;
NSDictionary* translations = body.translations;
}
}
}
设置推送的目标语言,设置之后收到的离线推送就会是目标语言,如果目标语言在消息里不存在,就以原文推送,详见离线推送。