This commit is contained in:
gdlbo
2022-07-31 13:34:07 +03:00
parent 24607e1ea5
commit 9e67ded6bd
7 changed files with 65 additions and 7 deletions
@@ -1,5 +1,7 @@
package ru.vtosters.lite.hooks;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.text.TextUtils;
import ru.vtosters.lite.translators.BaseTranslator;
@@ -8,10 +10,9 @@ public class MessagesHook {
public static String injectOwnText(String oldText) {
var translator = BaseTranslator.getInstance();
if (!TextUtils.isEmpty(oldText))
if (!TextUtils.isEmpty(oldText) && getBoolValue("autotranslate", false)) {
return translator.translate(oldText);
}
return oldText;
}
}
@@ -1,16 +1,29 @@
package ru.vtosters.lite.translators;
import static ru.vtosters.lite.utils.Preferences.*;
import androidx.annotation.NonNull;
import java.util.Locale;
import ru.vtosters.lite.utils.AndroidUtils;
public abstract class BaseTranslator {
private static final int YANDEX_CODE = 0;
@NonNull
public abstract String translate(String text);
public static Object target(){
var lang = preferences.getString("lang_target", "system");
var systemLang = Locale.getDefault().getLanguage();
if (lang.isEmpty() || lang.equals(systemLang) || lang.equals("system"))
return systemLang;
return lang;
}
public static BaseTranslator getInstance() {
switch (AndroidUtils.getPreferences().getInt("translator", 0)) {
case YANDEX_CODE:
@@ -23,7 +23,7 @@ public class YandexTranslator extends BaseTranslator {
private static final OkHttpClient client = new OkHttpClient();
private static YandexTranslator instance;
private static String uuid = UUID.randomUUID().toString().replace("-", "");
private static final String uuid = UUID.randomUUID().toString().replace("-", "");
public static YandexTranslator getInstance() {
if (instance == null)
@@ -37,7 +37,7 @@ public class YandexTranslator extends BaseTranslator {
var request = new Request.a()
.b("https://translate.yandex.net/api/v1/tr.json/translate?&srv=android&id=" + uuid + "-0-0")
.a(RequestBody.a(MediaType.a("application/x-www-form-urlencoded"),
"lang=" + Locale.getDefault().getLanguage() + "&text=" + URLEncoder.encode(text, "UTF-8")))
"lang=" + target() + "&text=" + URLEncoder.encode(text, "UTF-8")))
.a();
var payload = client.a(request).execute().a().g();
var json = new JSONObject(payload);
+9
View File
@@ -600,6 +600,15 @@
<item>Сторонний HTTPS</item>
<item>Сторонний SOCKS</item>
</string-array>
<string-array name="targetlang_value">
<item>Системный</item>
<item>Русский</item>
<item>Английский</item>
<item>Украинский</item>
<item>Немецкий</item>
<item>Французский</item>
<item>Казахский</item>
</string-array>
<string-array name="msgcount_value">
<item>По умолчанию</item>
<item>40 сообщений</item>
+18
View File
@@ -756,6 +756,24 @@
<item>https</item>
<item>socks</item>
</string-array>
<string-array name="targetlang_value">
<item>System</item>
<item>Russian</item>
<item>English</item>
<item>Ukrainian</item>
<item>German</item>
<item>French</item>
<item>Kazakh</item>
</string-array>
<string-array name="targetlang">
<item>system</item>
<item>ru</item>
<item>en</item>
<item>uk</item>
<item>de</item>
<item>fr</item>
<item>kk</item>
</string-array>
<string-array name="msgcount_value">
<item>Default</item>
<item>40 messages</item>
+17
View File
@@ -26,6 +26,23 @@
android:key="vkme_notifs"
android:title="@string/vkme_notifs" />
</PreferenceCategory>
<PreferenceCategory android:title="Переводчик">
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="system"
android:dialogTitle="Выберите язык"
android:entries="@array/targetlang_value"
android:entryValues="@array/targetlang"
android:key="lang_target"
android:title="Язык переводчика" />
<Preference
android:key="lang_service"
android:title="Сервис переводов" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="autotranslate"
android:summary="Автоматически переводить ваши сообщения"
android:title="Автоматический перевод" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/interfaceemoji">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
@@ -1493,7 +1493,7 @@
.locals 0
.line 1
invoke-static/range {p1 .. p1}, Lru/vtosters/lite/hooks/MessagesHook;->injectOwnText(Ljava/lang/String;)Ljava/lang/String;
invoke-static {p1}, Lru/vtosters/lite/hooks/MessagesHook;->injectOwnText(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1