Loading app/src/main/java/app/fedilab/android/helper/TranslateHelper.java +65 −15 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -63,12 +69,49 @@ 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 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; } 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) { Loading @@ -85,6 +128,13 @@ public class TranslateHelper { 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 { Loading app/src/main/res/values/strings.xml +2 −3 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading Loading @@ -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> Loading Loading @@ -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 app/src/main/res/xml/pref_timelines.xml +2 −3 Original line number Diff line number Diff line Loading @@ -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" /> Loading src/fdroid/fastlane/metadata/android/en/changelogs/469.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading
app/src/main/java/app/fedilab/android/helper/TranslateHelper.java +65 −15 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -63,12 +69,49 @@ 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 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; } 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) { Loading @@ -85,6 +128,13 @@ public class TranslateHelper { 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 { Loading
app/src/main/res/values/strings.xml +2 −3 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading Loading @@ -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> Loading Loading @@ -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
app/src/main/res/xml/pref_timelines.xml +2 −3 Original line number Diff line number Diff line Loading @@ -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" /> Loading
src/fdroid/fastlane/metadata/android/en/changelogs/469.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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) Loading