summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/app/fedilab/android/helper/TranslateHelper.java80
-rw-r--r--app/src/main/res/values/strings.xml5
-rw-r--r--app/src/main/res/xml/pref_timelines.xml5
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/469.txt1
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)