mirror of https://github.com/M66B/FairEmail.git
parent
1a2fb489ce
commit
1076cf9498
@ -0,0 +1,18 @@
|
|||||||
|
package eu.faircode.email;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
public class FragmentDialogTranslate extends FragmentDialogBase {
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
|
return new AlertDialog.Builder(getContext())
|
||||||
|
.setTitle(R.string.title_translate)
|
||||||
|
.create();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
package eu.faircode.email;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.google.android.gms.tasks.OnFailureListener;
|
||||||
|
import com.google.android.gms.tasks.OnSuccessListener;
|
||||||
|
import com.google.mlkit.common.model.DownloadConditions;
|
||||||
|
import com.google.mlkit.nl.translate.TranslateLanguage;
|
||||||
|
import com.google.mlkit.nl.translate.Translation;
|
||||||
|
import com.google.mlkit.nl.translate.Translator;
|
||||||
|
import com.google.mlkit.nl.translate.TranslatorOptions;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import static android.app.Activity.RESULT_OK;
|
||||||
|
|
||||||
|
public class FragmentDialogTranslate extends FragmentDialogBase {
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
|
final String text = getArguments().getString("text");
|
||||||
|
|
||||||
|
Map<String, String> map = new TreeMap<>();
|
||||||
|
for (String lc : TranslateLanguage.getAllLanguages())
|
||||||
|
map.put(new Locale(lc).getDisplayLanguage(), lc);
|
||||||
|
|
||||||
|
String[] items = map.keySet().toArray(new String[0]);
|
||||||
|
|
||||||
|
return new AlertDialog.Builder(getContext())
|
||||||
|
.setTitle(R.string.title_translate)
|
||||||
|
.setItems(items, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
String language = map.get(items[which]);
|
||||||
|
|
||||||
|
TranslatorOptions options = new TranslatorOptions.Builder()
|
||||||
|
.setSourceLanguage(TranslateLanguage.ENGLISH)
|
||||||
|
.setTargetLanguage(language)
|
||||||
|
.build();
|
||||||
|
Translator translator = Translation.getClient(options);
|
||||||
|
DownloadConditions conditions = new DownloadConditions.Builder()
|
||||||
|
.requireWifi()
|
||||||
|
.build();
|
||||||
|
translator.downloadModelIfNeeded(conditions)
|
||||||
|
.addOnSuccessListener(
|
||||||
|
new OnSuccessListener<Void>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Void v) {
|
||||||
|
translator.translate(text)
|
||||||
|
.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(
|
||||||
|
new OnFailureListener() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Exception ex) {
|
||||||
|
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue