คุณใช้ ML Kit เพื่อแปลข้อความระหว่างภาษาต่างๆ ได้ ML Kit สามารถแปลภาษาได้มากกว่า 50 ภาษา
ลองเลย
- ลองใช้แอปตัวอย่างเพื่อดูตัวอย่างการใช้งาน API นี้
ก่อนเริ่มต้น
- ในไฟล์ build.gradleระดับโปรเจ็กต์ ให้ตรวจสอบว่าได้รวม ที่เก็บ Maven ของ Google ไว้ในทั้งส่วนbuildscriptและallprojects
- เพิ่มทรัพยากร Dependency สำหรับคลัง Android ของ ML Kit ลงในไฟล์ Gradle ระดับแอปของโมดูล ซึ่งโดยปกติคือ app/build.gradledependencies { // ... 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อีกต่อไป- หากคุณใช้ Translator ใน Fragment หรือ AppCompatActivity วิธีง่ายๆ วิธีหนึ่งในการทำเช่นนั้นคือการเรียกใช้ 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 จะดาวน์โหลดโมเดลการแปลเฉพาะภาษาลงในอุปกรณ์โดยอัตโนมัติตามที่จำเป็น นอกจากนี้ คุณยังจัดการโมเดลการแปลที่ต้องการให้พร้อมใช้งานใน อุปกรณ์ได้อย่างชัดเจนโดยใช้ API การจัดการโมเดลการแปลของ ML Kit ซึ่งจะมีประโยชน์หากคุณต้องการดาวน์โหลดโมเดลล่วงหน้า หรือลบโมเดลที่ไม่จำเป็นออกจากอุปกรณ์
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<Set>() { @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. } }); 
