📱

有償APIを使わなくてもiOS17.4+の標準APIを使って翻訳機能が実装できるらしいのでReact Native用ライブラリ作った

2024/08/22に公開

1 モチベーション

iOS上のアプリ内でユーザーの入力を英語に翻訳できるようにしたい…でも有償APIは使いたくない

なんかないやろか

2 最近できたiOSの標準APIが良さそう

あった
https://developer.apple.com/documentation/Translation

ふーん
https://developer.apple.com/documentation/swiftui/view/translationpresentation(ispresented:text:attachmentanchor:arrowedge:replacementaction:)

でもReact Nativeから使いたいならNativeModule作らないといかんか〜

3 ライブラリを作ってみました

できました
https://www.npmjs.com/package/@sh1r4s4g1/react-native-translation-module?activeTab=readme

現時点ではユーザー側のアクションが必要なのが辛いけど一応翻訳はできてうれしい

4 ライブラリの使い方

こうして

npm install @sh1r4s4g1/react-native-translation-module

こうして

import { showTranslationPopover } from '@sh1r4s4g1/react-native-translation-module';

文字列を渡すだけでOK、翻訳ポップオーバーが開いてユーザーが翻訳を選べます

const translatedText = await showTranslationPopover('Hello, world!');

ユーザーが翻訳ポップオーバーのメニューの中から「翻訳で置き換え」を選んでくれたらPromise<string>で翻訳後の文字列が返る

精度がそこそこ良い上にiOSの標準APIだからAPI使用料がかからない(うれしい)

5 おしまい

初めて作ったライブラリなので使ってみて変なことがあったら教えてね
https://github.com/SH1R4S4G1/react-native-tran

Discussion