ML Kit를 사용하여 언어 간에 텍스트를 번역할 수 있습니다. ML 키트 여러 단어 간에 번역이 가능합니다 50개 언어
<ph type="x-smartling-placeholder">사용해 보기
- 샘플 앱을 사용하여 이 API의 사용 예를 참조하세요.
시작하기 전에
<ph type="x-smartling-placeholder">- 프로젝트 수준
build.gradle
파일에 다음 코드를 포함해야 합니다.buildscript
및allprojects
섹션 - ML Kit Android 라이브러리의 종속 항목을 모듈의
앱 수준 gradle 파일(일반적으로
app/build.gradle
임)을 빌드합니다.dependencies { // ... implementation 'com.google.mlkit:translate:17.0.3' }
텍스트 문자열 번역
문자열을 두 언어 간에 번역하려면 다음 단계를 따르세요.
만들기
Translator
드림 객체에 추가하여 출발어와 도착어로 구성합니다.Kotlin
// Create an English-German translator: val options = TranslatorOptions.Builder() .setSourceLanguage(TranslateLanguage.ENGLISH) .setTargetLanguage(TranslateLanguage.GERMAN) .build() val englishGermanTranslator = Translation.getClient(options)
자바
// Create an English-German translator: TranslatorOptions options = new TranslatorOptions.Builder() .setSourceLanguage(TranslateLanguage.ENGLISH) .setTargetLanguage(TranslateLanguage.GERMAN) .build(); final Translator englishGermanTranslator = Translation.getClient(options);
입력 텍스트의 언어를 모를 경우 언어 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. // ... }
자바
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. // ... } }); 언어 모델은 약 30MB이므로 불필요하게 다운로드하지 마세요. 사용자가 달리 지정하지 않는 한 Wi-Fi를 사용해서만 다운로드할 수 있습니다. 나 불필요한 모델도 삭제해야 합니다 명시적으로 번역 모델 관리하기를 참고하세요.
모델이 다운로드되었는지 확인한 후 출발어와 도착어를
translate()
:Kotlin
englishGermanTranslator.translate(text) .addOnSuccessListener { translatedText -> // Translation successful. } .addOnFailureListener { exception -> // Error. // ... }
자바
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에서 번역기를 사용하는 경우 LifecycleOwner.getLifecycle()을 호출하세요. 을 호출한 다음 Lifecycle.addObserver를 호출합니다. 예를 들면 다음과 같습니다.
Kotlin
val options = ... val translator = Translation.getClient(options) getLifecycle().addObserver(translator)
자바
TranslatorOptions options = ... Translator translator = Translation.getClient(options); getLifecycle().addObserver(translator); ... use translator ...
여기서는 코드가 LifecycleOwner (예: Fragment 또는 AppCompatActivity)를 상속해야 합니다.
명시적으로 번역 모델 관리
위에 설명된 대로 번역 API를 사용하면 ML Kit가 자동으로 필요에 따라 언어별 번역 모델을 기기에 다운로드 나 원하는 번역 모델을 직접 관리하고 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. } });