يمكنك استخدام حزمة تعلّم الآلة لترجمة النص بين اللغات. حزمة تعلُّم الآلة تتيح حاليًا الترجمة بين 59 لغة.
قبل البدء
- إذا لم تكن قد فعلت ذلك بالفعل، إضافة Firebase إلى مشروع Android
- إضافة الموارد التابعة لمكتبات 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' }
ترجمة سلسلة من النص
لترجمة سلسلة بين لغتين:
يمكنك إنشاء عنصر
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)
إذا كنت لا تعرف لغة النص الذي تم إدخاله، يمكنك استخدام اللغة Identity 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 ميغابايت، لذا لا تنزّلها بدون داعٍ تنزيل تلك الملفات باستخدام شبكة WiFi فقط، ما لم يشِر المستخدم إلى خلاف ذلك. إِنْتَ أيضًا حذف النماذج غير اللازمة. يُرجى الاطّلاع على إدارة نماذج الترجمة بوضوح.
بعد التأكد من تنزيل النموذج، مرر سلسلة من النصوص في اللغة المصدر إلى
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. // ... }
يتم تمرير النص المُترجَم، باللغة الهدف التي ضبطتها، إلى مستمع للنجاح.
إدارة نماذج الترجمة بوضوح
عند استخدام واجهة برمجة التطبيقات للترجمة كما هو موضّح أعلاه، يتم تلقائيًا استخدام حزمة تعلُّم الآلة يتم تنزيل نماذج الترجمة الخاصة بكل لغة على الجهاز حسب الحاجة. إِنْتَ أيضًا إدارة نماذج الترجمة التي تريدها أن تكون متاحة على باستخدام واجهة برمجة التطبيقات لإدارة نموذج الترجمة في 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.
}