消息文本翻译
从 5.24.0 版本起,IMLib SDK(融云即时通讯能力库)支持对文本消息和纯文本内容进行翻译。您可以设置用户级别的翻译语言和自动翻译开关,也可为不同会话单独配置翻译策略。
开启翻译服务
请前往融云控制台开启翻译功能。
消息翻译结果
TextMessage
新增了 translateInfo
属性,用于存储翻译结果。
TranslateInfo 属性说明
属性 | 类型 | 说明 |
---|---|---|
translatedText | String | 翻译后的内容 |
status | TranslateStatus | 翻译状态(无、翻译中、成功、失败) |
targetLanguage | String | 翻译目标语言 |
翻译状态枚举
TranslateInfo.TranslateStatus
枚举,定义了翻译的如下状态:
NONE
:无翻译状态TRANSLATING
:翻译中SUCCESS
:翻译成功FAILED
:翻译失败
示例代码
Java
// 检查文本消息是否有翻译信息
if (message.getContent() instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message.getContent();
TranslateInfo translateInfo = textMessage.getTranslateInfo();
if (translateInfo != null) {
switch (translateInfo.getStatus()) {
case SUCCESS:
// 翻译成功,可以显示翻译结果
String translatedText = translateInfo.getTranslatedText();
String targetLanguage = translateInfo.getTargetLanguage();
break;
case TRANSLATING:
// 翻译中,显示加载状态
break;
case FAILED:
// 翻译失败,显示错误信息
break;
default:
break;
}
}
}
会话翻译策略
Conversation
新增了 translateStrategy
属性,用于标识会话级别的翻译策略。
属性说明
属性 | 类型 | 说明 |
---|---|---|
translateStrategy | TranslateStrategy | 会话的翻译策略 |
翻译策略枚举
TranslateStrategy
枚举:
DEFAULT
:默认策略,跟随用户级别自动翻译设置。AUTO_ON
:自动翻译,会话内消息自动翻译。AUTO_OFF
:手动翻译,会话 内消息不自动翻译。
示例:获取会话翻译策略
Java
// 检查会话的翻译策略
TranslateStrategy strategy = conversation.getTranslateStrategy();
switch (strategy) {
case DEFAULT:
// 使用默认策略,跟随用户级别设置
break;
case AUTO_ON:
// 该会话开启自动翻译
break;
case AUTO_OFF:
// 该会话关闭自动翻译
break;
}
批量翻译文本消息
通过 translateMessagesWithParams
接口可批量翻译文本消息。
参数说明
参数 | 类型 | 说明 |
---|---|---|
params | TranslateMessagesParams | 翻译的消息参数 |
callback | IRongCoreCallback.OperationCallback | 结果回调 |
示例代码
Java
List<TranslateMessageParam> messageParams = new ArrayList<>();
TranslateMessageParam param = new TranslateMessageParam("messageUId");
// 翻译的语言,为空时,使用配置的全局语言
param.setTargetLanguage("zh");
// 消息内容的语言,为空时,会自动识别
param.setSourceLanguage("en");
messageParams.add(param);
TranslateMessagesParams params = new TranslateMessagesParams(messageParams);
// 翻译模式,默认为 TranslateMode.MECHANICAL
params.setMode(TranslateMode.MECHANICAL);
// 是否强制重新翻译,默认为 false
params.setForce(true);
RongCoreClient.getInstance().translateMessagesWithParams(params,
new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
// 翻译请求发送成功
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode errorCode) {
// 翻译请求发送失败
}
});
翻译结果通过 IRongCoreListener.TranslationListener
的 onTranslationDidFinished(List<TranslateItem> translateItems)
方法异步返回。
批量翻译文本内容
通过 translateTextsWithParams
接口可批量翻译任意文本内容。
参数说明
参数 | 类型 | 说明 |
---|---|---|
params | TranslateTextsParams | 翻译文本参数 |
callback | IRongCoreCallback.OperationCallback | 结果回调 |
示例代码
Java
List<TranslateTextParam> textParams = new ArrayList<>();
TranslateTextParam param = new TranslateTextParam("Hello, World!");
// 翻译的语言,为空时,使用配置的全局语言
param.setTargetLanguage("zh");
// 消息内容的语言,为空时,会自动识别
param.setSourceLanguage("en");
textParams.add(param);
TranslateTextsParams params = new TranslateTextsParams(textParams);
// 翻译模式,默认为 TranslateMode.MECHANICAL
params.setMode(TranslateMode.MECHANICAL);
RongCoreClient.getInstance().translateTextsWithParams(params,
new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
// 翻译请求发送成功
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode errorCode) {
// 翻译请求发送失败
}
});