diff --git a/src/lang/ru.js b/src/lang/ru.js
new file mode 100644
index 0000000..8cbb52b
--- /dev/null
+++ b/src/lang/ru.js
@@ -0,0 +1,344 @@
+const ru = {
+ globals: {
+ welcome: 'Добро пожаловать в deemix',
+ back: 'назад',
+ loading: 'загрузка',
+ download: 'Скачать {0}',
+ by: '{0}',
+ in: 'из {0}',
+ download_hint: 'Скачать',
+ play_hint: 'Прослушать',
+ toggle_download_tab_hint: 'Показать/Свернуть',
+ clean_queue_hint: 'Очистить завершённые',
+ cancel_queue_hint: 'Очистить всё',
+ listTabs: {
+ empty: '',
+ all: 'все',
+ top_result: 'лучший результат',
+ album: 'альбом | альбомы',
+ artist: 'исполнитель | исполнители',
+ single: 'сингл | синглы',
+ title: 'название | названия',
+ track: 'трек | треки',
+ trackN: '0 треков | {n} трек | {n} трека | {n} треков',
+ releaseN: '0 релизов | {n} релиз | {n} релиза | {n} релизов',
+ playlist: 'плейлист | плейлисты',
+ compile: 'сборник | сборники',
+ ep: 'ep | eps',
+ spotifyPlaylist: 'плейлисты spotify | плейлисты spotify',
+ releaseDate: 'Дата выхода',
+ error: 'ошибка'
+ }
+ },
+ about: {
+ titles: {
+ usefulLinks: 'Полезные ссылки',
+ bugReports: 'Баг репорты',
+ contributing: 'Помощь проекту',
+ donations: 'Пожертвования',
+ license: 'Лицензия'
+ },
+ subtitles: {
+ bugReports: "Что-то не работает? Скажите нам!",
+ contributing: 'Хотите поддержать проект? Это можно сделать разными способами!',
+ donations: 'Хотите поддержать материально? Можно сделать пожертвование!'
+ },
+ usesLibrary: 'Приложение использует библиотеку deemix, с помощью которой вы можете сделать собственный UI deemix.',
+ thanks: `Спасибо rtonno, uhwot и lollilol за помощь с этим проектом, а также BasCurtiz и scarvimane за иконку.`,
+ upToDate: `Следите за последними обновлениями на канале в Telegram.`,
+ officialWebsite: 'Официальный сайт',
+ officialRepo: 'Официальный репозиторий библиотеки',
+ officialWebuiRepo: 'Официальный репозиторий WebUI',
+ officialSubreddit: 'Официальный сабреддит',
+ newsChannel: 'Канал новостей',
+ questions: `Если у вас возникли вопросы или проблемы с приложением, поищите решение на сабреддите. Если решения не нашли, можете создать новый пост и описать вашу проблему.`,
+ beforeReporting: `Перед тем, как сообщать об ошибках, убедитесь, что у вас стоит последняя версия приложения и что проблема не на вашей стороне.`,
+ beSure: `Убедитесь, что ошибка возникает и на других устройствах. Также НЕ сообщайте об ошибке, если про неё уже известно.`,
+ duplicateReports: 'Повторные сообщения об ошибках рассматриваться не будут.',
+ dontOpenIssues: `НЕ НАДО создавать задачу с простым вопросом, для этого есть сабреддит.`,
+ newUI: `Если вы хорошо знаете python, то можете сделать новый UI для приложения с использованием базовой библиотеки или пофиксить в ней баги и сделать pull request в репозитории.`,
+ acceptFeatures: `Новые фичи также приветствуются, но не слишком сложные, так как они будут добавлены в приложение, а не в саму библиотеку.`,
+ otherLanguages: `Если вы хорошо знаете другой язык программирования, можете портировать на нём deemix!`,
+ understandingCode: `Не можете понять код? Напишите RemixDev up в Telegram или на Reddit.`,
+ contributeWebUI: `Если вы знаете Vue.js (JavaScript), HTML или CSS, можете внести вклад в WebUI.`,
+ itsFree: `Помните, что это бесплатное приложение и вам следует поддерживать исполнителей, которые вам нравятся прежде, чем поддерживать разработчиков.`,
+ notObligated: `Вы не обязаны делать пожертвования, я всё равно вас ценю!`,
+ lincensedUnder: `Проект находится под лицензией
+ GNU General Public License 3.0.`
+ },
+ charts: {
+ title: 'Чарты',
+ changeCountry: 'Изменить страну',
+ download: 'Скачать чарт'
+ },
+ errors: {
+ title: 'Errors for {0}',
+ ids: {
+ invalidURL: 'URL не распознана',
+ unsupportedURL: 'URL не поддерживается',
+ ISRCnotOnDeezer: 'ISRC трека недоступен на deezer',
+ notYourPrivatePlaylist: "Нельзя скачивать чужие плейлисты.",
+ spotifyDisabled: 'Неправильно настроены параметры Spotify.',
+ trackNotOnDeezer: 'Трек не найден на deezer!',
+ albumNotOnDeezer: 'Альбом не найден deezer!',
+ notOnDeezer: 'Трек недоступен на Deezer!',
+ notEncoded: 'Трек ещё не перекодирован!',
+ notEncodedNoAlternative: 'Трек не перекодирован, альтернатив не найдено!',
+ wrongBitrate: 'Не найден трек с нужным битрейтом.',
+ wrongBitrateNoAlternative: 'Не найден трек с нужным битрейтом. Альтернатив не найдено!',
+ no360RA: 'Трек недоступен в Reality Audio 360.',
+ notAvailable: "Трек недоступен на серверах deezer!",
+ notAvailableNoAlternative: "Трек недоступен на серверах deezer. Альтернатив не найдено!"
+ }
+ },
+ favorites: {
+ title: 'Избранное',
+ noPlaylists: 'Плейлисты не найдены',
+ noAlbums: 'Избранные альбомы не найдены',
+ noArtists: 'Избранные исполнители не найдены',
+ noTracks: 'Избранные треки не найдены'
+ },
+ home: {
+ needTologin: 'Вам нужно зайти под своим Deezer аккаунтом прежде, чем скачивать.',
+ openSettings: 'Открыть настройки',
+ sections: {
+ popularPlaylists: 'Популярные плейлисты',
+ popularAlbums: 'Самые прослушиваемые альбомы'
+ }
+ },
+ linkAnalyzer: {
+ info: 'Используйте этот раздел, чтобы узнать информацию о ссылке, по которой вы хотите скачать.',
+ useful:
+ "Этот раздел нужен, если вы хотите скачать треки, недоступные в вашей стране, а также посмотреть, где они доступны.",
+ linkNotSupported: 'Ссылка не поддерживается',
+ linkNotSupportedYet: 'Эта ссылка не поддерживается, попробуйте вставить другую.',
+ table: {
+ id: 'ID',
+ isrc: 'ISRC',
+ upc: 'UPC',
+ duration: 'Продолжительность',
+ diskNumber: 'Номер диска',
+ trackNumber: 'Номер трека',
+ releaseDate: 'Дата выхода',
+ bpm: 'BPM',
+ label: 'Издатель',
+ recordType: 'Тип',
+ genres: 'Жанр',
+ tracklist: 'Треклист'
+ }
+ },
+ search: {
+ startSearching: 'Начните искать!',
+ description:
+ 'Здесь можно найти трек, альбом, исполнителя, плейлист... всё! Можно также вставить ссылку Deezer',
+ fans: '{0} поклонников',
+ noResults: 'Нет результатов',
+ noResultsTrack: 'Треков не найдено',
+ noResultsAlbum: 'Альбомов не найдено',
+ noResultsArtist: 'Исполнителей не найдено',
+ noResultsPlaylist: 'Плейлистов не найдено'
+ },
+ searchbar: 'Ищите, что хотите (или вставьте ссылку)',
+ downloads: 'загрузки',
+ toasts: {
+ addedToQueue: '{0} добавлено в очередь',
+ alreadyInQueue: '{0} уже есть в очереди!',
+ finishDownload: '{0} загрузок завершено.',
+ allDownloaded: 'Все загрузки завершены!',
+ refreshFavs: 'Обновление завершено!',
+ loggingIn: 'Вход',
+ loggedIn: 'Вход выполнен',
+ alreadyLogged: 'Вход уже выполнен',
+ loginFailed: "Вход не выполнен",
+ loggedOut: 'Logged out',
+ cancellingCurrentItem: 'Отмена закачки.',
+ currentItemCancelled: 'Отменено.',
+ startAddingArtist: 'Добавление {0} альбомов в очередь',
+ finishAddingArtist: 'Добавлено {0} альбомов в очередь',
+ startConvertingSpotifyPlaylist: 'Преобразование треков из spotify в deezer',
+ finishConvertingSpotifyPlaylist: 'Преобразование Spotify playlist converted'
+ },
+ settings: {
+ title: 'Настройки',
+ languages: 'Язык',
+ login: {
+ title: 'Вход',
+ loggedIn: 'Вы вошли как {username}',
+ arl: {
+ question: 'Как узнать свой ARL?',
+ update: 'Обновить ARL'
+ },
+ logout: 'Выйти'
+ },
+ appearance: {
+ title: 'Внешний вид',
+ slimDownloadTab: 'Обрезать вкладку с загрузками'
+ },
+ downloadPath: {
+ title: 'Путь сохранения'
+ },
+ templates: {
+ title: 'Шаблоны',
+ tracknameTemplate: 'Шаблон названия трека',
+ albumTracknameTemplate: 'Шаблон названия трека альбома',
+ playlistTracknameTemplate: 'Шаблон названия трека плейлиста'
+ },
+ folders: {
+ title: 'Папки',
+ createPlaylistFolder: 'Создать папки для плейлистов',
+ playlistNameTemplate: 'Название папки плейлиста',
+ createArtistFolder: 'Создать папки для исполнителя',
+ artistNameTemplate: 'Название папки исполнителя',
+ createAlbumFolder: 'Создать папки для альбома',
+ albumNameTemplate: 'Название папки альбома',
+ createCDFolder: 'Создать папки для CD',
+ createStructurePlaylist: 'Создать структуру папок для плейлистов',
+ createSingleFolder: 'Создать структуру папок для синглов'
+ },
+ trackTitles: {
+ title: 'Названия треков',
+ padTracks: 'Добавлять нули',
+ paddingSize: 'Количество цифр',
+ illegalCharacterReplacer: 'Замена для запрещённых символов'
+ },
+ downloads: {
+ title: 'Загрузки',
+ queueConcurrency: 'Количество одновременных закачек',
+ maxBitrate: {
+ title: 'Битрейт',
+ 9: 'FLAC 1411kbps',
+ 3: 'MP3 320kbps',
+ 1: 'MP3 128kbps'
+ },
+ overwriteFile: {
+ title: 'Нужно ли перезаписывать файлы?',
+ y: 'Да, перезаписать файл',
+ n: "Нет, не перезаписывать",
+ t: 'Обновить только теги'
+ },
+ fallbackBitrate: 'Скачивать с низким битрейтом, если текущий недоступен',
+ fallbackSearch: 'Искать другой трек, если нужный недоступен',
+ logErrors: 'Создать логи для ошибок',
+ logSearched: 'Создать лог поиска',
+ createM3U8File: 'Создать файлы плейлистов',
+ syncedLyrics: 'Создать .lyr файлы (Синхронизированный текст)',
+ playlistFilenameTemplate: 'Шаблон названия плейлиста',
+ saveDownloadQueue: 'Сохранять текущий список загрузок при закрытии приложения'
+ },
+ covers: {
+ title: 'Обложки',
+ saveArtwork: 'Сохранять обложки',
+ coverImageTemplate: 'Шаблон названия обложки',
+ saveArtworkArtist: 'Сохранять изображение исполнителя',
+ artistImageTemplate: 'Шаблон названия изображения',
+ localArtworkSize: 'Размер сохраненной обложки',
+ embeddedArtworkSize: 'Размер встроенной',
+ localArtworkFormat: {
+ title: 'В каком формате сохранять обложки?',
+ jpg: 'jpeg',
+ png: 'png',
+ both: 'jpeg и png'
+ },
+ jpegImageQuality: 'Качество JPEG'
+ },
+ tags: {
+ head: 'Какие теги сохранять',
+ title: 'Название',
+ artist: 'Исполнитель',
+ album: 'Альбом',
+ cover: 'Обложка',
+ trackNumber: 'Номер трека',
+ trackTotal: 'Кол-во треков',
+ discNumber: 'Номер диска',
+ discTotal: 'Кол-во дисков',
+ albumArtist: 'Исполнитель альбома',
+ genre: 'Жанр',
+ year: 'Год',
+ date: 'Дата',
+ explicit: 'Нецензурная лирика',
+ isrc: 'ISRC',
+ length: 'Продолжительность',
+ barcode: 'Штрихкод альбома (UPC)',
+ bpm: 'BPM',
+ replayGain: 'Replay Gain',
+ label: 'Издатель',
+ lyrics: 'Несинхронизированный текст',
+ copyright: 'Права',
+ composer: 'Композитор',
+ involvedPeople: 'Вовлечённые люди'
+ },
+ other: {
+ title: 'Разное',
+ savePlaylistAsCompilation: 'Сохранить плейлисты как сборники',
+ useNullSeparator: 'Использовать нулевой символ в качестве разделителя',
+ saveID3v1: 'Дополнительно сохранять ID3v1',
+ multiArtistSeparator: {
+ title: 'Как разделять несколько исполнителей?',
+ nothing: 'Сохранить только основного',
+ default: 'Используя стандартную спецификацию',
+ andFeat: 'Используя & и feat.',
+ using: 'Используя "{0}"'
+ },
+ singleAlbumArtist: 'Сохранить только основного исполнителя альбома',
+ albumVariousArtists: 'Оставить "Various Artists" в Исполнителях льбома',
+ removeAlbumVersion: 'Удалить "Album Version" из названия трека',
+ removeDuplicateArtists: 'Удалить повторяющихся исполнителей',
+ dateFormat: {
+ title: 'Формат даты для FLAC файлов',
+ year: 'YYYY',
+ month: 'MM',
+ day: 'DD'
+ },
+ featuredToTitle: {
+ title: 'Что делать с приглашёнными исполнителями?',
+ 0: 'Ничего',
+ 1: 'Удалить их из названия',
+ 3: 'Удалить из названия и названия альбома',
+ 2: 'Добавить в название'
+ },
+ titleCasing: 'Регистр названия',
+ artistCasing: 'Регистр исполнителя',
+ casing: {
+ nothing: 'Не менять',
+ lower: 'в нижнем регистре',
+ upper: 'В ВЕРХНЕМ РЕГИСТРЕ',
+ start: 'Каждое Слово С Заглавной Буквы',
+ sentence: 'Как в предложении'
+ },
+ previewVolume: 'Громкость прослушивания',
+ executeCommand: {
+ title: 'Выполнить команды по окончании загрузок',
+ description: 'Оставьте пустым, если ничего не требуется'
+ }
+ },
+ spotify: {
+ title: 'Функции Spotify',
+ clientID: 'Spotify clientID',
+ clientSecret: 'Spotify Client Secret',
+ username: 'Spotify username'
+ },
+ reset: 'По умолчанию',
+ save: 'Сохранить',
+ toasts: {
+ init: 'Настройки загружены!',
+ update: 'Настройки обновлены!',
+ ARLcopied: 'ARL скопирован в буфер обмена'
+ }
+ },
+ sidebar: {
+ home: 'домой',
+ search: 'поиск',
+ charts: 'чарты',
+ favorites: 'избранное',
+ linkAnalyzer: 'просмотр ссылок',
+ settings: 'настройки',
+ about: 'о проекте'
+ },
+ tracklist: {
+ downloadSelection: 'Скачать выбранные'
+ }
+}
+
+export default ru
\ No newline at end of file