forked from mirrors/Fedilab
- Add several targeted languages for translator
This commit is contained in:
parent
3b30708954
commit
255eeac0a5
4 changed files with 70 additions and 21 deletions
|
@ -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;
|
||||
}
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onFail(HttpsConnectionException httpsConnectionException) {
|
||||
callback.onTranslate("");
|
||||
Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public interface Translate {
|
||||
|
|
|
@ -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>
|
|
@ -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" />
|
||||
|
|
|
@ -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…
Reference in a new issue