apple_native_translate 0.1.1 copy "apple_native_translate: ^0.1.1" to clipboard
apple_native_translate: ^0.1.1 copied to clipboard

PlatformiOS

On-device text translation using Apple's Translation framework on iOS 18 and later, exposed to Flutter with a simple batch API and a safe fallback.

apple_native_translate #

Apple の Translation framework(iOS 18 以降)を Flutter から呼びます。 端末の中だけで訳すので 通信も料金も発生しません。品質は iPhone 標準の翻訳アプリと同じです。

使えない場面 #

  • iOS 18 未満
  • iOS 以外(Android・Web など)
  • シミュレータ(実機が必要です
  • 対応していない言語の組み合わせ

これらの場合は例外を投げず、falsenull を返します。呼び出し側でそのまま別の翻訳へ切り替えてください。

使い方 #

import 'package:apple_native_translate/apple_native_translate.dart';

// 1. この端末で使えるか
if (!await AppleNativeTranslate.isAvailable()) {
  // iOS 18 未満。別の翻訳を使ってください。
}

// 2. その組み合わせが使えるか
final status = await AppleNativeTranslate.status(source: 'ja', target: 'en');
// installed / supported / unsupported / unavailable

// 3. まとめて訳す(入れた順で、同じ件数が返ります)
final out = await AppleNativeTranslate.translate(
  texts: ['秘伝の手羽先', '鳥の唐揚げ'],
  source: 'ja',
  target: 'en',
);
// out == null なら失敗。別の翻訳へ落としてください。

言語がまだ端末に入っていないときは、初回の translate(または prepare)で Apple の取り込みの確認が画面に出ます。承諾すると、以後はオフラインで動きます。

言語コード #

BCP-47 で渡します。中国語は zh ではなく zh-Hans / zh-Hant を使ってください。

仕組み #

iOS 18〜25 では TranslationSession を UI 無しで作れません (UI 無しの初期化子 init(installedSource:target:) は iOS 26 以降です)。 そのため、見えない 1×1 の SwiftUI ビューを一時的に貼り、その .translationTask から セッションを受け取ります。貼ったビューは終了時に必ず外します。

Apple は Bundle ID と言語の組み合わせを利用統計として集めますが、 訳す文章そのものは送信されません

0
likes
140
points
--
downloads

Documentation

API reference

Publisher

verified publisher8-order.co.jp

On-device text translation using Apple's Translation framework on iOS 18 and later, exposed to Flutter with a simple batch API and a safe fallback.

Repository (GitHub)

License

MIT (license)

Dependencies

flutter

More

Packages that depend on apple_native_translate

Packages that implement apple_native_translate