คุณใช้ ML Kit เพื่อแปลข้อความระหว่างภาษาได้ ชุดอุปกรณ์ ML ขณะนี้ สนับสนุนการแปลระหว่าง 59 ภาษา
ก่อนเริ่มต้น
- หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Android
- เพิ่มทรัพยากร Dependency สำหรับไลบรารี ML Kit Android ลงในโมดูล
ไฟล์ Gradle (ระดับแอป) (ปกติราคา
app/build.gradle
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-translate-model:20.0.8' }
แปลสตริงข้อความ
หากต้องการแปลสตริงระหว่าง 2 ภาษา ให้ทำดังนี้
สร้างออบเจ็กต์
FirebaseTranslator
โดยกำหนดค่าด้วยแหล่งที่มาและ ภาษาเป้าหมาย:Java
// Create an English-German translator: FirebaseTranslatorOptions options = new FirebaseTranslatorOptions.Builder() .setSourceLanguage(FirebaseTranslateLanguage.EN) .setTargetLanguage(FirebaseTranslateLanguage.DE) .build(); final FirebaseTranslator englishGermanTranslator = FirebaseNaturalLanguage.getInstance().getTranslator(options);
Kotlin+KTX
// Create an English-German translator: val options = FirebaseTranslatorOptions.Builder() .setSourceLanguage(FirebaseTranslateLanguage.EN) .setTargetLanguage(FirebaseTranslateLanguage.DE) .build() val englishGermanTranslator = FirebaseNaturalLanguage.getInstance().getTranslator(options)
หากคุณไม่ทราบภาษาของข้อความที่ป้อน คุณสามารถใช้ภาษา API การระบุก่อน (แต่ต้องแน่ใจว่า อย่าเก็บโมเดลภาษาหลายรายการไว้ในอุปกรณ์พร้อมกัน)
ตรวจดูว่าได้ดาวน์โหลดโมเดลการแปลที่กำหนดลงในอุปกรณ์แล้ว อย่าโทรหา
translate()
จนกว่าจะทราบว่าโมเดลพร้อมใช้งานJava
FirebaseModelDownloadConditions conditions = new FirebaseModelDownloadConditions.Builder() .requireWifi() .build(); englishGermanTranslator.downloadModelIfNeeded(conditions) .addOnSuccessListener( new OnSuccessListener<Void>() { @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. // ... } });
Kotlin+KTX
englishGermanTranslator.downloadModelIfNeeded() .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. // ... }
โมเดลภาษามีขนาดประมาณ 30 MB ดังนั้นโปรดอย่าดาวน์โหลดโดยไม่จำเป็น และ ให้ดาวน์โหลดโดยใช้ Wi-Fi เท่านั้น ยกเว้นกรณีที่ผู้ใช้ระบุไว้เป็นอย่างอื่น คุณ ควรลบโมเดลที่ไม่จำเป็นออกด้วย ดูจัดการโมเดลการแปลอย่างชัดแจ้ง
หลังจากที่คุณยืนยันว่าดาวน์โหลดโมเดลแล้ว ให้ส่งสตริงข้อความใน ภาษาต้นฉบับเป็นภาษา
translate()
:Java
englishGermanTranslator.translate(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@NonNull String translatedText) { // Translation successful. } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Error. // ... } });
Kotlin+KTX
englishGermanTranslator.translate(text) .addOnSuccessListener { translatedText -> // Translation successful. } .addOnFailureListener { exception -> // Error. // ... }
ข้อความที่แปลในภาษาเป้าหมายที่คุณกำหนดค่าไว้จะส่งไปยัง ผู้ฟังที่ประสบความสำเร็จ
จัดการโมเดลการแปลอย่างชัดแจ้ง
เมื่อคุณใช้ API การแปลตามที่อธิบายไว้ข้างต้น ML Kit จะทำงานโดยอัตโนมัติ ดาวน์โหลดโมเดลการแปลเฉพาะภาษาลงในอุปกรณ์ตามที่จำเป็น คุณ ยังสามารถจัดการโมเดลการแปล ที่คุณต้องการให้มีอยู่ใน โดยใช้ API การจัดการโมเดลการแปลของ ML Kit ได้ ประเภท มีประโยชน์ในกรณีที่คุณต้องการดาวน์โหลดโมเดลล่วงหน้า หรือลบโมเดลที่ไม่จำเป็น จากอุปกรณ์
Java
FirebaseModelManager modelManager = FirebaseModelManager.getInstance();
// Get translation models stored on the device.
modelManager.getDownloadedModels(FirebaseTranslateRemoteModel.class)
.addOnSuccessListener(new OnSuccessListener<Set<FirebaseTranslateRemoteModel>>() {
@Override
public void onSuccess(Set<FirebaseTranslateRemoteModel> models) {
// ...
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Error.
}
});
// Delete the German model if it's on the device.
FirebaseTranslateRemoteModel deModel =
new FirebaseTranslateRemoteModel.Builder(FirebaseTranslateLanguage.DE).build();
modelManager.deleteDownloadedModel(deModel)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void v) {
// Model deleted.
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Error.
}
});
// Download the French model.
FirebaseTranslateRemoteModel frModel =
new FirebaseTranslateRemoteModel.Builder(FirebaseTranslateLanguage.FR).build();
FirebaseModelDownloadConditions conditions = new FirebaseModelDownloadConditions.Builder()
.requireWifi()
.build();
modelManager.download(frModel, conditions)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void v) {
// Model downloaded.
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Error.
}
});
Kotlin+KTX
val modelManager = FirebaseModelManager.getInstance()
// Get translation models stored on the device.
modelManager.getDownloadedModels(FirebaseTranslateRemoteModel::class.java)
.addOnSuccessListener { models ->
// ...
}
.addOnFailureListener {
// Error.
}
// Delete the German model if it's on the device.
val deModel = FirebaseTranslateRemoteModel.Builder(FirebaseTranslateLanguage.DE).build()
modelManager.deleteDownloadedModel(deModel)
.addOnSuccessListener {
// Model deleted.
}
.addOnFailureListener {
// Error.
}
// Download the French model.
val frModel = FirebaseTranslateRemoteModel.Builder(FirebaseTranslateLanguage.FR).build()
val conditions = FirebaseModelDownloadConditions.Builder()
.requireWifi()
.build()
modelManager.download(frModel, conditions)
.addOnSuccessListener {
// Model downloaded.
}
.addOnFailureListener {
// Error.
}