apple_native_translate 0.1.7 copy "apple_native_translate: ^0.1.7" to clipboard
apple_native_translate: ^0.1.7 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.

0.1.7 #

  • iOS 26 以降では、翻訳のときに SwiftUI のビューをまったく使わなく なりました。 TranslationSession(installedSource:target:) で直接 セッションを作ります。
  • 0.1.6 で「入っていない組み合わせでは貼らない」ようにしましたが、 それでも1回だけ画面が出ていました。入っている組み合わせでも、 1x1 のビューを貼った瞬間にシステム側の翻訳 UI が立ち上がるためです。 iOS 18〜25 には UI 無しの初期化子が無く、貼るしかありませんでした。 iOS 26 で初期化子が入ったので、そちらを使います。
  • iOS 18〜25 では、これまで通りビューを貼ります。この範囲では 公開 API の中に他の手がありません。
  • prepare(取り込みそのものを頼む呼び出し)は、どの版でも これまで通りビューを貼って確認画面を出します。

0.1.6 #

  • ふつうの翻訳では、端末に入っていない組み合わせのとき、SwiftUI の ビューも TranslationSession.Configuration も作らなくしました。 そのまま失敗を返します。
  • 0.1.5 では prepareTranslation() を呼ばないようにしましたが、 それだけでは足りませんでした。呼ばなくても、入っていない組み合わせで .translationTask を貼った時点でシステム側の取り込み画面が 立ち上がります。アプリを更新した直後は LanguageAvailability が 一時的に .supported を返すため、そこで貼ってしまい、画面が一瞬 出ていました。組み合わせが2つあれば2回続けて出ます。
  • 貼らなければ出ません。呼んだ側は失敗を受けて別の翻訳(ML Kit)に 切り替えるので、訳は普通に出ます。
  • prepare(取り込みそのものを頼む呼び出し)は、これまで通り必要なら 確認画面を出します。ここが唯一の入口になりました。

0.1.5 #

  • ふつうの翻訳では prepareTranslation() を一切呼ばなくしました。 Apple の取り込み確認が出るのはこの呼び出しだけです。呼ぶのは、 取り込みそのものを頼まれたとき(prepare)に限りました。
  • 0.1.4 の「一度でも入っていた組み合わせを覚える」方式では足りません でした。覚えは .installed を一度読めて初めて入るので、アプリを 更新した直後の1回目に LanguageAvailability が一時的に .supported を返すと、覚えが空のまま確認画面が出ます。組み合わせが2つあれば 2回続けて出ます。覚えの仕組みは取り除きました。
  • 入っていない組み合わせで翻訳を頼まれた場合は、その1回が失敗します。 呼ぶ側が ML Kit に切り替えるので、訳は出ます。

0.1.4 #

  • 0.1.2 と 0.1.3 の「ビューを貼りっぱなしにする」書き換えを取り消しました。 .translationTask が二度目以降に動かないことがあり、返事が来ないまま 待ち続けて、訳が出なくなっていました。0.1.1 と同じ、必要なときだけ 貼って終わったら剥がす方式に戻しています。
  • アプリを更新した直後に Apple の取り込み確認が一瞬だけ出る問題は、 別の方法で直しました。一度でも .installed だった言語の組み合わせを UserDefaults に覚え、ふつうの翻訳では二度と prepareTranslation() を呼びません。覚えはアプリを更新しても残ります。
  • prepare(取り込みそのものを頼む呼び出し)は、これまで通り必要なら 確認画面を出します。
  • 覚えている組み合わせで実際に訳せなかったときは、覚えを消して次に備えます。
  • ふつうの翻訳の打ち切りを 180 秒から 15 秒に縮めました。Apple が返さなく ても、すぐ ML Kit に切り替わります。取り込みの待ち時間は 180 秒のままです。

0.1.1 #

  • すでに端末に入っている言語で、Apple の取り込み画面が一瞬だけ出てしまう 問題を直しました。呼び出しの前に取り込み状況を調べ、入っているときは prepareTranslation() を呼びません。
  • 取り込みだけを頼んだ(prepare)ときにすでに入っていれば、 画面を貼らずにそのまま返します。
  • 対応していない言語の組み合わせは、その場で失敗を返すようになりました。

0.1.0 #

  • 初版。iOS 18 以降で Apple の Translation framework を使って端末内で翻訳します。
  • isAvailable / status / prepare / translate の4つを用意しました。
  • iOS 18 未満と iOS 以外では、呼んでも安全に失敗します(例外は投げません)。
0
likes
140
points
500
downloads

Documentation

API reference

Publisher

verified publisher8-order.co.jp

Weekly Downloads

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