From 270fca127b4d70099ef3d1afa61e023156f0a8d4 Mon Sep 17 00:00:00 2001 From: Erik Kiznov <46452865+k1zn@users.noreply.github.com> Date: Sun, 18 Sep 2022 13:00:15 +0500 Subject: [PATCH] [main] translate all strings --- .../lite/downloaders/MessagesDownloader.java | 78 ++++++++++--------- .../ru/vtosters/lite/music/Scrobbler.java | 2 +- .../lite/ui/dialogs/ThemeChanging.java | 11 ++- .../lite/ui/fragments/MediaFragment.java | 2 +- .../lite/ui/fragments/OtherFragment.java | 2 +- .../lite/ui/fragments/VTSettings.java | 10 +-- .../ui/wallpapers/WallpaperMenuFragment.java | 2 +- .../lite/ui/wallpapers/WallpapersHooks.java | 25 +++--- .../ru/vtosters/lite/utils/ContactsUtils.java | 13 ++-- .../ru/vtosters/lite/utils/VKMeHandler.java | 3 +- smali/res/values-ru/arrays.xml | 7 +- smali/res/values-ru/strings.xml | 68 +++++++++++++++- smali/res/values/arrays.xml | 9 ++- smali/res/values/strings.xml | 68 +++++++++++++++- smali/res/xml/preferences_feed.xml | 8 +- smali/res/xml/preferences_other.xml | 4 +- 16 files changed, 225 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java index 88f0cb5ae..9dcf6e6f5 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java @@ -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 "Экспорт из VTLite"; + return "" + getString("chat_export_title") + ""; } @Override @@ -286,7 +288,7 @@ public class MessagesDownloader{ @Override String provideHeader(String dialogName, String date){ - return "

VTLite

Экспорт истории чата (" + date + ")
"; + return "

VTLite

" + getString("chat_export_header") + " (" + date + ")
"; } @Override @@ -307,13 +309,13 @@ public class MessagesDownloader{ } String chatAction = (message.chat_action != null) ? getHtmlForChatAction(message.chat_action) : ""; - String attaches = (message.attachments.size() > 0) ? "

Вложения: " + getHtmlForAttach(message.attachments) + "

" : ""; + String attaches = (message.attachments.size() > 0) ? "

" + getString("attachments") + ": " + getHtmlForAttach(message.attachments) + "

" : ""; 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 "
" + - "

от " + user.firstName + " " + user.lastName + " " + formatTime(message.date) + "

" + // TODO photo100 + "

" + getString("from_lower") + " " + user.firstName + " " + user.lastName + " " + formatTime(message.date) + "

" + // TODO photo100 "

" + mentionsReplace(message.text) + "

" + 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 "" + "
" + - "

Пересланное сообщение

" + + "

" + getString("vkim_msg_fwd_single") + "

" + "

" + user.firstName + " " + user.lastName + ": " + text + "

" + "
" + "
"; @@ -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(" @").append(userLink).append(""); @@ -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(" @").append(userLink).append(""); @@ -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("фотография"); + rs.append("").append(getString("chat_export_type_photo")).append(""); break; case "doc": - rs.append("документ"); + rs.append("").append(getString("chat_export_type_doc")).append(""); break; case "link": - rs.append("ссылка"); + rs.append("").append(getString("chat_export_type_link")).append(""); break; case "wall": - rs.append("запись на стене"); + rs.append("").append(getString("chat_export_type_wallpost")).append(""); break; case "sticker": rs.append(""); break; case "audio_message": - rs.append("голосовое сообщение"); + rs.append("").append(getString("chat_export_type_audiomsg")).append(""); 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("комментарий на стене"); + rs.append("").append(getString("chat_export_type_wallreply")).append(""); break; case "story": var story_link = "https://" + VK_DOMAIN + "/story" + item.optString("owner_id") + "_" + item.optString("id"); - rs.append("история"); + rs.append("").append(getString("chat_export_type_story")).append(""); break; case "podcast": var podcast_link = "https://" + VK_DOMAIN + "/podcast" + item.optString("owner_id") + "_" + item.optString("id"); - rs.append("подкаст"); + rs.append("").append(getString("chat_export_type_podcast")).append(""); break; case "gift": rs.append(""); @@ -532,25 +534,25 @@ public class MessagesDownloader{ if (app != null) { var miniapp_link = "https://" + VK_DOMAIN + "/app" + app.optString("id"); - rs.append("мини-приложение"); + rs.append("").append(getString("chat_export_type_miniapp")).append(""); 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("плейлист (").append(item.optString("title")).append(")"); + rs.append("").append(getString("chat_export_type_playlist")).append(" (").append(item.optString("title")).append(")"); 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("товар"); + rs.append("").append(getString("chat_export_type_market")).append(""); 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("

").append(jsonObject.optString("text")).append(" · ").append(jsonObject.optString("votes")).append(" (").append(jsonObject.optString("rate")).append("%)

"); } - pollHtml.append("

Проголосовало ").append(poll.optString("votes")).append(" чел.

"); + pollHtml.append("

").append(getString("chat_export_poll_voted")).append(" ").append(poll.optString("votes")).append(" ").append(getString("chat_export_users_name")).append("

"); return pollHtml.append("
").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(); diff --git a/app/src/main/java/ru/vtosters/lite/music/Scrobbler.java b/app/src/main/java/ru/vtosters/lite/music/Scrobbler.java index fc9b94711..44337e43f 100644 --- a/app/src/main/java/ru/vtosters/lite/music/Scrobbler.java +++ b/app/src/main/java/ru/vtosters/lite/music/Scrobbler.java @@ -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 diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java index 6889428e5..c22ff6f36 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java @@ -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); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java index 796e8f0f4..945552bd7 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java @@ -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(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java index 44a694476..4d5acb444 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java @@ -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(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java index 67baf6d71..d015b0986 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java @@ -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; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java index bc87313a0..6ff64c0b1 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java @@ -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(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java index 9c5839214..249b10e82 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java @@ -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"); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java index 1ab2472a5..8e028a677 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java @@ -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) -> { diff --git a/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java b/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java index 20f57b731..26facc56f 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java +++ b/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java @@ -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) { diff --git a/smali/res/values-ru/arrays.xml b/smali/res/values-ru/arrays.xml index 70487b68a..f459cf146 100644 --- a/smali/res/values-ru/arrays.xml +++ b/smali/res/values-ru/arrays.xml @@ -559,8 +559,6 @@ Fade AndroidX Слайд - Системный - Системный (task) Системный @@ -676,4 +674,9 @@ Затемнить Осветлить + + сообщение + сообщения + сообщений + diff --git a/smali/res/values-ru/strings.xml b/smali/res/values-ru/strings.xml index dcc8259e2..64d9c9f79 100644 --- a/smali/res/values-ru/strings.xml +++ b/smali/res/values-ru/strings.xml @@ -5518,7 +5518,7 @@ Отключение значительно улучшит качество загружаемых фотографий Отключение значительно улучшит качество загружаемых видео Аккаунт - Ошибка входа + Ошибка входа Вы не вошли в аккаунт Вы успешно вышли из учетной записи Включить скробблинг @@ -6185,4 +6185,70 @@ Скачать диалог Произошла ошибка при попытке скачать диалог + + Сохранено как + Вы действительно хотите сбросить настройки? + У вас включена системная тема \nПри переключении темы системная тема будет отключена \n\nВы действительно хотите отключить её? + + Сжимать обои + Значительно ускоряет открытие чатов + + от + ошибка + + Экспорт из VTLite + Экспорт истории чата + Обновил фотографию беседы + Удалил фотографию беседы + Создал беседу + Сменил название беседы + на + Добавил + Исключил + группу + пользователя + Закрепил сообщение + Открепил сообщение + Вступил в беседу по ссылке + Сделал скриншот беседы + + фотография + документ + ссылка + запись на стене + голосовое сообщение + аудиозапись + видеозапись + комментарий на стене + история + подкаст + мини-приложение + плейлист + анонимный + публичный + опрос + товар + + Проголосовало + чел. + + ссылки отсутствуют + + Вы действительно хотите очистить историю видео? + + Размер файла превышает лимит 6 MB + + Ошибка установки контактов + Для работы данной функции необходимо выдать разрешение на чтение контактов + Загрузка данных о контактах... + Синхронизация контактов + Статус синхронизации + Включена + Отключена + + Не пытаться получать рекламу + Не запрашивать рекламу и рекомендации\n\nМогут быть проблемы + + Не отправлять информацию о батарее + Включение этой функции скроет информацию о состоянии вашего устройства в режиме экономии батареи и ВКонтакте будет отправлять вам медиаконтент без сильного сжатия и блюра \ No newline at end of file diff --git a/smali/res/values/arrays.xml b/smali/res/values/arrays.xml index 139aef502..32f59254c 100644 --- a/smali/res/values/arrays.xml +++ b/smali/res/values/arrays.xml @@ -656,8 +656,6 @@ Fade AndroidX Slide - System - System task noanim @@ -665,8 +663,6 @@ frag_fade frag_enter slide - system - system_task No Animation @@ -878,4 +874,9 @@ Dim Lighten + + message + messages + messages + diff --git a/smali/res/values/strings.xml b/smali/res/values/strings.xml index 789e6e17b..34ba4624c 100644 --- a/smali/res/values/strings.xml +++ b/smali/res/values/strings.xml @@ -5652,7 +5652,7 @@ Expand text..." Disabling will significantly improve the quality of uploaded photos Disabling will significantly improve the quality of uploaded videos Account - Login failed + Login failed You are not logged in You have successfully logged out Enable scrobbling @@ -6323,4 +6323,70 @@ May look like a fake leaving the online" Download dialog An error occurred while trying to download the dialog + + Saved as + Are you sure you want to reset your settings? + 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? + + Compress wallpaper + Greatly speeds up opening chats + + from + error + + Export from VTLite + Export chat history + Updated the chat photo + Removed the chat photo + Created a chat + Changed the name of the conversation + to + Added + Kicked + group + user + Pinned message + Unpinned message + Joined a chat by link + Took a screenshot of the conversation + + photo + document + link + wall post + voice message + audio + video + wall reply + story + podcast + miniapp + playlist + anonymous + public + poll + product + + Voted + user(s) + + no links + + Are you sure you want to clear your video history? + + File size exceeds 6 MB limit + + Error syncing contacts + For this function to work, you must grant permission to read contacts + Loading contact data... + Sync contacts + Sync status + Enabled + Disabled + + Don\'t try to get ads + Don\'t request ads and recommendations\n\nMay cause problems + + Don\'t send battery information + 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 diff --git a/smali/res/xml/preferences_feed.xml b/smali/res/xml/preferences_feed.xml index 57d107451..e23ad864c 100644 --- a/smali/res/xml/preferences_feed.xml +++ b/smali/res/xml/preferences_feed.xml @@ -134,12 +134,12 @@ + android:summary="@string/donotgetads_summ" + android:title="@string/donotgetads_title" /> + android:summary="@string/force_disable_psm_summ" + android:title="@string/force_disable_psm_title" /> diff --git a/smali/res/xml/preferences_other.xml b/smali/res/xml/preferences_other.xml index 9aaf45c0c..2d207b430 100644 --- a/smali/res/xml/preferences_other.xml +++ b/smali/res/xml/preferences_other.xml @@ -1,9 +1,9 @@ - + + android:title="@string/contact_sync_title" />