消息文本翻译
从 5.24.0 版本起,IMLib SDK(融云即时通讯能力库)支持对文本消息和纯文本内容进行翻译。您可以设置用户级别的翻译语言和自动翻译开关,也可为不同会话单独配置翻译策略。
开启翻译服务
请前往融云控制台开启翻译功能。
消息翻译结果
RCTextMessage
新增 translateInfo
属性,用于存储翻译结果。
RCTranslateInfo
属性说明
属性 | 类型 | 说明 |
---|---|---|
translatedText | NSString | 翻译后的内容 |
status | RCTranslateStatus | 翻译状态(无、翻译中、成功、失败) |
targetLanguage | NSString | 翻译目标语言 |
翻译状态枚举
RCTranslateStatus
枚举,定义了翻译的如下状态:
RCTranslateStatusNone
:无翻译状态RCTranslateStatusTranslating
:翻译中RCTranslateStatusSuccess
:翻译成功RCTranslateStatusFailed
:翻译失败
示例代码
Objective C
// 检查文本消息是否有翻译信息
RCTextMessage *textMessage = ...;
if (textMessage.translateInfo) {
switch (textMessage.translateInfo.status) {
case RCTranslateStatusSuccess:
// 翻译成功,可以显示翻译结果
NSString *translatedText = textMessage.translateInfo.translatedText;
NSString *targetLanguage = textMessage.translateInfo.targetLanguage;
break;
case RCTranslateStatusTranslating:
// 翻译中,显示加载状态
break;
case RCTranslateStatusFailed:
// 翻译失败,显示错误信息
break;
default:
break;
}
}
会话翻译策略
RCConversation
新增了 translateStrategy
属性,用于标识会话级别的翻译策略。
属性说明
属性 | 类型 | 说明 |
---|---|---|
translateStrategy | RCTranslateStrategy | 会话的翻译策略 |
翻译策略枚举
RCTranslateStrategy
枚举:
RCTranslateStrategyDefault
:默认策略,跟随用户级别自动翻译设置。RCTranslateStrategyAutoOn
:自动翻译,会话内消息自动翻译。RCTranslateStrategyAutoOff
:手动翻译,会话内消息不自动翻译。
示例代码
Objective C
// 检查会话的翻译策略
RCConversation *conversation = ...;
switch (conversation.translateStrategy) {
case RCTranslateStrategyDefault:
// 使用默认策略,跟随用户级别设置
break;
case RCTranslateStrategyAutoOn:
// 该会话开启自动翻译
break;
case RCTranslateStrategyAutoOff:
// 该会话关闭自动翻译
break;
}
批量翻译文本消息
通过 translateMessagesWithParams:completionHandler:
接口可批量翻译文本消息。
参数说明
参数 | 类型 | 说明 |
---|---|---|
params | RCTranslateMessagesParams | 翻译的消息参数 |
completionHandler | Block | 结果回调 |
示例代码
Objective C
NSMutableArray *array =[NSMutableArray array];
RCTranslateMessageParam *param = [RCTranslateMessageParam new];
// 翻译的语言,为空时,使用配置的全局语言。
param.targetLanguage = @"zh";
/// 消息内容的语言,为空时,会自动识别。
param.sourceLanguage = @"en";
param.messageUId = @"messageUId";
[array addObject:param];
RCTranslateMessagesParams *params = [RCTranslateMessagesParams new];
/// 待翻译消息信息数组,最多 10 条消息。
params.list = array;
// 翻译模式,默认为 `RCTranslateModeMechanical`。
params.mode = RCTranslateModeMechanical;
// 是否强制重新翻译,默认为 NO。
params.force = YES;
[[RCCoreClient sharedCoreClient] translateMessagesWithParams:params
completionHandler:^(RCErrorCode code) {
if (code == RC_SUCCESS) {
// 翻译请求发送成功
} else {
// 翻译请求发送失败
}
}];
翻译结果通过 RCTranslationDelegate
代理的 - (void)translationDidFinished:(NSArray<RCTranslateItem *> *)items
方法异步返回。
批量翻译文本内容
通过 translateTextsWithParams:completionHandler:
接口可批量翻译任意文本内容。
参数说明
参数 | 类型 | 说明 |
---|---|---|
params | RCTranslateTextsParams | 翻译文本参数 |
completionHandler | Block | 结果回调 |