1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2025-02-23 14:41:08 +00:00

Added language identification

This commit is contained in:
M66B 2020-06-27 13:38:24 +02:00
parent 1076cf9498
commit c338aeeae7
2 changed files with 46 additions and 18 deletions

View file

@ -31,7 +31,7 @@ android {
//ndkVersion "21.0.6113669" //ndkVersion "21.0.6113669"
ndk { ndk {
// Bugsnag // Bugsnag, sqlite
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
} }
} }
@ -250,6 +250,7 @@ dependencies {
def exif_version = "1.3.0-alpha01" def exif_version = "1.3.0-alpha01"
def biometric_version = "1.0.1" // https://issuetracker.google.com/issues/159983244 def biometric_version = "1.0.1" // https://issuetracker.google.com/issues/159983244
def textclassifier_version = "1.0.0-alpha03" def textclassifier_version = "1.0.0-alpha03"
def mlkit_identify = "16.0.0"
def mlkit_translate = "16.0.0" def mlkit_translate = "16.0.0"
def billingclient_version = "3.0.0" def billingclient_version = "3.0.0"
def javamail_version = "1.6.5" def javamail_version = "1.6.5"
@ -344,7 +345,9 @@ dependencies {
// https://developer.android.com/jetpack/androidx/releases/textclassifier // https://developer.android.com/jetpack/androidx/releases/textclassifier
//implementation "androidx.textclassifier:textclassifier:$textclassifier_version" //implementation "androidx.textclassifier:textclassifier:$textclassifier_version"
// https://developers.google.com/ml-kit/language/identification/android
// https://developers.google.com/ml-kit/language/translation/android // https://developers.google.com/ml-kit/language/translation/android
debugImplementation "com.google.mlkit:language-id:$mlkit_identify"
debugImplementation "com.google.mlkit:translate:$mlkit_translate" debugImplementation "com.google.mlkit:translate:$mlkit_translate"
// https://developer.android.com/google/play/billing/billing_library_releases_notes // https://developer.android.com/google/play/billing/billing_library_releases_notes

View file

@ -11,6 +11,9 @@ import androidx.annotation.Nullable;
import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.OnSuccessListener;
import com.google.mlkit.common.model.DownloadConditions; import com.google.mlkit.common.model.DownloadConditions;
import com.google.mlkit.nl.languageid.LanguageIdentification;
import com.google.mlkit.nl.languageid.LanguageIdentificationOptions;
import com.google.mlkit.nl.languageid.LanguageIdentifier;
import com.google.mlkit.nl.translate.TranslateLanguage; import com.google.mlkit.nl.translate.TranslateLanguage;
import com.google.mlkit.nl.translate.Translation; import com.google.mlkit.nl.translate.Translation;
import com.google.mlkit.nl.translate.Translator; import com.google.mlkit.nl.translate.Translator;
@ -39,28 +42,50 @@ public class FragmentDialogTranslate extends FragmentDialogBase {
.setItems(items, new DialogInterface.OnClickListener() { .setItems(items, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
String language = map.get(items[which]); String targetLanguage = map.get(items[which]);
TranslatorOptions options = new TranslatorOptions.Builder() LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(
.setSourceLanguage(TranslateLanguage.ENGLISH) new LanguageIdentificationOptions.Builder()
.setTargetLanguage(language) .setConfidenceThreshold(0.34f)
.build(); .build());
Translator translator = Translation.getClient(options); languageIdentifier.identifyLanguage(text)
DownloadConditions conditions = new DownloadConditions.Builder()
.requireWifi()
.build();
translator.downloadModelIfNeeded(conditions)
.addOnSuccessListener( .addOnSuccessListener(
new OnSuccessListener<Void>() { new OnSuccessListener<String>() {
@Override @Override
public void onSuccess(Void v) { public void onSuccess(@Nullable String sourceLanguage) {
translator.translate(text) Log.i("Translate source=" + sourceLanguage);
if (sourceLanguage.equals("und"))
sourceLanguage = TranslateLanguage.ENGLISH;
TranslatorOptions options = new TranslatorOptions.Builder()
.setSourceLanguage(sourceLanguage)
.setTargetLanguage(targetLanguage)
.build();
Translator translator = Translation.getClient(options);
DownloadConditions conditions = new DownloadConditions.Builder()
.requireWifi()
.build();
translator.downloadModelIfNeeded(conditions)
.addOnSuccessListener( .addOnSuccessListener(
new OnSuccessListener<String>() { new OnSuccessListener<Void>() {
@Override @Override
public void onSuccess(@NonNull String translatedText) { public void onSuccess(Void v) {
getArguments().putString("translated", translatedText); translator.translate(text)
sendResult(RESULT_OK); .addOnSuccessListener(
new OnSuccessListener<String>() {
@Override
public void onSuccess(@NonNull String translatedText) {
getArguments().putString("translated", translatedText);
sendResult(RESULT_OK);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception ex) {
Log.unexpectedError(getParentFragmentManager(), ex);
}
});
} }
}) })
.addOnFailureListener( .addOnFailureListener(