diff options
author | Thomas <tschneider.ac@gmail.com> | 2023-01-17 18:08:10 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2023-01-17 18:08:10 +0100 |
commit | 255eeac0a5c048a12467bc88f7d7b374333f4a8c (patch) | |
tree | 3d238aba9879394e5d8a5ca9a9c2540fb8749458 | |
parent | 3b30708954e4e9cb32f6145f333755276ae3976f (diff) |
- Add several targeted languages for translator
4 files changed, 70 insertions, 21 deletions
diff --git a/app/src/main/java/app/fedilab/android/helper/TranslateHelper.java b/app/src/main/java/app/fedilab/android/helper/TranslateHelper.java index 2876feea3..41266be91 100644 --- a/app/src/main/java/app/fedilab/android/helper/TranslateHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/TranslateHelper.java @@ -20,14 +20,20 @@ import android.os.Build; import android.text.Html; import android.widget.Toast; +import androidx.appcompat.app.AlertDialog; import androidx.preference.PreferenceManager; import com.github.stom79.mytransl.MyTransL; import com.github.stom79.mytransl.client.HttpsConnectionException; import com.github.stom79.mytransl.client.Results; import com.github.stom79.mytransl.translate.Params; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.List; +import java.util.Set; import app.fedilab.android.R; +import app.fedilab.android.client.entities.app.Languages; import es.dmoral.toasty.Toasty; public class TranslateHelper { @@ -63,28 +69,72 @@ public class TranslateHelper { } } - String translate = sharedpreferences.getString(context.getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale()); - if (translate.equalsIgnoreCase("default")) { + Set<String> translates = sharedpreferences.getStringSet(context.getString(R.string.SET_LIVE_TRANSLATE_MULTIPLE), null); + String translate; + if (translates == null || translates.size() == 0) { translate = MyTransL.getLocale(); - } + myTransL.translate(statusToTranslate, translate, params, new Results() { + @Override + public void onSuccess(com.github.stom79.mytransl.translate.Translate translate) { + if (translate.getTranslatedContent() != null) { + callback.onTranslate(translate.getTranslatedContent()); + } else { + callback.onTranslate(""); + Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show(); + } + } - myTransL.translate(statusToTranslate, translate, params, new Results() { - @Override - public void onSuccess(com.github.stom79.mytransl.translate.Translate translate) { - if (translate.getTranslatedContent() != null) { - callback.onTranslate(translate.getTranslatedContent()); - } else { + @Override + public void onFail(HttpsConnectionException httpsConnectionException) { callback.onTranslate(""); Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show(); } + }); + } else { + String[] codesArr = new String[translates.size()]; + String[] languagesArr = new String[translates.size()]; + int j = 0; + List<Languages.Language> languages = Languages.get(context); + if (languages == null) { + return; } - - @Override - public void onFail(HttpsConnectionException httpsConnectionException) { - callback.onTranslate(""); - Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show(); + for (String val : translates) { + codesArr[j] = val; + for (Languages.Language language : languages) { + if (language.code.trim().equalsIgnoreCase(val.trim())) { + languagesArr[j] = language.language; + break; + } + } + j++; } - }); + AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context, Helper.dialogStyle()); + builder.setTitle(context.getString(R.string.translate_in)); + builder.setItems(languagesArr, (dialogInterface, i) -> { + myTransL.translate(statusToTranslate, codesArr[i], params, new Results() { + @Override + public void onSuccess(com.github.stom79.mytransl.translate.Translate translate) { + if (translate.getTranslatedContent() != null) { + callback.onTranslate(translate.getTranslatedContent()); + } else { + callback.onTranslate(""); + Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show(); + } + } + + @Override + public void onFail(HttpsConnectionException httpsConnectionException) { + callback.onTranslate(""); + Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show(); + } + }); + dialogInterface.dismiss(); + }); + builder.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); + builder.create().show(); + } + + } public interface Translate { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 58ed3f43c..c13598d07 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1267,7 +1267,6 @@ <item>isiZulu</item> </string-array> <string-array name="SET_LIVE_TRANSLATE_ENTRIES" translatable="false"> - <item>default</item> <item>en</item> <item>fr</item> <item>de</item> @@ -1303,7 +1302,6 @@ <item>vi</item> </string-array> <string-array name="SET_LIVE_TRANSLATE_VALUES" translatable="false"> - <item>-----</item> <item>English</item> <item>Français</item> <item>Deutsch</item> @@ -1482,7 +1480,7 @@ <string name="SET_GROUP_REBLOGS" translatable="false">SET_GROUP_REBLOGS</string> <string name="SET_BOOST_ORIGINAL_DATE" translatable="false">SET_BOOST_ORIGINAL_DATE</string> <string name="SET_HIDE_SINGLE_MEDIA_WITH_CARD" translatable="false">SET_HIDE_SINGLE_MEDIA_WITH_CARD</string> - <string name="SET_LIVE_TRANSLATE" translatable="false">SET_LIVE_TRANSLATE</string> + <string name="SET_LIVE_TRANSLATE_MULTIPLE" translatable="false">SET_LIVE_TRANSLATE_MULTIPLE</string> <string name="SET_TRUNCATE_TOOTS_SIZE" translatable="false">SET_TRUNCATE_TOOTS_SIZE</string> <string name="SET_ART_WITH_NSFW" translatable="false">SET_ART_WITH_NSFW</string> <string name="SET_VIDEO_CACHE" translatable="false">SET_VIDEO_CACHE</string> @@ -2229,4 +2227,5 @@ <string name="hide_single_media_with_card">Hide single media when there is a link preview</string> <string name="action_change_subscribed_language">Change subscribed languages</string> <string name="filter_languages">Filter languages</string> + <string name="translate_in">Translate in</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml index f2ceb3f25..f99027d2a 100644 --- a/app/src/main/res/xml/pref_timelines.xml +++ b/app/src/main/res/xml/pref_timelines.xml @@ -38,12 +38,11 @@ app:key="@string/SET_HIDE_SINGLE_MEDIA_WITH_CARD" app:singleLineTitle="false" app:title="@string/hide_single_media_with_card" /> - <ListPreference - android:defaultValue="default" + <MultiSelectListPreference app:entries="@array/SET_LIVE_TRANSLATE_VALUES" app:entryValues="@array/SET_LIVE_TRANSLATE_ENTRIES" app:iconSpaceReserved="false" - app:key="@string/SET_LIVE_TRANSLATE" + app:key="@string/SET_LIVE_TRANSLATE_MULTIPLE" app:summary="@string/set_live_translate" app:title="@string/set_live_translate_title" app:useSimpleSummaryProvider="true" /> diff --git a/src/fdroid/fastlane/metadata/android/en/changelogs/469.txt b/src/fdroid/fastlane/metadata/android/en/changelogs/469.txt index 841bc4e62..331a3a69c 100644 --- a/src/fdroid/fastlane/metadata/android/en/changelogs/469.txt +++ b/src/fdroid/fastlane/metadata/android/en/changelogs/469.txt @@ -2,6 +2,7 @@ Added: - Maths support (view and compose) - Filter DMs in HOME (long press on the tab) - Filter languages for users in home timeline (from their profile) +- Add several targeted languages for translator Changed: - Hide single media with preview is now a setting (default: disabled) |