يمكنك استخدام ML Kit لترجمة النص بين اللغات. تدعم ML Kit حاليًا الترجمة بين 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)
إذا كنت لا تعرف لغة نص الإدخال ، يمكنك استخدام واجهة برمجة تطبيقات تعريف اللغة أولاً. (لكن تأكد من عدم الاحتفاظ بعدد كبير جدًا من نماذج اللغات على الجهاز مرة واحدة.)
تأكد من تنزيل نموذج الترجمة المطلوب على الجهاز. لا تستدعي
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 تلقائيًا بتنزيل نماذج الترجمة الخاصة باللغة إلى الجهاز كما هو مطلوب. يمكنك أيضًا إدارة نماذج الترجمة التي تريد إتاحتها على الجهاز بشكل صريح باستخدام واجهة برمجة تطبيقات إدارة نماذج الترجمة الخاصة بـ 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.
}