跳到主要内容

AI 翻译(TSAITranslateInterface)

AI 翻译提供 Provider 无关的流式文本翻译。中间回调返回累积译文,完成回调返回最终结果或错误。

前提条件​

TSAIContext *context = [TSAIKit sharedInstance].activeContext;
if (![context supportsAIFeatures:TSAIFeatureTextTranslation]) {
return;
}
id<TSAITranslateInterface> translate = context.translate;

数据模型​

TSAITranslateConfig​

属性类型说明
sourceLanguageTSAILanguage源语言,可使用 TSAILanguageAuto 自动检测
targetLanguageTSAILanguage目标语言,不允许使用 Auto 或 Unknown
TSAITranslateConfig *config =
[TSAITranslateConfig configWithSourceLanguage:TSAILanguageAuto
targetLanguage:TSAILanguageEnglishUS];

结果模型​

模型属性说明
TSAITranslatePartialResulttaskId、text、detectedSourceLanguage、isFinal累积中间译文
TSAITranslateResulttaskId、sourceText、translatedText、detectedSourceLanguage最终翻译结果

回调类型​

回调说明
TSAITranslatePartialBlock生成过程中调用零次或多次,译文只增不改
TSAITranslateCompletionBlock成功、失败或取消时调用一次

发起翻译​

- (NSString *)translateText:(NSString *)text
config:(TSAITranslateConfig *)config
onPartialResult:(nullable TSAITranslatePartialBlock)onPartialResult
completion:(nullable TSAITranslateCompletionBlock)completion;
参数类型说明
textNSString *非空待翻译文本
configTSAITranslateConfig *源语言和目标语言配置
onPartialResultTSAITranslatePartialBlock可选的流式中间结果
completionTSAITranslateCompletionBlock最终结果或错误
返回值NSString *客户端生成的稳定 taskId
NSString *taskId = [translate translateText:@"今天天气很好"
config:config
onPartialResult:^(TSAITranslatePartialResult *partial) {
TSLog(@"翻译中: %@", partial.text);
}
completion:^(TSAITranslateResult *result, NSError *error) {
if (error) {
TSLog(@"翻译失败: %@", error.localizedDescription);
return;
}
TSLog(@"翻译结果: %@", result.translatedText);
}];

取消翻译​

- (void)cancelTranslationWithTaskId:(NSString *)taskId;

取消后,原任务的 completion 会收到取消错误。任务已结束或 taskId 未知时调用无副作用。

[translate cancelTranslationWithTaskId:taskId];

语言代码转换​

所有 AI 模块共用 TSAILanguage。需要与服务端或业务配置交换 BCP-47 代码时,可使用:

NSString *code = [TSAILanguageMapper bcp47CodeForLanguage:TSAILanguageEnglishUS];
TSAILanguage language = [TSAILanguageMapper languageForBcp47Code:@"en-US"];

完整语言枚举和 Auto 使用规则见公共类型与错误处理。

注意事项​

  1. completion 是任务结束的权威信号,包括错误和取消路径。
  2. 最后一次 partial 的 isFinal 可以为 YES,但仍需等待 completion。
  3. TSAILanguageAuto 只能作为源语言,不能作为目标语言。
  4. Provider 不支持指定语种时返回 TSAIErrorCodeNotSupported,不会静默改用默认语言。