ML Kit を使用すると、言語間でテキストを翻訳できます。ML Kit 1 つ以上の言語の間で翻訳できます。 50 言語。
<ph type="x-smartling-placeholder">試してみる
- サンプルアプリを試してみましょう。 この API の使用例をご覧ください
始める前に
<ph type="x-smartling-placeholder">- プロジェクト レベルの
build.gradle
ファイルに、次の内容を含めます。 Google の Maven リポジトリをbuildscript
とallprojects
セクション。 - ML Kit Android ライブラリの依存関係をモジュールの
アプリレベルの Gradle ファイル(通常は
app/build.gradle
)dependencies { // ... implementation 'com.google.mlkit:translate:17.0.3' }
テキスト文字列を翻訳する
2 つの言語間で文字列を翻訳するには:
作成:
Translator
オブジェクトを作成し、ソース言語とターゲット言語で構成します。Kotlin
// Create an English-German translator: val options = TranslatorOptions.Builder() .setSourceLanguage(TranslateLanguage.ENGLISH) .setTargetLanguage(TranslateLanguage.GERMAN) .build() val englishGermanTranslator = Translation.getClient(options)
Java
// Create an English-German translator: TranslatorOptions options = new TranslatorOptions.Builder() .setSourceLanguage(TranslateLanguage.ENGLISH) .setTargetLanguage(TranslateLanguage.GERMAN) .build(); final Translator englishGermanTranslator = Translation.getClient(options);
入力テキストの言語がわからない場合は、Language Identification API を使用すると、 言語タグが提供されます次に、タグを
TranslateLanguage
に変換します。TranslateLanguage.fromLanguageTag()
を使用します。一度に多数の言語モデルをデバイスに保持することは避けてください。
必要な翻訳モデルがデバイスにダウンロードされていることを確認します。 モデルが利用可能になるまで
translate()
を呼び出さないでください。Kotlin
var conditions = DownloadConditions.Builder() .requireWifi() .build() englishGermanTranslator.downloadModelIfNeeded(conditions) .addOnSuccessListener { // Model downloaded successfully. Okay to start translating. // (Set a flag, unhide the translation UI, etc.) } .addOnFailureListener { exception -> // Model couldn’t be downloaded or other internal error. // ... }
Java
DownloadConditions conditions = new DownloadConditions.Builder() .requireWifi() .build(); englishGermanTranslator.downloadModelIfNeeded(conditions) .addOnSuccessListener( new OnSuccessListener
() { @Override public void onSuccess(Void v) { // Model downloaded successfully. Okay to start translating. // (Set a flag, unhide the translation UI, etc.) } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be downloaded or other internal error. // ... } }); 言語モデルは約 30 MB であるため、不必要にダウンロードしないでください。 ユーザーが特に指定しない限り、Wi-Fi 経由でのみダウンロードする。マイページ 不要なモデルの削除も行います 翻訳モデルを明示的に管理するをご覧ください。
モデルがダウンロードされたことを確認したら、テキスト文字列を ソース言語を
translate()
:Kotlin
englishGermanTranslator.translate(text) .addOnSuccessListener { translatedText -> // Translation successful. } .addOnFailureListener { exception -> // Error. // ... }
Java
englishGermanTranslator.translate(text) .addOnSuccessListener( new OnSuccessListener
() { @Override public void onSuccess(@NonNull String translatedText) { // Translation successful. } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Error. // ... } }); 設定したターゲット言語の翻訳済みテキストは、 成功リスナー。
close()
メソッドが呼び出されると、Translator
オブジェクトは使用されなくなります。Fragment または AppCompatActivity で Translator を使用する場合は、 LifecycleOwner.getLifecycle() を呼び出します。 を Fragment または AppCompatActivity で指定してから、Lifecycle.addObserver を呼び出します。 例:
Kotlin
val options = ... val translator = Translation.getClient(options) getLifecycle().addObserver(translator)
Java
TranslatorOptions options = ... Translator translator = Translation.getClient(options); getLifecycle().addObserver(translator); ... use translator ...
なお、この例では、 LifecycleOwner(Fragment、AppCompatActivity など)。
翻訳モデルを明示的に管理する
上記のように Translation API を使用すると、ML Kit は自動的に 必要に応じて言語固有の翻訳モデルをデバイスにダウンロードします。マイページ Google Cloud 上で使用可能な翻訳モデルを明示的に管理することも ML Kit の翻訳モデル管理 API を使用して、翻訳モデルを作成します。これは次のいずれかです。 事前にモデルをダウンロードしたり、不要なモデルを削除したりする場合に便利です ダウンロードします。
Kotlin
val modelManager = RemoteModelManager.getInstance() // Get translation models stored on the device. modelManager.getDownloadedModels(TranslateRemoteModel::class.java) .addOnSuccessListener { models -> // ... } .addOnFailureListener { // Error. } // Delete the German model if it's on the device. val germanModel = TranslateRemoteModel.Builder(TranslateLanguage.GERMAN).build() modelManager.deleteDownloadedModel(germanModel) .addOnSuccessListener { // Model deleted. } .addOnFailureListener { // Error. } // Download the French model. val frenchModel = TranslateRemoteModel.Builder(TranslateLanguage.FRENCH).build() val conditions = DownloadConditions.Builder() .requireWifi() .build() modelManager.download(frenchModel, conditions) .addOnSuccessListener { // Model downloaded. } .addOnFailureListener { // Error. }
Java
RemoteModelManager modelManager = RemoteModelManager.getInstance(); // Get translation models stored on the device. modelManager.getDownloadedModels(TranslateRemoteModel.class) .addOnSuccessListener(new OnSuccessListener>() { @Override public void onSuccess(Set models) { // ... } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Error. } }); // Delete the German model if it's on the device. TranslateRemoteModel germanModel = new TranslateRemoteModel.Builder(TranslateLanguage.GERMAN).build(); modelManager.deleteDownloadedModel(germanModel) .addOnSuccessListener(new OnSuccessListener () { @Override public void onSuccess(Void v) { // Model deleted. } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Error. } }); // Download the French model. TranslateRemoteModel frenchModel = new TranslateRemoteModel.Builder(TranslateLanguage.FRENCH).build(); DownloadConditions conditions = new DownloadConditions.Builder() .requireWifi() .build(); modelManager.download(frenchModel, conditions) .addOnSuccessListener(new OnSuccessListener () { @Override public void onSuccess(Void v) { // Model downloaded. } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Error. } });