消息文本翻译
从 5.24.0 版本起,IMLib SDK(融云即时通讯能力库)支持对文本消息和纯文本内容进行翻译。您可以设置用户级别的翻译语言和自动翻译状态,也可为不同会话单独配置翻译策略。
IMLib SDK 提供了两个批量翻译接口:
translateMessagesWithParams
:用于翻译文本消息(RCIMIWTextMessage
)内容。translateTextsWithParams
:用于翻译任意文字内容。
翻译功能需网络连接,请确保设备网络通畅。批量翻译内容可能耗时较长,接口不会直接返回翻译结果。请通过设置 RCIMIWEngine
的监听器获取翻译内容。
开启翻译服务
请前往融云控制台开启翻译功能。
用户级全局设置
全局设置对同一用户的所有登录设备生效。一端设置后,其他设备可通过 RCIMIWEngine
的事件监听获得变更通知。
设置翻译目标语言
通过 setTranslationLanguage
接口可以设置用户级别的翻译语言。支持的语种请参考翻译语言代码列表 。未设置时,默认目标语言为中文(zh
)。
参数说明
参数 | 类型 | 说明 |
---|---|---|
language | String | 翻译目标语言 |
callback | IRCIMIWTranslateResponseCallback? | 结果回调 |
示例代码
IRCIMIWTranslateResponseCallback callback = IRCIMIWTranslateResponseCallback(
onTranslateResponse: (int code) {
if (code == 0) {
// 设置翻译语言成功
print('设置翻译语言成功');
} else {
// 设置翻译语言失败
print('设置翻译语言失败,错误码:$code');
}
}
);
// 假设您已经创建并保存了引擎实例
RCIMIWEngine? engine = yourEngineInstance; // 替换为您的引擎实例
int result = await engine?.setTranslationLanguage(
"zh",
callback: callback
) ?? -1;
获取翻译语言
通过 getTranslationLanguage
接口可以获取用户级别的翻译语言。
参数说明
参数 | 类型 | 说明 |
---|---|---|
callback | IRCIMIWTranslateGetLanguageCallback? | 结果回调 |
示例代码
IRCIMIWTranslateGetLanguageCallback callback = IRCIMIWTranslateGetLanguageCallback(
onTranslateGetLanguage: (int code, String? language) {
if (code == 0) {
// 获取翻译语言成功
print('当前翻译语言: $language');
} else {
// 获取翻译语言失败
print('getTranslationLanguage error: $code');
}
}
);
// 假设您已经创建并保存了引擎实例
RCIMIWEngine? engine = yourEngineInstance; // 替换为您的引擎实例
int result = await engine?.getTranslationLanguage(
callback: callback
) ?? -1;
标记自动翻译状态
IMLib SDK 本身不包含自动翻译功能,仅用于向应用的业务逻辑提供开关存储和多端状态同步。
通过 setAutoTranslateEnable
接口可以标记用户级别的自动翻译状态。
参数说明
参数 | 类型 | 说明 |
---|---|---|
enable | bool | 是否标记为自动翻译 |
callback | IRCIMIWTranslateResponseCallback? | 结果回调 |
示例代码
IRCIMIWTranslateResponseCallback callback = IRCIMIWTranslateResponseCallback(
onTranslateResponse: (int code) {
if (code == 0) {
// 标记自动翻译状态成功
print('标记自动翻译状态成功');
} else {
// 标记自动翻译状态失败
print('标记自动翻译状态失败,错误码:$code');
}
}
);
// 假设您已经创建并保存了引擎实例
RCIMIWEngine? engine = yourEngineInstance; // 替换为您的引擎实例
int result = await engine?.setAutoTranslateEnable(
true,
callback: callback
) ?? -1;
查询自动翻译状态
通过 getAutoTranslateEnabled
接口可以获取用户级别的自动翻译状态。
参数说明
参数 | 类型 | 说明 |
---|---|---|
callback | IRCIMIWGetAutoTranslateEnabledCallback? | 结果回调 |
示例代码
IRCIMIWGetAutoTranslateEnabledCallback callback = IRCIMIWGetAutoTranslateEnabledCallback(
onGetAutoTranslateEnabled: (int code, bool? isEnable) {
if (code == 0) {
// 获取自动翻译状态成功
print('自动翻译状态: $isEnable');
} else {
// 获取自动翻译状态失败
print('getAutoTranslateEnabled error: $code');
}
}
);
// 假设您已经创建并保存了引擎实例
RCIMIWEngine? engine = yourEngineInstance; // 替换为您的引擎实例
int result = await engine?.getAutoTranslateEnabled(
callback: callback
) ?? -1;
监听全局配置变更
全局设置(翻译语言、自动翻译状态)的多端同步,通过 onTranslationLanguageChanged
和 onAutoTranslateStateChanged
回调。详见翻译事件监听。
会话级翻译策略
IMLib SDK 本身不包含自动翻译功能,仅用于向应用的业务逻辑提供开关存储和多端状态同步。
IMLib SDK 支持会话级配置,可针对不同会话单独设置自动翻译策略。会话级配置对同一用户的所有设备生效,变更后其他设备可通过 onConversationTranslationStrategySynced
获取通知。
设置会话翻译策略
通过 batchSetConversationTranslateStrategy
接口可以批量设置会话翻译策略。成功设置后,对应会话的 translateStrategy
属性将会被更新。