[main] translate all strings

This commit is contained in:
Erik Kiznov
2022-09-18 13:00:15 +05:00
parent 8b614f786d
commit 270fca127b
16 changed files with 225 additions and 87 deletions
@@ -4,8 +4,10 @@ import static ru.vtosters.lite.net.Request.makeRequest;
import static ru.vtosters.lite.proxy.ProxyUtils.getApi;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
import static ru.vtosters.lite.utils.AndroidUtils.getArray;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
import static ru.vtosters.lite.utils.AndroidUtils.getResources;
import static ru.vtosters.lite.utils.AndroidUtils.getString;
import android.util.SparseArray;
import android.widget.Toast;
@@ -68,7 +70,7 @@ public class MessagesDownloader{
}
fos.write(format.provideDocumentEnd().getBytes(StandardCharsets.UTF_8));
fos.close();
Toast.makeText(getGlobalContext(), "Сохранено как " + out.getAbsolutePath(), Toast.LENGTH_SHORT).show();
Toast.makeText(getGlobalContext(), getString("saved_as") + " " + out.getAbsolutePath(), Toast.LENGTH_SHORT).show();
} catch (IOException | JSONException e) {
e.printStackTrace();
}
@@ -276,7 +278,7 @@ public class MessagesDownloader{
"\n" +
"";
return "<html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta charset=\"utf-8\"><title>Экспорт из VTLite</title><style>" + style + "</style></head><body>";
return "<html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta charset=\"utf-8\"><title>" + getString("chat_export_title") + "</title><style>" + style + "</style></head><body>";
}
@Override
@@ -286,7 +288,7 @@ public class MessagesDownloader{
@Override
String provideHeader(String dialogName, String date){
return "<div class=\"vtex-milk-header\"><h4 class=\"vtex-milk-header-txt\">VTLite</h4><h5 class=\"vtex-milk-header-sub\">Экспорт истории чата (" + date + ")</h5></div><div class=\"vtex-milk-msgcont\">";
return "<div class=\"vtex-milk-header\"><h4 class=\"vtex-milk-header-txt\">VTLite</h4><h5 class=\"vtex-milk-header-sub\">" + getString("chat_export_header") + " (" + date + ")</h5></div><div class=\"vtex-milk-msgcont\">";
}
@Override
@@ -307,13 +309,13 @@ public class MessagesDownloader{
}
String chatAction = (message.chat_action != null) ? getHtmlForChatAction(message.chat_action) : "";
String attaches = (message.attachments.size() > 0) ? "<p class=\"msg-attaches\">Вложения: " + getHtmlForAttach(message.attachments) + "</p>" : "";
String attaches = (message.attachments.size() > 0) ? "<p class=\"msg-attaches\">" + getString("attachments") + ": " + getHtmlForAttach(message.attachments) + "</p>" : "";
String reply = (message.reply_message != null) ? provideReply(message.reply_message) : "";
String fwdMessages = (message.fwd_messages.size() > 0) ? provideForwardMessages(message.fwd_messages) : "";
String userLink = (user.isGroup ? "club" : "id") + user.id;
return "<div class=\"vtex-milk-msg" + isOut + "\" id=\"" + message.id + "\">" +
"<p class=\"msg-from\">от <a href=\"https://" + VK_DOMAIN + "/" + userLink + "\">" + user.firstName + " " + user.lastName + "</a> <span class=\"msg-from-date\">" + formatTime(message.date) + "</span></p>" + // TODO photo100
"<p class=\"msg-from\">" + getString("from_lower") + " <a href=\"https://" + VK_DOMAIN + "/" + userLink + "\">" + user.firstName + " " + user.lastName + "</a> <span class=\"msg-from-date\">" + formatTime(message.date) + "</span></p>" + // TODO photo100
"<p class=\"msg-body\">" + mentionsReplace(message.text) + "</p>" +
geoPosition +
chatAction +
@@ -336,12 +338,12 @@ public class MessagesDownloader{
if (fwdMessages != null) {
var length = fwdMessages.length();
if (length > 0) text = length + " " + pluralMsg(length);
} else text = "Вложение";
} else text = getString("attachment"); // Вложение
}
return "<a href=\"#" + messageId + "\" class=\"msg-attach-link\">" +
"<div class=\"msg-reply\">" +
"<p class=\"reply-header\">Пересланное сообщение</p>" +
"<p class=\"reply-header\">" + getString("vkim_msg_fwd_single") + "</p>" +
"<p class=\"reply-content\">" + user.firstName + " " + user.lastName + ": " + text + "</p>" +
"</div>" +
"</a>";
@@ -382,7 +384,7 @@ public class MessagesDownloader{
JSONObject reply_message = fwd_message.optJSONObject("reply_message");
var attachesHtml = (attaches.size() > 0) ? "Вложения: " + getHtmlForAttach(attaches) : "";
var attachesHtml = (attaches.size() > 0) ? getString("attachments") + ": " + getHtmlForAttach(attaches) : "";
var replyHtml = (reply_message != null) ? provideReply(reply_message) : "";
var fwdsHtml = (fwdsMsg.size() > 0) ? provideForwardMessages(fwdsMsg) : ""; // recursion XD :>
@@ -405,7 +407,7 @@ public class MessagesDownloader{
}
private String pluralMsg(int count) {
String[] plurals = {"сообщение", "сообщения", "сообщений"};
String[] plurals = getArray("msg_plurals");
var hundredModulo = count % 100;
var tenModulo = count % 10;
@@ -424,22 +426,22 @@ public class MessagesDownloader{
switch(type) {
case "chat_photo_update":
htmlAction.append("Обновил фотографию беседы");
htmlAction.append(getString("chat_export_avatar_update"));
break;
case "chat_photo_remove":
htmlAction.append("Удалил фотографию беседы");
htmlAction.append(getString("chat_export_avatar_remove"));
break;
case "chat_create":
var name = action.optString("text");
htmlAction.append("Создал беседу").append((!name.isEmpty()) ? " с названием \"" + name + "\"" : "");
htmlAction.append(getString("chat_export_chat_created")).append((!name.isEmpty()) ? " \"" + name + "\"" : "");
break;
case "chat_title_update":
var newName = action.optString("text");
htmlAction.append("Сменил название беседы").append((!newName.isEmpty()) ? " на \"" + newName : "\"");
htmlAction.append(getString("chat_export_name_changed")).append((!newName.isEmpty()) ? (" " + getString("chat_export_to") + " \"" + newName + "\"") : "");
break;
case "chat_invite_user":
var newUserId = action.optInt("member_id");
htmlAction.append("Добавил ").append((newUserId > 0) ? "пользователя" : "группу");
htmlAction.append(getString("chat_export_user_added") + " ").append((newUserId > 0) ? getString("chat_export_type_user") : getString("chat_export_type_group"));
if (newUserId != 0) {
var userLink = ((newUserId < 0) ? "club" : "id") + Math.abs(newUserId);
htmlAction.append(" <a href=\"https://" + VK_DOMAIN + "/").append(userLink).append("\" class=\"msg-attach-link\">@").append(userLink).append("</a>");
@@ -447,7 +449,7 @@ public class MessagesDownloader{
break;
case "chat_kick_user":
var removedUserId = action.optInt("member_id");
htmlAction.append("Исключил ").append((removedUserId > 0) ? "пользователя" : "группу");
htmlAction.append(getString("chat_export_user_kicked") + " ").append((removedUserId > 0) ? getString("chat_export_type_user") : getString("chat_export_type_group"));
if (removedUserId != 0) {
var userLink = ((removedUserId < 0) ? "club" : "id") + Math.abs(removedUserId);
htmlAction.append(" <a href=\"https://" + VK_DOMAIN + "/").append(userLink).append("\" class=\"msg-attach-link\">@").append(userLink).append("</a>");
@@ -455,22 +457,22 @@ public class MessagesDownloader{
break;
case "chat_pin_message":
var message = action.optString("message");
htmlAction.append("Закрепил сообщение").append((!message.isEmpty()) ? (" с текстом: \"" + message + "\"") : "");
htmlAction.append(getString("chat_export_msg_pinned")).append((!message.isEmpty()) ? (" \"" + message + "\"") : "");
break;
case "chat_unpin_message":
htmlAction.append("Открепил сообщение");
htmlAction.append(getString("chat_export_msg_unpinned"));
break;
case "chat_invite_user_by_link":
htmlAction.append("Вступил в беседу по ссылке");
htmlAction.append(getString("chat_export_join_by_link"));
break;
case "chat_screenshot":
htmlAction.append("Сделал скриншот беседы");
htmlAction.append(getString("chat_export_chat_screenshot"));
break;
case "custom":
htmlAction.append(action.optString("message"));
break;
default:
htmlAction.append("Действие не поддерживается (").append(type).append(")");
htmlAction.append(getString("vkim_msg_unsupported") + " (").append(type).append(")");
break;
}
@@ -489,40 +491,40 @@ public class MessagesDownloader{
switch(type) { // market_album is not supported
case "photo":
var sizes = item.getJSONArray("sizes");
rs.append("<a href=\"").append(sizes.getJSONObject(sizes.length() - 1).getString("url")).append("\" class=\"msg-attach-link\">фотография</a>");
rs.append("<a href=\"").append(sizes.getJSONObject(sizes.length() - 1).getString("url")).append("\" class=\"msg-attach-link\">").append(getString("chat_export_type_photo")).append("</a>");
break;
case "doc":
rs.append("<a href=\"").append(item.getString("url")).append("\" class=\"msg-attach-link\">документ</a>");
rs.append("<a href=\"").append(item.getString("url")).append("\" class=\"msg-attach-link\">").append(getString("chat_export_type_doc")).append("</a>");
break;
case "link":
rs.append("<a href=\"").append(item.getString("url")).append("\" class=\"msg-attach-link\">ссылка</a>");
rs.append("<a href=\"").append(item.getString("url")).append("\" class=\"msg-attach-link\">").append(getString("chat_export_type_link")).append("</a>");
break;
case "wall":
rs.append("<a href=\"https://" + VK_DOMAIN + "/wall").append(item.optString("to_id", item.optString("owner_id"))).append("_").append(item.getString("id")).append("\" class=\"msg-attach-link\">запись на стене</a>");
rs.append("<a href=\"https://" + VK_DOMAIN + "/wall").append(item.optString("to_id", item.optString("owner_id"))).append("_").append(item.getString("id")).append("\" class=\"msg-attach-link\">").append(getString("chat_export_type_wallpost")).append("</a>");
break;
case "sticker":
rs.append("<img style=\"width:128px;height:128px;\" src=\"").append(item.getJSONArray("images").getJSONObject(1).getString("url")).append("\"/>");
break;
case "audio_message":
rs.append("<a href=\"").append(item.optString("link_mp3")).append("\" class=\"msg-attach-link\">голосовое сообщение</a>");
rs.append("<a href=\"").append(item.optString("link_mp3")).append("\" class=\"msg-attach-link\">").append(getString("chat_export_type_audiomsg")).append("</a>");
break;
case "audio":
rs.append("аудиозапись (").append(item.optString("artist")).append(" — ").append(item.optString("title")).append(")");
rs.append(getString("chat_export_type_audio")).append(" (").append(item.optString("artist")).append(" — ").append(item.optString("title")).append(")");
break;
case "video":
rs.append("видеозапись ( ").append(getVideoHtml(item.optJSONObject("files"))).append(")");
rs.append(getString("chat_export_type_video")).append(" (").append(getVideoHtml(item.optJSONObject("files"))).append(")");
break;
case "wall_reply":
var link = "https://" + VK_DOMAIN + "/wall" + item.optString("owner_id") + "_" + item.optString("post_id") + "?reply=" + item.optString("id");
rs.append("<a class=\"msg-attach-link\" href=\"").append(link).append("\">комментарий на стене</a>");
rs.append("<a class=\"msg-attach-link\" href=\"").append(link).append("\">").append(getString("chat_export_type_wallreply")).append("</a>");
break;
case "story":
var story_link = "https://" + VK_DOMAIN + "/story" + item.optString("owner_id") + "_" + item.optString("id");
rs.append("<a class=\"msg-attach-link\" href=\"").append(story_link).append("\">история</a>");
rs.append("<a class=\"msg-attach-link\" href=\"").append(story_link).append("\">").append(getString("chat_export_type_story")).append("</a>");
break;
case "podcast":
var podcast_link = "https://" + VK_DOMAIN + "/podcast" + item.optString("owner_id") + "_" + item.optString("id");
rs.append("<a class=\"msg-attach-link\" href=\"").append(podcast_link).append("\">подкаст</a>");
rs.append("<a class=\"msg-attach-link\" href=\"").append(podcast_link).append("\">").append(getString("chat_export_type_podcast")).append("</a>");
break;
case "gift":
rs.append("<img src=\"").append(item.optString("thumb_96")).append("\"/>");
@@ -532,25 +534,25 @@ public class MessagesDownloader{
if (app != null) {
var miniapp_link = "https://" + VK_DOMAIN + "/app" + app.optString("id");
rs.append("<a class=\"msg-attach-link\" href=\"").append(miniapp_link).append("\">мини-приложение</a>");
rs.append("<a class=\"msg-attach-link\" href=\"").append(miniapp_link).append("\">").append(getString("chat_export_type_miniapp")).append("</a>");
break;
}
rs.append("ошибка");
rs.append(getString("chat_export_error"));
break;
case "audio_playlist":
var playlist_link = "https://" + VK_DOMAIN + "/music/album/" + item.optString("owner_id") + "_" + item.optString("id") + "_" + item.optString("access_key");
rs.append("<a class=\"msg-attach-link\" href=\"").append(playlist_link).append("\">плейлист (").append(item.optString("title")).append(")</a>");
rs.append("<a class=\"msg-attach-link\" href=\"").append(playlist_link).append("\">").append(getString("chat_export_type_playlist")).append(" (").append(item.optString("title")).append(")</a>");
break;
case "poll":
rs.append((item.optBoolean("anonymous") ? "анонимный" : "публичный")).append(" опрос ").append(getPollHtml(item));
rs.append(getString(item.optBoolean("anonymous") ? "chat_export_poll_anon" : "chat_export_poll_publ")).append(" ").append(getString("chat_export_type_poll")).append(" ").append(getPollHtml(item));
break;
case "market":
var market_item_link = "https://" + VK_DOMAIN + "/market" + item.optString("owner_id") + "_" + item.optString("id");
rs.append("<a class=\"msg-attach-link\" href=\"").append(market_item_link).append("\">товар</a>");
rs.append("<a class=\"msg-attach-link\" href=\"").append(market_item_link).append("\">").append(getString("chat_export_type_market")).append("</a>");
break;
default:
rs.append("не поддерживается (").append(type).append(")");
rs.append(getString("vkim_msg_unsupported")).append(" (").append(type).append(")");
break;
}
@@ -575,13 +577,13 @@ public class MessagesDownloader{
pollHtml.append("<hr><p>").append(jsonObject.optString("text")).append(" · ").append(jsonObject.optString("votes")).append(" (").append(jsonObject.optString("rate")).append("%)</p>");
}
pollHtml.append("<hr><p style=\"text-align:center;\">Проголосовало ").append(poll.optString("votes")).append(" чел.</p>");
pollHtml.append("<hr><p style=\"text-align:center;\">").append(getString("chat_export_poll_voted")).append(" ").append(poll.optString("votes")).append(" ").append(getString("chat_export_users_name")).append("</p>");
return pollHtml.append("</div>").toString();
}
private static String getVideoHtml(JSONObject files) throws JSONException {
if (files == null) return "ссылки отсутствуют";
if (files == null) return getString("chat_export_video_nolinks");
Iterator< ? > keys = files.keys();
StringBuilder videoHtml = new StringBuilder();
@@ -120,7 +120,7 @@ public class Scrobbler {
@Override
public void onFailure(NetCall call, IOException e) {
Log.d("Scrobbler", "Auth failed", e);
sendToast(AndroidUtils.getString("lastfm_auth_error"));
sendToast(AndroidUtils.getString("auth_error_vtl"));
}
@Override
@@ -1,5 +1,6 @@
package ru.vtosters.lite.ui.dialogs;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.AndroidUtils.getString;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.app.Activity;
@@ -13,17 +14,15 @@ public class ThemeChanging{
public static void changeTheme(Activity activity, float[] f){
if (getBoolValue("systemtheme", true)) {
new VkAlertDialog.Builder(activity)
.setTitle("Внимание!")
.setMessage("У вас включена системная тема \n" +
"При переключении темы системная тема будет отключена \n\n" +
"Вы действительно хотите отключить её?")
.setTitle(getString("warning"))
.setMessage(getString("system_theme_warning"))
.setCancelable(false)
.setPositiveButton("Отключить", (dialogInterface, i) -> {
.setPositiveButton(getString("proxy_disable"), (dialogInterface, i) -> { // Отключить
edit().putBoolean("systemtheme", false).commit();
VKThemeHelper.b(activity, f);
VKUIHook.clearWebCache();
})
.setNeutralButton("Отмена", null)
.setNeutralButton(getString("cancel"), null)
.show();
} else {
VKThemeHelper.b(activity, f);
@@ -210,7 +210,7 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment {
private void deleteVideoHistoryDialog(Context context){
VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context);
builder.setTitle(AndroidUtils.getString("warning"));
builder.setMessage("Вы действительно хотите очистить историю видео?");
builder.setMessage(AndroidUtils.getString("delete_video_history_confirm"));
builder.setCancelable(false);
builder.setPositiveButton(AndroidUtils.getString("yes"), (dialogInterface, i) -> {
deleteVideoHistory();
@@ -309,7 +309,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment {
private void delprefs(Context context) {
VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context);
builder.setTitle(AndroidUtils.getString("warning"));
builder.setMessage("Вы действительно хотите сбросить настройки?");
builder.setMessage(AndroidUtils.getString("settings_reset_confirm"));
builder.setCancelable(false);
builder.setPositiveButton(AndroidUtils.getString("yes"), (dialogInterface, i) -> {
deletePrefs();
@@ -179,19 +179,17 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
if (Preferences.systemtheme()) {
new VkAlertDialog.Builder(requireActivity())
.setTitle("Внимание!")
.setMessage("У вас включена системная тема \n" +
"При переключении темы системная тема будет отключена \n\n" +
"Вы действительно хотите отключить её?")
.setTitle(AndroidUtils.getString("warning"))
.setMessage(AndroidUtils.getString("system_theme_warning"))
.setCancelable(false)
.setPositiveButton("Отключить", (dialogInterface, i) -> {
.setPositiveButton(AndroidUtils.getString("proxy_disable"), (dialogInterface, i) -> { // Отключить
switchPreference.setChecked(isDarkTheme);
((MaterialSwitchPreference) findPreference("systemtheme")).setChecked(false);
requireActivity().runOnUiThread(() -> {
switchTheme(isDarkTheme);
});
})
.setNeutralButton("Отмена", null)
.setNeutralButton(AndroidUtils.getString("cancel"), null)
.show();
return false;
}
@@ -157,7 +157,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{
});
}
PreferencesUtil.addMaterialSwitchPreference(this, "compresswp", "Сжимать обои", "Значительно ускоряет открытие чатов", null, true, (preference, o) -> {
PreferencesUtil.addMaterialSwitchPreference(this, "compresswp", AndroidUtils.getString("compress_wallpaper_title"), AndroidUtils.getString("compress_wallpaper_summ"), null, true, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("compresswp", value).commit();
requestUpdateWallpaper();
@@ -4,6 +4,7 @@ import static com.vk.im.engine.h.im_bg_chat;
import static ru.vtosters.lite.ui.wallpapers.ImageFilters.getFilteredDrawable;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
import static ru.vtosters.lite.utils.AndroidUtils.getPreferences;
import static ru.vtosters.lite.utils.AndroidUtils.getString;
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
@@ -71,7 +72,7 @@ public class WallpapersHooks{
private static Boolean eligibleWallpaperFile(File file){
if (file.length() >= 6291456) {
sendToast("Размер файла превышает лимит 6 MB");
sendToast(getString("wallpaper_size_limit"));
removeWallpaper();
return false;
} else {
@@ -131,13 +132,13 @@ public class WallpapersHooks{
String radius = getPreferences().getString("msg_blur_radius", "disabled");
switch(radius) {
case "low":
return AndroidUtils.getString("wallpapers_low");
return getString("wallpapers_low");
case "med":
return AndroidUtils.getString("wallpapers_med");
return getString("wallpapers_med");
case "high":
return AndroidUtils.getString("wallpapers_high");
return getString("wallpapers_high");
default:
return AndroidUtils.getString("wallpapers_disabled");
return getString("wallpapers_disabled");
}
}
@@ -145,11 +146,11 @@ public class WallpapersHooks{
String radius = getPreferences().getString("msg_dim", "disabled");
switch(radius) {
case "dim_black":
return AndroidUtils.getString("wallpapers_dim_black");
return getString("wallpapers_dim_black");
case "dim_white":
return AndroidUtils.getString("wallpapers_dim_white");
return getString("wallpapers_dim_white");
default:
return AndroidUtils.getString("wallpapers_disabled");
return getString("wallpapers_disabled");
}
}
@@ -157,13 +158,13 @@ public class WallpapersHooks{
String radius = getPreferences().getString("msg_mosaic", "disabled");
switch(radius) {
case "low":
return AndroidUtils.getString("wallpapers_low");
return getString("wallpapers_low");
case "med":
return AndroidUtils.getString("wallpapers_med");
return getString("wallpapers_med");
case "high":
return AndroidUtils.getString("wallpapers_high");
return getString("wallpapers_high");
default:
return AndroidUtils.getString("wallpapers_disabled");
return getString("wallpapers_disabled");
}
}
@@ -4,6 +4,7 @@ import static androidx.core.app.ActivityCompat.requestPermissions;
import static ru.vtosters.lite.net.Request.makeRequest;
import static ru.vtosters.lite.proxy.ProxyUtils.getApi;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
import static ru.vtosters.lite.utils.AndroidUtils.getString;
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
import android.Manifest;
@@ -39,7 +40,7 @@ public class ContactsUtils{
Log.d("ContactsUtils", "Result: " + mainJson + ", enabled sync: " + enabled);
} catch (JSONException e) {
Log.d("ContactsUtils", e.getMessage());
sendToast("Ошибка установки контактов");
sendToast(getString("contact_sync_error"));
}
});
}
@@ -47,7 +48,7 @@ public class ContactsUtils{
public static void uploadContacts(Context ctx){
try {
if (ContextCompat.checkSelfPermission(ctx, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
sendToast("Для работы данной функции необходимо выдать право на чтение контактов");
sendToast(getString("contact_permission_toast"));
requestPermissions(LifecycleUtils.getCurrentActivity(), new String[] {Manifest.permission.READ_CONTACTS}, 11111);
} else {
var account = VKAuthUtils.a.a(VKAccountManager.d().Z());
@@ -60,7 +61,7 @@ public class ContactsUtils{
public static void getContactsStatus(Context ctx){
final ProgressDialog progressDialog = new ProgressDialog(ctx);
progressDialog.setMessage("Загрузка данных о контактах...");
progressDialog.setMessage(getString("contact_info_loading"));
progressDialog.show();
var request = new okhttp3.Request.a()
@@ -80,10 +81,10 @@ public class ContactsUtils{
boolean enabledsync = resp.equals("contact");
VkAlertDialog.Builder builder = new VkAlertDialog.Builder(ctx);
builder.setTitle("Синхронизация контактов");
builder.setMessage("Статус синхронизации: " + (enabledsync ? "Включена" : "Отключена"));
builder.setTitle(getString("contact_sync_title"));
builder.setMessage(getString("contact_sync_state") + ": " + getString(enabledsync ? "contact_sync_enabled" : "contact_sync_disabled"));
builder.setCancelable(true);
builder.setPositiveButton((!enabledsync ? "Включить" : "Отключить"), (dialog, which) -> {
builder.setPositiveButton((!enabledsync ? getString("enable") : getString("proxy_disable")), (dialog, which) -> {
setContactsSync(!enabledsync);
});
// builder.setNegativeButton("Импортировать контакты", (dialog, which) -> {
@@ -5,6 +5,7 @@ import static ru.vtosters.lite.proxy.ProxyUtils.getOauth;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue;
import static ru.vtosters.lite.utils.AndroidUtils.getString;
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
import android.util.Log;
@@ -33,7 +34,7 @@ public class VKMeHandler{
setToken(mainJson.getString("access_token"));
} else if (mainJson.has("error_description")){
Log.d("VKMeHandler", mainJson.getString("error_description"));
sendToast("Ошибка входа: " + mainJson.getString("error_description"));
sendToast(getString("auth_error_vtl") + ": " + mainJson.getString("error_description"));
}
} catch (JSONException e) {
+5 -2
View File
@@ -559,8 +559,6 @@
<item>Fade</item>
<item>AndroidX</item>
<item>Слайд</item>
<item>Системный</item>
<item>Системный (task)</item>
</string-array>
<string-array name="language">
<item>Системный</item>
@@ -676,4 +674,9 @@
<item>Затемнить</item>
<item>Осветлить</item>
</string-array>
<string-array name="msg_plurals">
<item>сообщение</item>
<item>сообщения</item>
<item>сообщений</item>
</string-array>
</resources>
+67 -1
View File
@@ -5518,7 +5518,7 @@
<string name="sett_compress_photo_summ">Отключение значительно улучшит качество загружаемых фотографий</string>
<string name="sett_compress_video_summ">Отключение значительно улучшит качество загружаемых видео</string>
<string name="lastfm_auth_title">Аккаунт</string>
<string name="lastfm_auth_error">Ошибка входа</string>
<string name="auth_error_vtl">Ошибка входа</string>
<string name="lastfm_auth_summ">Вы не вошли в аккаунт</string>
<string name="lastfm_logout_success">Вы успешно вышли из учетной записи</string>
<string name="lastfm_enabled_title">Включить скробблинг</string>
@@ -6185,4 +6185,70 @@
<string name="download_dl">Скачать диалог</string>
<string name="download_dl_error">Произошла ошибка при попытке скачать диалог</string>
<string name="saved_as">Сохранено как</string>
<string name="settings_reset_confirm">Вы действительно хотите сбросить настройки?</string>
<string name="system_theme_warning">У вас включена системная тема \nПри переключении темы системная тема будет отключена \n\nВы действительно хотите отключить её?</string>
<string name="compress_wallpaper_title">Сжимать обои</string>
<string name="compress_wallpaper_summ">Значительно ускоряет открытие чатов</string>
<string name="from_lower">от</string>
<string name="chat_export_error">ошибка</string>
<string name="chat_export_title">Экспорт из VTLite</string>
<string name="chat_export_header">Экспорт истории чата</string>
<string name="chat_export_avatar_update">Обновил фотографию беседы</string>
<string name="chat_export_avatar_remove">Удалил фотографию беседы</string>
<string name="chat_export_chat_created">Создал беседу</string>
<string name="chat_export_name_changed">Сменил название беседы</string>
<string name="chat_export_to">на</string>
<string name="chat_export_user_added">Добавил</string>
<string name="chat_export_user_kicked">Исключил</string>
<string name="chat_export_type_group">группу</string>
<string name="chat_export_type_user">пользователя</string>
<string name="chat_export_msg_pinned">Закрепил сообщение</string>
<string name="chat_export_msg_unpinned">Открепил сообщение</string>
<string name="chat_export_join_by_link">Вступил в беседу по ссылке</string>
<string name="chat_export_chat_screenshot">Сделал скриншот беседы</string>
<string name="chat_export_type_photo">фотография</string>
<string name="chat_export_type_doc">документ</string>
<string name="chat_export_type_link">ссылка</string>
<string name="chat_export_type_wallpost">запись на стене</string>
<string name="chat_export_type_audiomsg">голосовое сообщение</string>
<string name="chat_export_type_audio">аудиозапись</string>
<string name="chat_export_type_video">видеозапись</string>
<string name="chat_export_type_wallreply">комментарий на стене</string>
<string name="chat_export_type_story">история</string>
<string name="chat_export_type_podcast">подкаст</string>
<string name="chat_export_type_miniapp">мини-приложение</string>
<string name="chat_export_type_playlist">плейлист</string>
<string name="chat_export_poll_anon">анонимный</string>
<string name="chat_export_poll_publ">публичный</string>
<string name="chat_export_type_poll">опрос</string>
<string name="chat_export_type_market">товар</string>
<string name="chat_export_poll_voted">Проголосовало</string>
<string name="chat_export_users_name">чел.</string>
<string name="chat_export_video_nolinks">ссылки отсутствуют</string>
<string name="delete_video_history_confirm">Вы действительно хотите очистить историю видео?</string>
<string name="wallpaper_size_limit">Размер файла превышает лимит 6 MB</string>
<string name="contact_sync_error">Ошибка установки контактов</string>
<string name="contact_permission_toast">Для работы данной функции необходимо выдать разрешение на чтение контактов</string>
<string name="contact_info_loading">Загрузка данных о контактах...</string>
<string name="contact_sync_title">Синхронизация контактов</string>
<string name="contact_sync_state">Статус синхронизации</string>
<string name="contact_sync_enabled">Включена</string>
<string name="contact_sync_disabled">Отключена</string>
<string name="donotgetads_title">Не пытаться получать рекламу</string>
<string name="donotgetads_summ">Не запрашивать рекламу и рекомендации\n\nМогут быть проблемы</string>
<string name="force_disable_psm_title">Не отправлять информацию о батарее</string>
<string name="force_disable_psm_summ">Включение этой функции скроет информацию о состоянии вашего устройства в режиме экономии батареи и ВКонтакте будет отправлять вам медиаконтент без сильного сжатия и блюра</string>
</resources>
+5 -4
View File
@@ -656,8 +656,6 @@
<item>Fade</item>
<item>AndroidX</item>
<item>Slide</item>
<item>System</item>
<item>System task</item>
</string-array>
<string-array name="animations_values">
<item>noanim</item>
@@ -665,8 +663,6 @@
<item>frag_fade</item>
<item>frag_enter</item>
<item>slide</item>
<item>system</item>
<item>system_task</item>
</string-array>
<string-array name="animations2">
<item>No Animation</item>
@@ -878,4 +874,9 @@
<item>Dim</item>
<item>Lighten</item>
</string-array>
<string-array name="msg_plurals">
<item>message</item>
<item>messages</item>
<item>messages</item>
</string-array>
</resources>
+67 -1
View File
@@ -5652,7 +5652,7 @@ Expand text..."</string>
<string name="sett_compress_photo_summ">Disabling will significantly improve the quality of uploaded photos</string>
<string name="sett_compress_video_summ">Disabling will significantly improve the quality of uploaded videos</string>
<string name="lastfm_auth_title">Account</string>
<string name="lastfm_auth_error">Login failed</string>
<string name="auth_error_vtl">Login failed</string>
<string name="lastfm_auth_summ">You are not logged in</string>
<string name="lastfm_logout_success">You have successfully logged out</string>
<string name="lastfm_enabled_title">Enable scrobbling</string>
@@ -6323,4 +6323,70 @@ May look like a fake leaving the online"</string>
<string name="download_dl">Download dialog</string>
<string name="download_dl_error">An error occurred while trying to download the dialog</string>
<string name="saved_as">Saved as</string>
<string name="settings_reset_confirm">Are you sure you want to reset your settings?</string>
<string name="system_theme_warning">You have the system theme enabled \nWhen you switch the theme, the system theme will be disabled \n\nAre you sure you want to disable it?</string>
<string name="compress_wallpaper_title">Compress wallpaper</string>
<string name="compress_wallpaper_summ">Greatly speeds up opening chats</string>
<string name="from_lower">from</string>
<string name="chat_export_error">error</string>
<string name="chat_export_title">Export from VTLite</string>
<string name="chat_export_header">Export chat history</string>
<string name="chat_export_avatar_update">Updated the chat photo</string>
<string name="chat_export_avatar_remove">Removed the chat photo</string>
<string name="chat_export_chat_created">Created a chat</string>
<string name="chat_export_name_changed">Changed the name of the conversation</string>
<string name="chat_export_to">to</string>
<string name="chat_export_user_added">Added</string>
<string name="chat_export_user_kicked">Kicked</string>
<string name="chat_export_type_group">group</string>
<string name="chat_export_type_user">user</string>
<string name="chat_export_msg_pinned">Pinned message</string>
<string name="chat_export_msg_unpinned">Unpinned message</string>
<string name="chat_export_join_by_link">Joined a chat by link</string>
<string name="chat_export_chat_screenshot">Took a screenshot of the conversation</string>
<string name="chat_export_type_photo">photo</string>
<string name="chat_export_type_doc">document</string>
<string name="chat_export_type_link">link</string>
<string name="chat_export_type_wallpost">wall post</string>
<string name="chat_export_type_audiomsg">voice message</string>
<string name="chat_export_type_audio">audio</string>
<string name="chat_export_type_video">video</string>
<string name="chat_export_type_wallreply">wall reply</string>
<string name="chat_export_type_story">story</string>
<string name="chat_export_type_podcast">podcast</string>
<string name="chat_export_type_miniapp">miniapp</string>
<string name="chat_export_type_playlist">playlist</string>
<string name="chat_export_poll_anon">anonymous</string>
<string name="chat_export_poll_publ">public</string>
<string name="chat_export_type_poll">poll</string>
<string name="chat_export_type_market">product</string>
<string name="chat_export_poll_voted">Voted</string>
<string name="chat_export_users_name">user(s)</string>
<string name="chat_export_video_nolinks">no links</string>
<string name="delete_video_history_confirm">Are you sure you want to clear your video history?</string>
<string name="wallpaper_size_limit">File size exceeds 6 MB limit</string>
<string name="contact_sync_error">Error syncing contacts</string>
<string name="contact_permission_toast">For this function to work, you must grant permission to read contacts</string>
<string name="contact_info_loading">Loading contact data...</string>
<string name="contact_sync_title">Sync contacts</string>
<string name="contact_sync_state">Sync status</string>
<string name="contact_sync_enabled">Enabled</string>
<string name="contact_sync_disabled">Disabled</string>
<string name="donotgetads_title">Don\'t try to get ads</string>
<string name="donotgetads_summ">Don\'t request ads and recommendations\n\nMay cause problems</string>
<string name="force_disable_psm_title">Don\'t send battery information</string>
<string name="force_disable_psm_summ">Enabling this feature will hide information about the state of your device in battery saving mode and VK will send you media content without strong compression and blur</string>
</resources>
+4 -4
View File
@@ -134,12 +134,12 @@
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="donotgetads"
android:summary="Не запрашивать рекламу и рекомендации\n\nМогуть быть проблемы"
android:title="Не пытаться получать рекламу" />
android:summary="@string/donotgetads_summ"
android:title="@string/donotgetads_title" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="force_disable_psm"
android:summary="Включение этой функции скроет информацию о состоянии вашего устройства в режиме экономии батареи и ВКонтакте будет отправлять вам медиаконтент без сильного сжатия и блюра"
android:title="Не отправлять информацию о батарее" />
android:summary="@string/force_disable_psm_summ"
android:title="@string/force_disable_psm_title" />
</PreferenceCategory>
</PreferenceScreen>
+2 -2
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Синхронизация контактов">
<PreferenceCategory android:title="@string/contact_sync_title">
<Preference
android:key="contacts_sync"
android:title="Синхронизация контактов" />
android:title="@string/contact_sync_title" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/other_fix_app">
<Preference