iOS开发之Translation API

介绍

iOS 中内置了一款非常好用的翻译 App:Translate,支持翻译、相机翻译与对话。在 iOS 17.4 之后,Apple 逐步开发了相关的 SwiftUI API。开发者只需要调用 API 就能在自己的 App 内实现类似 Translate App 的翻译效果。

API

translationPresentation

  • iOS 17.4 之后新增的翻译修饰符,可以弹出翻译叠加层实现应用内翻译。
  • 需要导入Translation模块。

案例

import SwiftUI
import Translation

struct ContentView: View {
    @State private var showTranslation = false
    @State private var originalText = "Using Translation API in your App after iOS 17.4"

    var body: some View {
        VStack {
            Text(originalText)

            Button("Translate") {
                showTranslation.toggle()
            }
        }
        .padding()
        .translationPresentation(isPresented: $showTranslation, text: originalText) { translatedText in
            print(translatedText)
            originalText = translatedText
        }
    }
}

效果

translationPresentation.gif

translationTask

  • iOS 18 之后新增的翻译修饰符,根据翻译要求执行翻译任务,而无需借助系统的弹出层。
  • 需要导入Translation模块。

案例

import SwiftUI
import Translation

struct ContentView: View {
    @State private var article = "iOS 18 之后在应用程序中可以使用翻译 API。"
    // 翻译配置
    @State private var configuration: TranslationSession.Configuration?

    var body: some View {
        NavigationStack {
            Text(article)
                .toolbar {
                    Button {
                        // 汉翻英
                        configuration = TranslationSession.Configuration(source: .init(identifier: "zh-Hans-CN"), target: .init(identifier: "en-US"))
                    } label: {
                        Label("Translate", systemImage: "translate")
                            .labelStyle(.iconOnly)
                    }
                }
                .translationTask(configuration) { session in
                    // 翻译
                    if let response = try? await session.translate(article) {
                        article.append("\n\n" + response.targetText)
                    }
                }
        }
    }
}

效果

translationTask.gif

注意:需要在真机运行测试。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容