前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >iOS开发之Translation API

iOS开发之Translation API

原创
作者头像
YungFan
发布2024-11-20 12:15:43
发布2024-11-20 12:15:43
2250
举报
文章被收录于专栏:学海无涯学海无涯

介绍

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

API

translationPresentation

  • iOS 17.4 之后新增的翻译修饰符,可以弹出翻译叠加层实现应用内翻译。
  • 需要导入Translation模块。
案例
代码语言:swift
复制
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
translationPresentation.gif

translationTask

  • iOS 18 之后新增的翻译修饰符,根据翻译要求执行翻译任务,而无需借助系统的弹出层。
  • 需要导入Translation模块。
案例
代码语言:swift
复制
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
translationTask.gif

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • API
    • translationPresentation
      • 案例
      • 效果
    • translationTask
      • 案例
      • 效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档