mirror of https://github.com/M66B/FairEmail.git
Added ML kit translate (debug only)
This commit is contained in:
parent
1a2fb489ce
commit
1076cf9498
|
@ -50,14 +50,17 @@ android {
|
|||
}
|
||||
|
||||
sourceSets {
|
||||
github {
|
||||
java.srcDirs = ['src/main/java', 'src/iab/java']
|
||||
githubDebug {
|
||||
java.srcDirs = ['src/main/java', 'src/iab/java', 'src/xlat/java']
|
||||
}
|
||||
githubRelease {
|
||||
java.srcDirs = ['src/main/java', 'src/iab/java', 'src/stub/java']
|
||||
}
|
||||
fdroid {
|
||||
java.srcDirs = ['src/main/java', 'src/fdroid/java']
|
||||
java.srcDirs = ['src/main/java', 'src/fdroid/java', 'src/stub/java']
|
||||
}
|
||||
play {
|
||||
java.srcDirs = ['src/main/java', 'src/iab/java']
|
||||
java.srcDirs = ['src/main/java', 'src/iab/java', 'src/stub/java']
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -247,6 +250,7 @@ dependencies {
|
|||
def exif_version = "1.3.0-alpha01"
|
||||
def biometric_version = "1.0.1" // https://issuetracker.google.com/issues/159983244
|
||||
def textclassifier_version = "1.0.0-alpha03"
|
||||
def mlkit_translate = "16.0.0"
|
||||
def billingclient_version = "3.0.0"
|
||||
def javamail_version = "1.6.5"
|
||||
def jsoup_version = "1.13.1"
|
||||
|
@ -340,6 +344,9 @@ dependencies {
|
|||
// https://developer.android.com/jetpack/androidx/releases/textclassifier
|
||||
//implementation "androidx.textclassifier:textclassifier:$textclassifier_version"
|
||||
|
||||
// https://developers.google.com/ml-kit/language/translation/android
|
||||
debugImplementation "com.google.mlkit:translate:$mlkit_translate"
|
||||
|
||||
// https://developer.android.com/google/play/billing/billing_library_releases_notes
|
||||
// https://android-developers.googleblog.com/2020/06/meet-google-play-billing-library.html
|
||||
githubImplementation "com.android.billingclient:billing:$billingclient_version"
|
||||
|
|
|
@ -278,9 +278,10 @@ public class FragmentCompose extends FragmentBase {
|
|||
private static final int REQUEST_COLOR = 10;
|
||||
private static final int REQUEST_CONTACT_GROUP = 11;
|
||||
private static final int REQUEST_ANSWER = 12;
|
||||
private static final int REQUEST_LINK = 13;
|
||||
private static final int REQUEST_DISCARD = 14;
|
||||
private static final int REQUEST_SEND = 15;
|
||||
private static final int REQUEST_TRANSLATE = 13;
|
||||
private static final int REQUEST_LINK = 14;
|
||||
private static final int REQUEST_DISCARD = 15;
|
||||
private static final int REQUEST_SEND = 16;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -1213,8 +1214,11 @@ public class FragmentCompose extends FragmentBase {
|
|||
menu.findItem(R.id.menu_contact_group).setEnabled(
|
||||
state == State.LOADED && hasPermission(Manifest.permission.READ_CONTACTS));
|
||||
menu.findItem(R.id.menu_answer).setEnabled(state == State.LOADED);
|
||||
menu.findItem(R.id.menu_translate).setEnabled(state == State.LOADED);
|
||||
menu.findItem(R.id.menu_clear).setEnabled(state == State.LOADED);
|
||||
|
||||
menu.findItem(R.id.menu_translate).setVisible(BuildConfig.DEBUG);
|
||||
|
||||
int colorEncrypt = Helper.resolveColor(getContext(), R.attr.colorEncrypt);
|
||||
ImageButton ib = (ImageButton) menu.findItem(R.id.menu_encrypt).getActionView();
|
||||
ib.setEnabled(state == State.LOADED);
|
||||
|
@ -1275,6 +1279,9 @@ public class FragmentCompose extends FragmentBase {
|
|||
case R.id.menu_answer:
|
||||
onMenuAnswer();
|
||||
return true;
|
||||
case R.id.menu_translate:
|
||||
onMenuTranslate();
|
||||
return true;
|
||||
case R.id.menu_clear:
|
||||
StyleHelper.apply(R.id.menu_clear, etBody);
|
||||
return true;
|
||||
|
@ -1444,6 +1451,20 @@ public class FragmentCompose extends FragmentBase {
|
|||
fragment.show(getParentFragmentManager(), "compose:answer");
|
||||
}
|
||||
|
||||
private void onMenuTranslate() {
|
||||
Bundle args = new Bundle();
|
||||
|
||||
CharSequence seq = (etBody.hasSelection()
|
||||
? etBody.getText().subSequence(etBody.getSelectionStart(), etBody.getSelectionEnd())
|
||||
: etBody.getText());
|
||||
args.putString("text", seq.toString());
|
||||
|
||||
FragmentDialogTranslate fragment = new FragmentDialogTranslate();
|
||||
fragment.setArguments(args);
|
||||
fragment.setTargetFragment(this, REQUEST_TRANSLATE);
|
||||
fragment.show(getParentFragmentManager(), "compose:answer");
|
||||
}
|
||||
|
||||
private boolean onActionStyle(int action) {
|
||||
Log.i("Style action=" + action);
|
||||
|
||||
|
@ -1752,6 +1773,10 @@ public class FragmentCompose extends FragmentBase {
|
|||
if (resultCode == RESULT_OK && data != null)
|
||||
onAnswerSelected(data.getBundleExtra("args"));
|
||||
break;
|
||||
case REQUEST_TRANSLATE:
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
onTranslated(data.getBundleExtra("args"));
|
||||
break;
|
||||
case REQUEST_COLOR:
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
onColorSelected(data.getBundleExtra("args"));
|
||||
|
@ -2732,6 +2757,15 @@ public class FragmentCompose extends FragmentBase {
|
|||
etBody.getText().insert(etBody.getSelectionStart(), spanned);
|
||||
}
|
||||
|
||||
private void onTranslated(Bundle args) {
|
||||
String translated = "\n" + args.getString("translated");
|
||||
|
||||
if (etBody.hasSelection())
|
||||
etBody.getEditableText().insert(etBody.getSelectionEnd(), translated);
|
||||
else
|
||||
etBody.getEditableText().append(translated);
|
||||
}
|
||||
|
||||
private void onColorSelected(Bundle args) {
|
||||
int color = args.getInt("color");
|
||||
int start = args.getInt("start");
|
||||
|
|
|
@ -50,6 +50,11 @@
|
|||
android:title="@string/title_insert_template"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_translate"
|
||||
android:title="@string/title_translate"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_clear"
|
||||
android:title="@string/title_style_clear"
|
||||
|
|
|
@ -685,7 +685,7 @@
|
|||
<string name="title_more">Více</string>
|
||||
<string name="title_spam">Nevyžádané</string>
|
||||
<string name="title_move">Přesunout</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Kopírovat</string>
|
||||
<string name="title_copy_btn">Kopírovat</string>
|
||||
<string name="title_unsubscribe">Odhlásit odběr</string>
|
||||
<string name="title_message_rule">Vytvořit pravidlo</string>
|
||||
<string name="title_no_junk">Není spam</string>
|
||||
|
|
|
@ -663,7 +663,7 @@
|
|||
<string name="title_more">Mere</string>
|
||||
<string name="title_spam">Spam</string>
|
||||
<string name="title_move">Flyt</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Kopiér</string>
|
||||
<string name="title_copy_btn">Kopiér</string>
|
||||
<string name="title_unsubscribe">Afmeld</string>
|
||||
<string name="title_message_rule">Opret regel</string>
|
||||
<string name="title_no_junk">Ikke spam</string>
|
||||
|
|
|
@ -663,7 +663,7 @@ Protokolle, die dem Standard nicht entsprechen, wie „Microsoft Exchange Web Se
|
|||
<string name="title_more">Mehr</string>
|
||||
<string name="title_spam">Spam</string>
|
||||
<string name="title_move">Verschieben</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Kopieren</string>
|
||||
<string name="title_copy_btn">Kopieren</string>
|
||||
<string name="title_unsubscribe">Aus Liste abmelden</string>
|
||||
<string name="title_message_rule">Regel erstellen</string>
|
||||
<string name="title_no_junk">Kein Spam</string>
|
||||
|
@ -780,6 +780,7 @@ Protokolle, die dem Standard nicht entsprechen, wie „Microsoft Exchange Web Se
|
|||
<string name="title_media_toolbar">Mediensymbolleiste</string>
|
||||
<string name="title_insert_contact_group">Kontaktgruppe einfügen</string>
|
||||
<string name="title_insert_template">Vorlage einfügen</string>
|
||||
<string name="title_translate">Übersetzen</string>
|
||||
<string name="title_edit_plain_text">Als einfachen Text bearbeiten</string>
|
||||
<string name="title_edit_formatted_text">Als neu formatierten Text bearbeiten</string>
|
||||
<string name="title_select_certificate">Öffentlichen Schlüssel auswählen</string>
|
||||
|
|
|
@ -664,7 +664,7 @@
|
|||
<string name="title_more">Más</string>
|
||||
<string name="title_spam">Spam</string>
|
||||
<string name="title_move">Mover</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Copiar</string>
|
||||
<string name="title_copy_btn">Copiar</string>
|
||||
<string name="title_unsubscribe">Darse de baja</string>
|
||||
<string name="title_message_rule">Crear regla</string>
|
||||
<string name="title_no_junk">No es Spam</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="app_limitations">Esimerkiksi viestit muotoillaan aina uudelleen vaarallisten elementtien poistamiseksi ja luettavuuden parantamiseksi, ja linkkien avaaminen pitää turvallisuuden takia erikseen vahvistaa.</string>
|
||||
<string name="app_crash">FairEmailia ei tueta tässä laitteessa, koska bugit Androidissa aiheuttavat kaatumisia</string>
|
||||
<string name="app_exit">Mene \'takaisin\' uudelleen poistuaksesi</string>
|
||||
<string name="channel_service">Vastaanottaminen</string>
|
||||
<string name="channel_send">Lähettäminen</string>
|
||||
<string name="channel_notification">Ilmoitukset</string>
|
||||
<string name="channel_update">Päivitykset</string>
|
||||
|
@ -75,6 +76,7 @@
|
|||
<string name="title_notification_idle">Toimeton</string>
|
||||
<string name="title_notification_failed">\'%1$s\' epäonnistui</string>
|
||||
<string name="title_notification_alert">Palvelimen \'%1$s\' hälytys</string>
|
||||
<string name="title_notification_sending_failed">Lähettäminen vastaanottajalle %1$s epäonnistui</string>
|
||||
<string name="title_of">%1$s/%2$s</string>
|
||||
<string name="title_name_count">%1$s (%2$s)</string>
|
||||
<string name="title_name_plus">%1$s +%2$d</string>
|
||||
|
@ -620,6 +622,7 @@
|
|||
<string name="title_duplicate_in">Tee viestistä kopio kansioon %1$s</string>
|
||||
<string name="title_subject_reply">Re: %1$s</string>
|
||||
<string name="title_subject_forward">Fwd: %1$s</string>
|
||||
<string name="title_buttons">Painikkeet</string>
|
||||
<string name="title_seen">Merkitse luetuksi</string>
|
||||
<string name="title_unseen">Merkitse lukemattomaksi</string>
|
||||
<string name="title_hide">Piilota</string>
|
||||
|
@ -658,6 +661,9 @@
|
|||
<string name="title_more">Lisää</string>
|
||||
<string name="title_spam">Siirrä roskapostikansioon</string>
|
||||
<string name="title_move">Siirrä</string>
|
||||
<string name="title_copy_btn">Kopioi</string>
|
||||
<string name="title_unsubscribe">Peru tilaus</string>
|
||||
<string name="title_message_rule">Luo sääntö</string>
|
||||
<string name="title_no_junk">Ei roskaposti</string>
|
||||
<string name="title_move_to">Siirrä kansioon …</string>
|
||||
<string name="title_move_to_folder">Siirrä kansioon …</string>
|
||||
|
@ -772,6 +778,7 @@
|
|||
<string name="title_media_toolbar">Mediatyökalupalkki</string>
|
||||
<string name="title_insert_contact_group">Lisää yhteystietoryhmä</string>
|
||||
<string name="title_insert_template">Lisää viestipohja</string>
|
||||
<string name="title_translate">Käännä</string>
|
||||
<string name="title_edit_plain_text">Muokkaa pelkkänä tekstinä</string>
|
||||
<string name="title_edit_formatted_text">Muokkaa uudelleenmuotoiltuna tekstinä</string>
|
||||
<string name="title_select_certificate">Valitse julkinen avain</string>
|
||||
|
|
|
@ -663,7 +663,7 @@
|
|||
<string name="title_more">Plus</string>
|
||||
<string name="title_spam">Indésirables</string>
|
||||
<string name="title_move">Déplacer</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Copier</string>
|
||||
<string name="title_copy_btn">Copier</string>
|
||||
<string name="title_unsubscribe">Se désabonner</string>
|
||||
<string name="title_message_rule">Créer une règle</string>
|
||||
<string name="title_no_junk">Non indésirable</string>
|
||||
|
@ -780,6 +780,7 @@
|
|||
<string name="title_media_toolbar">Barre d’outils média</string>
|
||||
<string name="title_insert_contact_group">Insérer un groupe de contacts</string>
|
||||
<string name="title_insert_template">Insérer un modèle</string>
|
||||
<string name="title_translate">Traduire</string>
|
||||
<string name="title_edit_plain_text">Modifier comme texte brut</string>
|
||||
<string name="title_edit_formatted_text">Modifier comme texte reformaté</string>
|
||||
<string name="title_select_certificate">Sélectionner la clé publique</string>
|
||||
|
|
|
@ -663,7 +663,7 @@
|
|||
<string name="title_more">Plus</string>
|
||||
<string name="title_spam">Spam</string>
|
||||
<string name="title_move">Déplacer</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Copier</string>
|
||||
<string name="title_copy_btn">Copier</string>
|
||||
<string name="title_unsubscribe">Se désabonner</string>
|
||||
<string name="title_message_rule">Créer une règle</string>
|
||||
<string name="title_no_junk">Non spam</string>
|
||||
|
@ -780,6 +780,7 @@
|
|||
<string name="title_media_toolbar">Barre d\'outils média</string>
|
||||
<string name="title_insert_contact_group">Insérer un groupe de contacts</string>
|
||||
<string name="title_insert_template">Insérer un modèle</string>
|
||||
<string name="title_translate">Traduire</string>
|
||||
<string name="title_edit_plain_text">Modifier comme texte brut</string>
|
||||
<string name="title_edit_formatted_text">Modifier comme texte reformaté</string>
|
||||
<string name="title_select_certificate">Sélectionner la clé publique</string>
|
||||
|
|
|
@ -663,7 +663,7 @@
|
|||
<string name="title_more">Altro</string>
|
||||
<string name="title_spam">Posta indesiderata</string>
|
||||
<string name="title_move">Sposta</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Copia</string>
|
||||
<string name="title_copy_btn">Copia</string>
|
||||
<string name="title_unsubscribe">Disiscriviti</string>
|
||||
<string name="title_message_rule">Crea una regola</string>
|
||||
<string name="title_no_junk">Non spam</string>
|
||||
|
|
|
@ -662,7 +662,7 @@
|
|||
<string name="title_more">Meer</string>
|
||||
<string name="title_spam">Spam</string>
|
||||
<string name="title_move">Verplaatsen</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Kopiëren</string>
|
||||
<string name="title_copy_btn">Kopiëren</string>
|
||||
<string name="title_unsubscribe">Uitschrijven</string>
|
||||
<string name="title_message_rule">Maak regel</string>
|
||||
<string name="title_no_junk">Geen spam</string>
|
||||
|
@ -779,6 +779,7 @@
|
|||
<string name="title_media_toolbar">Media werkbalk</string>
|
||||
<string name="title_insert_contact_group">Contactgroep toevoegen</string>
|
||||
<string name="title_insert_template">Sjabloon invoegen</string>
|
||||
<string name="title_translate">Vertalen</string>
|
||||
<string name="title_edit_plain_text">Bewerk als platte tekst</string>
|
||||
<string name="title_edit_formatted_text">Bewerk als geformatteerde tekst</string>
|
||||
<string name="title_select_certificate">Selecteer publieke sleutel</string>
|
||||
|
|
|
@ -684,7 +684,7 @@
|
|||
<string name="title_more">Więcej</string>
|
||||
<string name="title_spam">Spam</string>
|
||||
<string name="title_move">Przenieś</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Kopiuj</string>
|
||||
<string name="title_copy_btn">Kopiuj</string>
|
||||
<string name="title_unsubscribe">Anuluj subskrypcję</string>
|
||||
<string name="title_message_rule">Utwórz regułę</string>
|
||||
<string name="title_no_junk">To nie jest spam</string>
|
||||
|
|
|
@ -685,7 +685,7 @@
|
|||
<string name="title_more">Ещё</string>
|
||||
<string name="title_spam">Спам</string>
|
||||
<string name="title_move">Переместить</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Копировать</string>
|
||||
<string name="title_copy_btn">Копировать</string>
|
||||
<string name="title_unsubscribe">Отписаться</string>
|
||||
<string name="title_message_rule">Создать правило</string>
|
||||
<string name="title_no_junk">Не спам</string>
|
||||
|
@ -802,6 +802,7 @@
|
|||
<string name="title_media_toolbar">Панель медиа</string>
|
||||
<string name="title_insert_contact_group">Добавить группу контактов</string>
|
||||
<string name="title_insert_template">Вставить шаблон</string>
|
||||
<string name="title_translate">Перевод</string>
|
||||
<string name="title_edit_plain_text">Редактировать как простой текст</string>
|
||||
<string name="title_edit_formatted_text">Редактировать как исходный текст</string>
|
||||
<string name="title_select_certificate">Выбор публичного ключа</string>
|
||||
|
|
|
@ -662,7 +662,7 @@
|
|||
<string name="title_more">Mer</string>
|
||||
<string name="title_spam">Skräppost</string>
|
||||
<string name="title_move">Flytta</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">Kopiera</string>
|
||||
<string name="title_copy_btn">Kopiera</string>
|
||||
<string name="title_unsubscribe">Avbryt prenumeration</string>
|
||||
<string name="title_message_rule">Skapa regel</string>
|
||||
<string name="title_no_junk">Inte skräppost</string>
|
||||
|
@ -779,6 +779,7 @@
|
|||
<string name="title_media_toolbar">Verktygsfält för media</string>
|
||||
<string name="title_insert_contact_group">Infoga kontaktgrupp</string>
|
||||
<string name="title_insert_template">Infoga mall</string>
|
||||
<string name="title_translate">Översätt</string>
|
||||
<string name="title_edit_plain_text">Redigera som oformaterad text</string>
|
||||
<string name="title_edit_formatted_text">Redigera som formaterad text</string>
|
||||
<string name="title_select_certificate">Välj publik nyckel</string>
|
||||
|
|
|
@ -651,7 +651,7 @@
|
|||
<string name="title_more">更多</string>
|
||||
<string name="title_spam">垃圾邮件</string>
|
||||
<string name="title_move">移动</string>
|
||||
<string name="title_copy_btn" comment="title_copy_btn Title for menu to enable/disable copy button (verb)">复制</string>
|
||||
<string name="title_copy_btn">复制</string>
|
||||
<string name="title_unsubscribe">取消订阅</string>
|
||||
<string name="title_message_rule">创建规则</string>
|
||||
<string name="title_no_junk">不是垃圾邮件</string>
|
||||
|
|
|
@ -887,6 +887,7 @@
|
|||
<string name="title_media_toolbar">Media toolbar</string>
|
||||
<string name="title_insert_contact_group">Insert contact group</string>
|
||||
<string name="title_insert_template">Insert template</string>
|
||||
<string name="title_translate">Translate</string>
|
||||
<string name="title_edit_plain_text">Edit as plain text</string>
|
||||
<string name="title_edit_formatted_text">Edit as reformatted text</string>
|
||||
<string name="title_select_certificate">Select public key</string>
|
||||
|
|
|
@ -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