Commit 255eeac0 authored by Thomas's avatar Thomas
Browse files

- Add several targeted languages for translator

parent 3b307089
Loading
Loading
Loading
Loading
+65 −15
Original line number Diff line number Diff line
@@ -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,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) {
@@ -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 {
+2 −3
Original line number Diff line number Diff line
@@ -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
+2 −3
Original line number Diff line number Diff line
@@ -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" />
+1 −0
Original line number Diff line number Diff line
@@ -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)