diff --git a/README.md b/README.md
index a6d8433bd..62642defe 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,9 @@
- An open source, cross-platform Spotify client that doesn't require Premium nor uses Electron!
- That uses Spotify's data/discovery API and YouTube (or Piped.video) as audio source
+ An open source, cross-platform Spotify client compatible across multiple platforms
+ utilizing Spotify's data API and YouTube (or Piped.video) as an audio source,
+ eliminating the need for Spotify Premium and Electron.
@@ -37,7 +38,7 @@
### ❌ Unsupported features
-- 🗣️ **Spotify Shows & Podcasts:** Shows and Podcasts can **never be supported** because the audio tracks are _only_ available on Spotify and accessing them would require Spotify Premium.
+- 🗣️ **Spotify Shows & Podcasts:** Shows and Podcasts can
**never be supported** because the audio tracks are _only_ available on Spotify and accessing them would require Spotify Premium.
- 🎧 **Spotify Listen Along:** [Coming soon!](https://github.com/KRTirtho/spotube/issues/8)
## 📜 ⬇️ Installation guide
diff --git a/lib/collections/language_codes.dart b/lib/collections/language_codes.dart
index cdb6a76dd..80b7db1db 100644
--- a/lib/collections/language_codes.dart
+++ b/lib/collections/language_codes.dart
@@ -540,10 +540,10 @@ abstract class LanguageLocals {
// name: "Romanian, Moldavian, Moldovan",
// nativeName: "română",
// ),
- // "ru": const ISOLanguageName(
- // name: "Russian",
- // nativeName: "русский язык",
- // ),
+ "ru": const ISOLanguageName(
+ name: "Russian",
+ nativeName: "русский язык",
+ ),
// "sa": const ISOLanguageName(
// name: "Sanskrit (Saṁskṛta)",
// nativeName: "संस्कृतम्",
diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb
new file mode 100644
index 000000000..e92797a47
--- /dev/null
+++ b/lib/l10n/app_ru.arb
@@ -0,0 +1,262 @@
+{
+ "guest": "Гость",
+ "browse": "Обзор",
+ "search": "Поиск",
+ "library": "Библиотека",
+ "lyrics": "Текст",
+ "settings": "Настройки",
+ "genre_categories_filter": "Фильтр по категориям или жанрам...",
+ "genre": "Жанр",
+ "personalized": "Персонализированный",
+ "featured": "Будующий",
+ "new_releases": "Новые",
+ "songs": "Песни",
+ "playing_track": "Играет {track}",
+ "queue_clear_alert": "Это удалит текущую очередь. {track_length} треков будет удалено. Вы хотите продолжить?",
+ "load_more": "Загрузить больше",
+ "playlists": "Плейлисты",
+ "artists": "Исполнители",
+ "albums": "Альбомы",
+ "tracks": "Трек",
+ "downloads": "Загрузки",
+ "filter_playlists": "Применить фильтры к вашим плейлистам...",
+ "liked_tracks": "Понравившиеся треки",
+ "liked_tracks_description": "Все понравившиеся треки",
+ "create_playlist": "Создание плейлиста",
+ "create_a_playlist": "Создать плейлист",
+ "create": "Создать",
+ "cancel": "Отменить",
+ "playlist_name": "Назвать плейлист",
+ "name_of_playlist": "Название плейлиста",
+ "description": "Описание",
+ "public": "Публичные",
+ "collaborative": "Совместный",
+ "search_local_tracks": "Поиск песен на вашем устройстве...",
+ "play": "Играть",
+ "delete": "Удалить",
+ "none": "Никто",
+ "sort_a_z": "Сортировка по алфавиту",
+ "sort_z_a": "Сортировка по алфавиту в обратную сторону",
+ "sort_artist": "Сортировать по исполнителю",
+ "sort_album": "Сортировать по альбомам",
+ "sort_tracks": "Сортировать треки",
+ "currently_downloading": "Загружается ({tracks_length})",
+ "cancel_all": "Отменить все",
+ "filter_artist": "Фильтровать по исполнителю...",
+ "followers": "{followers} Подписчики",
+ "add_artist_to_blacklist": "Добавить исполнителя в черный список",
+ "top_tracks": "Чарт",
+ "fans_also_like": "Поклонникам также нравится",
+ "loading": "Загрузка...",
+ "artist": "Исполнитель",
+ "blacklisted": "Внесен в черный список",
+ "following": "Подписаны",
+ "follow": "Подписаться",
+ "artist_url_copied": "URL-адрес исполнителя скопирован в буфер обмена",
+ "added_to_queue": "Добавлено {tracks} треков в очередь",
+ "filter_albums": "Фильтровать альбомы...",
+ "synced": "Синхронизировано",
+ "plain": "Обычный",
+ "shuffle": "Перемешать",
+ "search_tracks": "Поиск треков...",
+ "released": "Дата выхода",
+ "error": "Ошибка {error}",
+ "title": "Заголовок",
+ "time": "Время",
+ "more_actions": "Больше действий",
+ "download_count": "Скачать ({count})",
+ "add_count_to_playlist": "Добавить ({count}) в плейлист",
+ "add_count_to_queue": "Добавить ({count}) в очередь",
+ "play_count_next": "Воспроизвести ({count}) следующий",
+ "album": "Альбом",
+ "copied_to_clipboard": "Скопировано {data} в буфер обмена",
+ "add_to_following_playlists": "Добавить {track} в этот плейлист",
+ "add": "Добавить",
+ "added_track_to_queue": "Добавлен {track} в очередь",
+ "add_to_queue": "Добавить в очередь",
+ "track_will_play_next": "{track} будет воспроизведен следующим",
+ "play_next": "Воспроизвести следующий",
+ "removed_track_from_queue": "{track} удален из очереди",
+ "remove_from_queue": "Удалить из очереди",
+ "remove_from_favorites": "Удалить из избранного",
+ "save_as_favorite": "Сохранить в избранное",
+ "add_to_playlist": "Добавить в плейлист",
+ "remove_from_playlist": "Удалить из плейлиста",
+ "add_to_blacklist": "Добавить в черный список",
+ "remove_from_blacklist": "Удалить из черного списка",
+ "share": "Поделиться",
+ "mini_player": "Мини-плеер",
+ "slide_to_seek": "Потяните для перемотки вперед или назад",
+ "shuffle_playlist": "Перемешать плейлист",
+ "unshuffle_playlist": "Снять перемешивание плейлиста",
+ "previous_track": "Предыдущий трек",
+ "next_track": "Следующий трек",
+ "pause_playback": "Пауза воспроизведения",
+ "resume_playback": "Возобновить воспроизведение",
+ "loop_track": "Циклический трек",
+ "repeat_playlist": "Повторите плейлист",
+ "queue": "Очередь",
+ "alternative_track_sources": "Альтернативные источники треков",
+ "download_track": "Скачать трек",
+ "tracks_in_queue": "{tracks} треков в очереди",
+ "clear_all": "Очистить все",
+ "show_hide_ui_on_hover": "Показать/Скрыть интерфейс при наведении",
+ "always_on_top": "Всегда сверху",
+ "exit_mini_player": "Выйти из мини-плеера",
+ "download_location": "Место загрузки",
+ "account": "Аккаунт",
+ "login_with_spotify": "Войдите с помощью своей учетной записи Spotify",
+ "connect_with_spotify": "Подключитесь к Spotify",
+ "logout": "Выйти",
+ "logout_of_this_account": "Выйдите из этого аккаунта",
+ "language_region": "Язык и регион",
+ "language": "Язык",
+ "system_default": "Системное значение по умолчанию",
+ "market_place_region": "Региональное пространство",
+ "recommendation_country": "Страна рекомендаций",
+ "appearance": "Внешний вид",
+ "layout_mode": "Режим компоновки",
+ "override_layout_settings": "Изменить настройки режима адаптивной компоновки",
+ "adaptive": "Адаптивный",
+ "compact": "Компактный",
+ "extended": "Расширенный",
+ "theme": "Тема",
+ "dark": "Тёмная",
+ "light": "Светлая",
+ "system": "Системная",
+ "accent_color": "Акцентный цвет",
+ "sync_album_color": "Синхронизировать цвет альбома",
+ "sync_album_color_description": "Использует основной цвет обложки альбома как цвет акцента",
+ "playback": "Воспроизведение",
+ "audio_quality": "Качество звука",
+ "high": "Высокое",
+ "low": "Низкое",
+ "pre_download_play": "Предварительная загрузка и воспроизведение",
+ "pre_download_play_description": "Вместо потоковой передачи аудио используйте загруженные байты и воспроизводьте их (рекомендуется для пользователей с высокой пропускной способностью)",
+ "skip_non_music": "Пропускать немузыкальные сегменты (SponsorBlock)",
+ "blacklist_description": "Черный список треков и артистов",
+ "wait_for_download_to_finish": "Пожалуйста, дождитесь завершения текущей загрузки",
+ "download_lyrics": "Скачивать тексты вместе с треками",
+ "desktop": "Компьютер",
+ "close_behavior": "Поведение при закрытии",
+ "close": "Закрыть",
+ "minimize_to_tray": "Свернуть",
+ "show_tray_icon": "Показать значок на панели задач",
+ "about": "О",
+ "u_love_spotube": "Мы знаем что вам нравится Spotube",
+ "check_for_updates": "Проверьте наличие обновлений",
+ "about_spotube": "О Spotube",
+ "blacklist": "Чёрный список",
+ "please_sponsor": "Стать спосором/поддержать",
+ "spotube_description": "Spotube – это легкий, кросс-платформенный клиент Spotify, предоставляющий бесплатный доступ для всех пользователей",
+ "version": "Версия",
+ "build_number": "Номер сборки",
+ "founder": "Создатель",
+ "repository": "Репозиторий",
+ "bug_issues": "Ошибки и проблемы",
+ "made_with": "Сделано Bangladesh🇧🇩 с ❤️",
+ "kingkor_roy_tirtho": "Kingkor Roy Tirtho",
+ "copyright": "© 2021-{current_year} Kingkor Roy Tirtho",
+ "license": "Лицензия",
+ "add_spotify_credentials": "Добавьте ваши учетные данные Spotify, чтобы начать",
+ "credentials_will_not_be_shared_disclaimer": "Не беспокойся, никакая личная информация не собирается и не передается",
+ "know_how_to_login": "Не знаете, как это сделать?",
+ "follow_step_by_step_guide": "Следуйте пошаговому руководству",
+ "spotify_cookie": "Spotify {name} Cookie",
+ "cookie_name_cookie": "{name} Cookie",
+ "fill_in_all_fields": "Пожалуйста, заполните все поля",
+ "submit": "Отправить",
+ "exit": "Выйти",
+ "previous": "Предыдущий",
+ "next": "Следующий",
+ "done": "Готово",
+ "step_1": "Шаг 1",
+ "first_go_to": "Сначала перейдите в",
+ "login_if_not_logged_in": "и войдите или зарегистрируйтесь, если вы не вошли в систему",
+ "step_2": "Шаг 2",
+ "step_2_steps": "1. После входа в систему нажмите F12 или щелкните правой кнопкой мыши > «Проверить», чтобы открыть инструменты разработчика браузера.\n2. Затем перейдите на вкладку \"Application\" (Chrome, Edge, Brave и т.д..) or \"Storage\" (Firefox, Palemoon и т.д..)\n3. Перейдите в раздел \"Cookies\", а затем в подраздел \"https://accounts.spotify.com\"",
+ "step_3": "Шаг 3",
+ "step_3_steps": "Скопируйте значения \"sp_dc\" и \"sp_key\" (или sp_gaid) Cookies",
+ "success_emoji": "Успешно 🥳",
+ "success_message": "Теперь вы успешно вошли в свою учетную запись Spotify. Отличная работа, приятель!",
+ "step_4": "Шаг 4",
+ "step_4_steps": "Вставьте скопированные \"sp_dc\" и \"sp_key\" (или sp_gaid) значения в соответствующие поля",
+ "something_went_wrong": "Что-то пошло не так",
+ "piped_instance": "Экземпляр сервера Piped",
+ "piped_description": "Серверный экземпляр Piped для сопоставления треков",
+ "piped_warning": "Некоторые из них могут работать неправильно, поэтому используйте на свой страх и риск",
+ "generate_playlist": "Создать плейлист",
+ "track_exists": "Трек {track} уже существует",
+ "replace_downloaded_tracks": "Заменить все ранее скачанные треки",
+ "skip_download_tracks": "Пропустить загрузку всех ранее скачанных треков",
+ "do_you_want_to_replace": "Хотите заменить существующий трек??",
+ "replace": "Заменить",
+ "skip": "Пропустить",
+ "select_up_to_count_type": "Выберите до {count} {type}",
+ "select_genres": "Выберите жанр",
+ "add_genres": "Добавить жанр",
+ "country": "Страна",
+ "number_of_tracks_generate": "Количество треков для создания",
+ "acousticness": "Акустичность",
+ "danceability": "Ритмичность",
+ "energy": "Энергичность",
+ "instrumentalness": "Инструментальность",
+ "liveness": "Живость",
+ "loudness": "Громкость",
+ "speechiness": "Речевой характер",
+ "valence": "Значимость",
+ "popularity": "Популярность",
+ "key": "Ключ",
+ "duration": "Продолжительность (с)",
+ "tempo": "Время (BPM)",
+ "mode": "Режим",
+ "time_signature": "Тактовый размер",
+ "short": "Короткий",
+ "medium": "Средний",
+ "long": "Длинный",
+ "min": "Минимум",
+ "max": "Максимум",
+ "target": "Цель",
+ "moderate": "Отобрать",
+ "deselect_all": "Убрать выделение со всех",
+ "select_all": "Выделить все",
+ "are_you_sure": "Вы уверены?",
+ "generating_playlist": "Создание собственного плейлиста...",
+ "selected_count_tracks": "Выбрано {count} треков",
+ "download_warning": "При скачивании всех треков пакетом вы фактически занимаетесь пиратством и наносите ущерб творческому обществу музыки. Надеюсь, что вы осознаете это. Всегда старайтесь уважать и поддерживать усилия исполнителей, вложенные в их творчество",
+ "download_ip_ban_warning": "Кроме того, стоит учитывать, что из-за чрезмерного количества запросов на скачивание ваш IP-адрес может быть заблокирован на YouTube. Блокировка IP означает, что вы не сможете использовать YouTube (даже если вы вошли в свою учетную запись) в течение, как минимум, 2-3 месяцев с того устройства, с которого были сделаны эти запросы. Важно заметить, что Spotube не несет ответственности за такие события",
+ "by_clicking_accept_terms": "Нажимая 'принять', вы соглашаетесь с следующими условиями:",
+ "download_agreement_1": "Я осознаю, что я использую музыку незаконно. Это плохо.",
+ "download_agreement_2": "Я бы поддержал исполнителей, где только смог, и делаю это, так как не имею средств на приобретение их творчества",
+ "download_agreement_3": "Я полностью осознаю, что мой IP-адрес может быть заблокирован на YouTube, и я не считаю Spotube или его владельцев/соавторов ответственными за какие-либо неприятности, вызванные моими текущими действиями",
+ "decline": "Отклонить",
+ "accept": "Принять",
+ "details": "Детали",
+ "youtube": "YouTube",
+ "channel": "Канал",
+ "likes": "Нравится",
+ "dislikes": "Не нравится",
+ "views": "Просмотров",
+ "streamUrl": "URL-адрес потока",
+ "stop": "Остановить",
+ "sort_newest": "Сортировать по самым новым добавленным",
+ "sort_oldest": "Сортировать по самым старым добавленным",
+ "sleep_timer": "Таймер сна",
+ "mins": "{minutes} Минут",
+ "hours": "{hours} Часы",
+ "hour": "{hours} Час",
+ "custom_hours": "Пользовательские часы",
+ "logs": "Журналы",
+ "developers": "Разработчики",
+ "not_logged_in": "Вы не выполнили вход",
+ "search_mode": "Режим поиска",
+ "youtube_api_type": "Тип API",
+ "ok": "Ок",
+ "failed_to_encrypt": "Не удалось зашифровать",
+ "encryption_failed_warning": "Spotube использует шифрование для безопасного хранения ваших данных. Однако в этом случае произошла ошибка. Поэтому будет использовано небезопасное хранилище.\nЕсли вы используете Linux, убедитесь, что у вас установлен какой-либо инструмент для работы с секретами (gnome-keyring, kde-wallet, keepassxc и т.д.)",
+ "querying_info": "Запрос информации...",
+ "piped_api_down": "Piped API не отвечает",
+ "piped_down_error_instructions": "Экземпляр Piped {pipedInstance} в данный момент недоступен.\n\nВы можете либо изменить экземпляр, либо переключиться на использование официального API YouTube.\n\nНе забудьте перезапустить приложение после внесенных изменений",
+ "you_are_offline": "Нет доступа к сети",
+ "connection_restored": "Ваше интернет-соединение восстановлено"
+}
\ No newline at end of file
diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart
index f1efdb753..838ddee7a 100644
--- a/lib/l10n/l10n.dart
+++ b/lib/l10n/l10n.dart
@@ -19,6 +19,7 @@ class L10n {
const Locale('ja', 'JP'),
const Locale('zh', 'CN'),
const Locale('pl', 'PL'),
+ const Locale('ru', 'RU'),
const Locale('pt', 'PT'),
];
}