mirror of https://github.com/M66B/FairEmail.git
parent
7c733c39c6
commit
5ac6155699
@ -1,10 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12.87,15.07l-2.54,-2.51 0.03,-0.03c1.74,-1.94 2.98,-4.17 3.71,-6.53L17,6L17,4h-7L10,2L8,2v2L1,4v1.99h11.17C11.5,7.92 10.44,9.75 9,11.35 8.07,10.32 7.3,9.19 6.69,8h-2c0.73,1.63 1.73,3.17 2.98,4.56l-5.09,5.02L4,19l5,-5 3.11,3.11 0.76,-2.04zM18.5,10h-2L12,22h2l1.12,-3h4.75L21,22h2l-4.5,-12zM15.88,17l1.62,-4.33L19.12,17h-3.24z"/>
|
||||
</vector>
|
@ -1,28 +0,0 @@
|
||||
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();
|
||||
}
|
||||
|
||||
static void Translate(String text, String targetLanguage, ITranslate intf) {
|
||||
// Stub
|
||||
}
|
||||
|
||||
interface ITranslate {
|
||||
void onTranslated(String language, String text);
|
||||
|
||||
void onError(Throwable ex);
|
||||
}
|
||||
}
|
@ -1,139 +0,0 @@
|
||||
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.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.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 targetLanguage = map.get(items[which]);
|
||||
|
||||
Translate(text, targetLanguage, new ITranslate() {
|
||||
@Override
|
||||
public void onTranslated(String language, String text) {
|
||||
getArguments().putString("translated", text);
|
||||
sendResult(RESULT_OK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable ex) {
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
}
|
||||
|
||||
static void Translate(String text, String targetLanguage, ITranslate intf) {
|
||||
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(
|
||||
new LanguageIdentificationOptions.Builder()
|
||||
.setConfidenceThreshold(0.34f)
|
||||
.build());
|
||||
languageIdentifier.identifyLanguage(text)
|
||||
.addOnSuccessListener(
|
||||
new OnSuccessListener<String>() {
|
||||
@Override
|
||||
public void onSuccess(@Nullable String language) {
|
||||
Log.i("Translate source=" + language);
|
||||
final String sourceLanguage = (language.equals("und") ? TranslateLanguage.ENGLISH : language);
|
||||
|
||||
if (sourceLanguage.equals(targetLanguage)) {
|
||||
intf.onTranslated(sourceLanguage, text);
|
||||
return;
|
||||
}
|
||||
|
||||
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(
|
||||
new OnSuccessListener<Void>() {
|
||||
@Override
|
||||
public void onSuccess(Void v) {
|
||||
translator.translate(text)
|
||||
.addOnSuccessListener(
|
||||
new OnSuccessListener<String>() {
|
||||
@Override
|
||||
public void onSuccess(@NonNull String translatedText) {
|
||||
intf.onTranslated(sourceLanguage, translatedText);
|
||||
}
|
||||
})
|
||||
.addOnFailureListener(
|
||||
new OnFailureListener() {
|
||||
@Override
|
||||
public void onFailure(@NonNull Exception ex) {
|
||||
intf.onError(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
.addOnFailureListener(
|
||||
new OnFailureListener() {
|
||||
@Override
|
||||
public void onFailure(@NonNull Exception ex) {
|
||||
intf.onError(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
.addOnFailureListener(
|
||||
new OnFailureListener() {
|
||||
@Override
|
||||
public void onFailure(@NonNull Exception ex) {
|
||||
intf.onError(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
interface ITranslate {
|
||||
void onTranslated(String language, String text);
|
||||
|
||||
void onError(Throwable ex);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue