AI 翻译(TSAITranslateInterface)
AI 翻译提供 Provider 无关的流式文本翻译。中间回调返回累积译文,完成回调返回最终结果或错误。
前提条件
TSAIContext *context = [TSAIKit sharedInstance].activeContext;
if (![context supportsAIFeatures:TSAIFeatureTextTranslation]) {
return;
}
id<TSAITranslateInterface> translate = context.translate;
数据模型
TSAITranslateConfig
| 属性 | 类型 | 说明 |
|---|---|---|
sourceLanguage | TSAILanguage | 源语言,可使用 TSAILanguageAuto 自动检测 |
targetLanguage | TSAILanguage | 目标语言,不允许使用 Auto 或 Unknown |
TSAITranslateConfig *config =
[TSAITranslateConfig configWithSourceLanguage:TSAILanguageAuto
targetLanguage:TSAILanguageEnglishUS];
结果模型
| 模型 | 属性 | 说明 |
|---|---|---|
TSAITranslatePartialResult | taskId、text、detectedSourceLanguage、isFinal | 累积中间译文 |
TSAITranslateResult | taskId、sourceText、translatedText、detectedSourceLanguage | 最终翻译结果 |
回调类型
| 回调 | 说明 |
|---|---|
TSAITranslatePartialBlock | 生成过程中调用零次或多次,译文只增不改 |
TSAITranslateCompletionBlock | 成功、失败或取消时调用一次 |
发起翻译
- (NSString *)translateText:(NSString *)text
config:(TSAITranslateConfig *)config
onPartialResult:(nullable TSAITranslatePartialBlock)onPartialResult
completion:(nullable TSAITranslateCompletionBlock)completion;
| 参数 | 类型 | 说明 |
|---|---|---|
text | NSString * | 非空待翻译文本 |
config | TSAITranslateConfig * | 源语言和目标语言配置 |
onPartialResult | TSAITranslatePartialBlock | 可选的流式中间结果 |
completion | TSAITranslateCompletionBlock | 最终结果或错误 |
| 返回值 | 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 使用规则见公共类型与错误处理。
注意事项
completion是任务结束的权威信号,包括错误和取消路径。- 最后一次 partial 的
isFinal可以为YES,但仍需等待completion。 TSAILanguageAuto只能作为源语言,不能作为目标语言。- Provider 不支持指定语种时返回
TSAIErrorCodeNotSupported,不会静默改用默认语言。