Built-in translation
The Chat SDK supports translating text messages and plain text content. Configure user-level translation language and auto-translate status, or set per-channel translation strategies.
Translation requires a network connection. Requests for multiple items can take time and don't return results directly. Register a TranslateHandler with NCEngine.addTranslateHandler to receive translation results.
User-level settings
Global settings apply across all logged-in devices. Changes sync to other devices via callbacks.
Set translation language
await NCEngine.translate.setTranslationLanguage('zh', (error) {
if (error == null) print('Language set');
});
Get translation language
await NCEngine.translate.getTranslationLanguage((language, error) {
if (error == null) print('Language: $language');
});
Set auto-translate status
The SDK does not perform auto-translation. It only stores the toggle state and syncs it across devices.
await NCEngine.translate.setAutoTranslateEnable(true, (error) {
if (error == null) print('Auto-translate enabled');
});
Get auto-translate status
await NCEngine.translate.getAutoTranslateEnabled((isEnable, error) {
if (error == null) print('Auto-translate: $isEnable');
});
Channel-level translation strategy
Set per-channel translation strategies that sync across devices.
TranslateStrategy values
| Enum | Description |
|---|---|
| defaultFollowUser | Follow user-level auto-translate setting |
| autoOn | Enable auto-translate for this channel |
| autoOff | Disable auto-translate for this channel |
Set strategy
final channels = [
ChannelIdentifier(channelType: ChannelType.direct, channelId: 'user1'),
ChannelIdentifier(channelType: ChannelType.group, channelId: 'group1'),
];
await NCEngine.translate.setTranslateStrategy(
channels,
TranslateStrategy.autoOn,
(error) {
if (error == null) print('Strategy set');
},
);
Read strategy
TranslateStrategy? strategy = channel.translateStrategy;
Translate multiple messages
await NCEngine.translate.translateMessages(
TranslateMessagesParams(
force: true,
mode: TranslateMode.mechanical,
list: [
TranslateMessageParam(
messageId: message.messageId,
targetLanguage: 'zh',
sourceLanguage: 'en',
),
],
),
(error) {
if (error == null) print('Translation request submitted');
},
);
Translate multiple text strings
await NCEngine.translate.translateTexts(
TranslateTextsParams(
texts: ['Hello, World!'],
mode: TranslateMode.mechanical,
),
(error) {
if (error == null) print('Text translation request submitted');
},
);
Listen for translation results
Translation results are delivered asynchronously. Register a TranslateHandler to receive them.
TranslateItem properties
| Property | Type | Description |
|---|---|---|
| translatedText | String? | Translated content |
| errorCode | int? | Result code for this translation item |
| resultType | TranslateResultType? | Type of source content this result corresponds to |
| targetLanguage | String? | Target language code used for translation |
| identifier | String? | Identifier of the source item this result corresponds to |
Register handler
NCEngine.addTranslateHandler('translate-handler', TranslateHandler(
onTranslationFinished: (items) {
for (final item in items ?? []) {
print('Translated: ${item.translatedText}');
}
},
onLanguageChanged: (language) {
print('Translation language changed: $language');
},
onAutoTranslateStateChanged: (isEnable) {
print('Auto-translate toggled: $isEnable');
},
));