"
-#: src/application.vala:236
+#: src/about.vala:68
msgid "Telegram channel"
msgstr "Телеграм-канал"
-#: src/application.vala:237
-msgid "Financial support"
-msgstr "Финансовая поддержка"
+#: src/about.vala:69
+msgid "Financial support (Tinkoff)"
+msgstr "Финансовая поддержка (Тинькофф)"
-#: src/authenticator.vala:50
+#: src/about.vala:70
+msgid "Financial support (Boosty)"
+msgstr "Финансовая поддержка (Бусти)"
+
+#. Please keep alphabetical
+#: src/about.vala:73
+msgid "Sponsors"
+msgstr "Спонсоры"
+
+#: src/application.vala:63
+msgid "Print version information and exit"
+msgstr "Выводит информацию о версии и выходит"
+
+#: src/application.vala:146
+msgid "Connection restored"
+msgstr "Соединение восстановлено"
+
+#: src/application.vala:274
+msgid "Previous"
+msgstr "Предыдущий"
+
+#: src/application.vala:275
+msgid "Next"
+msgstr "Следующий"
+
+#: src/application.vala:358
+msgid "Current track can not be copied to the clipboard"
+msgstr "Текущий трек не может быть скопирован в буфер обмена"
+
+#: src/application.vala:372 src/application.vala:379 src/application.vala:436
+msgid "Can't parse clipboard content"
+msgstr "Не удаётся разобрать содержимое буфера обмена"
+
+#: src/application.vala:390
+msgid "Users view not implemented yet"
+msgstr "Отображение пользователя пока не реализовано"
+
+#: src/application.vala:406 src/application.vala:420
+msgid "Albums view not implemented yet"
+msgstr "Отображение альбома пока не реализовано"
+
+#: src/authenticator.vala:47
msgid "Log out?"
msgstr "Выйти из аккаунта?"
-#: src/authenticator.vala:51
+#: src/authenticator.vala:48
msgid "You will need to log in again to use the app"
-msgstr "Вам нужно будет заново авторизоваться, чтобы использовать приложение"
+msgstr "Вам нужно будет войти в аккаунт снова, чтобы использовать приложение"
#. Translators: cancel of deleting playlist
-#: src/authenticator.vala:54
-#: src/widgets/preferences/cache_deletion_preferences.vala:99
-#: src/widgets/preferences/preferences_window.vala:121
-#: src/widgets/views/playlist_view.vala:114
+#: src/authenticator.vala:51
+#: src/widgets/preferences/cache-deletion-preferences.vala:96
+#: src/widgets/preferences/preferences-dialog.vala:140
+#: src/widgets/views/playlist.vala:90
msgid "Cancel"
msgstr "Отменить"
-#: src/authenticator.vala:55
-msgid "Log out"
-msgstr "Выйти из аккаунта"
-
-#: src/authenticator.vala:95
-#: src/widgets/preferences/cache_deletion_preferences.vala:133
+#: src/authenticator.vala:98
+#: src/widgets/preferences/cache-deletion-preferences.vala:130
msgid "Moving…"
msgstr "Перемещение…"
#. Translators: Playlist with liked tracks
-#: src/client/api/objects/playlist/playlist.vala:52
-#: src/client/api/objects/playlist/playlist.vala:102 src/pager.vala:269
-#: src/widgets/sidebar.vala:138
+#: src/client/api/objects/playlist/playlist.vala:50
+#: src/client/api/objects/playlist/playlist.vala:100 src/pager.vala:277
msgid "Liked"
msgstr "Мне нравится"
#. Translators: Playlist that updates every day
-#: src/client/api/objects/playlist/playlist.vala:56
+#: src/client/api/objects/playlist/playlist.vala:54
msgid "Daily"
msgstr "Плейлист дня"
#. Translators: Unknown playlist
-#: src/client/api/objects/playlist/playlist.vala:60
+#: src/client/api/objects/playlist/playlist.vala:58
msgid "Unknown"
msgstr "Неизвестный"
-#: src/client/cachier/storager.vala:129
+#: src/client/cachier/storager.vala:125
#, c-format
msgid "Database was initialized, loc - %s"
-msgstr "База данных была инициализирована, loc - %s"
+msgstr "База данных была инициализирована, расположение - %s"
#: src/client/cachier/storager.vala:802
#, c-format
@@ -971,784 +923,460 @@ msgstr[2] "Терабайтов"
#: src/client/cachier/storager.vala:860
#, c-format
-msgid "Error while getting temporary dir size. Message %s"
-msgstr "Ошибка при получении временного размера каталога. Сообщение %s"
+msgid "Error while getting cache directory size. Message %s"
+msgstr "Ошибка при получении размера директории кэша. Сообщение %s"
#: src/client/cachier/storager.vala:895
#, c-format
-msgid "Error while getting permanent dir size. Message %s"
-msgstr "Ошибка при получении постоянного размера каталога. Сообщение %s"
+msgid "Error while getting permanent directory size. Message %s"
+msgstr "Ошибка при получении размера директории данных. Сообщение %s"
-#: src/client/jsoner.vala:199 src/client/jsoner.vala:294
-#: src/client/jsoner.vala:307
+#: src/client/jsoner.vala:358 src/client/jsoner.vala:419
+#: src/client/jsoner.vala:526 src/client/jsoner.vala:550
#, c-format
msgid "Wrong type: expected %s, got %s"
msgstr "Неверный тип: ожидалось %s, получено %s"
-#: src/client/player/player_track_list.vala:257
+#: src/client/player/mods/abstract-mode.vala:92
msgid "Problems with queue"
msgstr "Проблемы с очередью"
#. Translators: name of new created playlist
-#: src/client/talkers/yam_talker.vala:462
+#: src/client/talkers/yam-talker.vala:628
msgid "New Playlist"
msgstr "Новый плейлист"
-#: src/main.vala:26
-msgid "Cassette"
-msgstr "Cassette"
-
-#: src/main_window.vala:180
-#, c-format
-msgid "Error while opening uri: %s"
-msgstr "Ошибка при получении ответа: %s"
-
-#: src/main_window.vala:217
-msgid "Connection restored"
-msgstr "Соединение восстановлено"
-
-#: src/main_window.vala:301
-#, c-format
-msgid "Window info message: %s"
-msgstr "Информационное сообщение об окне: %s"
-
-#: src/main_window.vala:316
-msgid "Reconnect"
-msgstr "Переподключиться"
-
-#: src/main_window.vala:345 src/main_window.vala:396
-msgid "Can't parse clipboard content"
-msgstr "Не удается спарсить содержимое буфера обмена"
-
-#: src/main_window.vala:361
-msgid "Users view not implemented yet"
-msgstr "Показ пользователя пока не реализован"
-
-#: src/main_window.vala:377 src/main_window.vala:391
-msgid "Albums view not implemented yet"
-msgstr "Показ альбома пока не реализован"
-
-#: src/pager.vala:164
+#: src/pager.vala:163
#, c-format
msgid "Can't set title \"%s\" to page"
-msgstr "Не удается установить заголовок \"%s\" для страницы"
+msgstr "Не удаётся установить заголовок \"%s\" для страницы"
-#: src/pager.vala:175
+#: src/pager.vala:174
#, c-format
msgid "Can't set icon with name \"%s\" to page"
-msgstr "Не удается установить иконку с именем \"%s\" на страницу"
+msgstr "Не удаётся установить иконку с именем \"%s\" на страницу"
-#: src/pager.vala:201
+#: src/pager.vala:200
msgid "Reached max page count"
msgstr "Достигнуто максимальное количество страниц"
-#: src/pager.vala:207
+#: src/pager.vala:206
#, c-format
msgid "Page '%s' already added"
msgstr "Страница '%s' уже добавлена"
-#: src/pager.vala:260
+#: src/pager.vala:268
msgid "Main"
msgstr "Главное"
-#: src/pager.vala:279
+#: src/pager.vala:287
msgid "Playlists"
msgstr "Плейлисты"
-#: src/pager.vala:304
+#: src/pager.vala:312
#, c-format
-msgid "Can't read pages file. Messsage: %s"
-msgstr "Не удается прочитать файл страницы. Сообщение: %s"
+msgid "Can't read pages file. Message: %s"
+msgstr "Не удаётся прочитать файл страниц. Сообщение: %s"
-#: src/pager.vala:324
+#: src/pager.vala:332
#, c-format
-msgid "Can't create pages file. Messsage: %s"
-msgstr "Не удается создать файл страницы. Сообщение: %s"
+msgid "Can't create pages file. Message: %s"
+msgstr "Не удаётся создать файл страниц. Сообщение: %s"
-#: src/utils.vala:42
+#: src/utils.vala:70
msgid "Not implemented yet"
msgstr "Пока не реализовано"
-#: src/utils.vala:45
+#: src/utils.vala:77
msgid "Need authorization"
msgstr "Нужна авторизация"
-#: src/utils.vala:48
-msgid "Need Plus subscription"
-msgstr "Нужна подписка Я.Плюс"
+#: src/utils.vala:81
+msgid "Need Bookmate subscription"
+msgstr "Нужна подписка Букмейт"
-#: src/utils.vala:84 src/utils.vala:93
+#: src/utils.vala:177 src/utils.vala:193
msgid "Link copied to clipboard"
msgstr "Ссылка скопирована в буфер обмена"
-#: src/utils.vala:131
+#: src/utils.vala:242
#, c-format
msgid "Duration: %s h. %s min."
msgstr "Продолжительность: %s ч. %s мин."
-#: src/utils.vala:133
+#: src/utils.vala:244
#, c-format
msgid "Duration: %s min."
msgstr "Продолжительность: %s мин."
-#: src/utils.vala:194
+#: src/utils.vala:358
msgid "today"
msgstr "сегодня"
-#: src/utils.vala:196
+#: src/utils.vala:360
msgid "yesterday"
msgstr "вчера"
-#: src/widgets/cache_indicator/job_info_badge.vala:45
-#: src/widgets/save_stack.vala:57 src/widgets/views/cachiable_view.vala:165
-msgid "Playlist"
-msgstr "Плейлист"
+#: src/widgets/buttons/just/dislike-button.vala:38
+msgid "Remove dislike"
+msgstr "Удалить \"Не нравится\""
-#: src/widgets/cache_indicator/job_info_badge.vala:47
-#: src/widgets/save_stack.vala:53 src/widgets/views/cachiable_view.vala:173
+#: src/widgets/buttons/just/dislike-button.vala:41
+msgid "Set dislike"
+msgstr "Поставить \"Не нравится\""
+
+#: src/widgets/buttons/just/like-button.vala:42
+msgid "Remove like"
+msgstr "Удалить \"Нравится\""
+
+#: src/widgets/buttons/just/like-button.vala:49
+msgid "Set like"
+msgstr "Поставить \"Нравится\""
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:38
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:41
+msgid "Pause"
+msgstr "Пауза"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:45
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:48
+msgid "Play"
+msgstr "Играть"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:49
+#, c-format
+msgid "Playlist '%s'"
+msgstr "Плейлист '%s'"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:54
+#: src/widgets/buttons/menu/playlist-options-button.vala:67
+msgid "My Vibe by playlist"
+msgstr "Моя волна по плейлисту"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:55
+#: src/widgets/buttons/menu/playlist-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:81
+#: src/widgets/buttons/menu/track-options-button.vala:106
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:36
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:47
+#: src/widgets/buttons/menu/track-queue-options-button.vala:70
+#: src/widgets/buttons/menu/track-queue-options-button.vala:100
+msgid "Add to queue"
+msgstr "Добавить в очередь"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:56
+#: src/widgets/buttons/menu/playlist-options-button.vala:78
+#: src/widgets/buttons/menu/track-options-button.vala:84
+#: src/widgets/buttons/menu/track-options-button.vala:109
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:40
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:51
+#: src/widgets/buttons/menu/track-queue-options-button.vala:74
+#: src/widgets/buttons/menu/track-queue-options-button.vala:104
+msgid "Share"
+msgstr "Поделиться"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:27
+msgid "Primary menu"
+msgstr "Главное меню"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:33
+msgid "Parse URL from clipboard"
+msgstr "Разобрать URL-адрес из буфера обмена"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:34
+msgid "Preferences"
+msgstr "Параметры"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:35
+msgid "Keyboard Shortcuts"
+msgstr "Комбинации клавиш"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:36
+msgid "About Cassette"
+msgstr "О приложении"
+
+#: src/widgets/buttons/menu/track-options-button.vala:78
+#: src/widgets/buttons/menu/track-options-button.vala:95
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:33
+#: src/widgets/buttons/menu/track-queue-options-button.vala:67
+#: src/widgets/buttons/menu/track-queue-options-button.vala:88
+msgid "My Vibe by track"
+msgstr "Моя волна по треку"
+
+#: src/widgets/buttons/menu/track-options-button.vala:79
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:34
+#: src/widgets/buttons/menu/track-queue-options-button.vala:68
+msgid "Show info"
+msgstr "Подробнее"
+
+#: src/widgets/buttons/menu/track-options-button.vala:80
+#: src/widgets/buttons/menu/track-options-button.vala:105
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:35
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:46
+#: src/widgets/buttons/menu/track-queue-options-button.vala:69
+#: src/widgets/buttons/menu/track-queue-options-button.vala:99
+msgid "Play next"
+msgstr "Играть следующим"
+
+#: src/widgets/buttons/menu/track-options-button.vala:82
+#: src/widgets/buttons/menu/track-options-button.vala:107
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:37
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:48
+#: src/widgets/buttons/menu/track-queue-options-button.vala:71
+#: src/widgets/buttons/menu/track-queue-options-button.vala:101
+msgid "Add to playlist"
+msgstr "Добавить в плейлист"
+
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:38
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:49
+msgid "Remove from playlist"
+msgstr "Удалить из плейлиста"
+
+#: src/widgets/buttons/menu/track-queue-options-button.vala:72
+#: src/widgets/buttons/menu/track-queue-options-button.vala:102
+msgid "Remove from queue"
+msgstr "Удалить из очереди"
+
+#: src/widgets/buttons/menu/volume-button.vala:122
+msgid "Volume control"
+msgstr "Управление громкостью"
+
+#: src/widgets/buttons/menu/volume-button.vala:262
+msgid "Unmute"
+msgstr "Включить звук"
+
+#: src/widgets/buttons/menu/volume-button.vala:262
+msgid "Mute"
+msgstr "Выключить звук"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:45
+#: src/widgets/save-stack.vala:53 src/widgets/views/abstract-cachiable.vala:173
msgid "Album"
msgstr "Альбом"
#. Translators: n track from n tracks saved
-#: src/widgets/cache_indicator/job_info_badge.vala:79
+#: src/widgets/cache-indicator/job-info-badge.vala:78
#, c-format
msgid "%d / %d saved%s"
-msgstr "%d / %d сохранено%s"
+msgid_plural "%d / %d saved%s"
+msgstr[0] "%d / %d сохранено%s"
+msgstr[1] "%d / %d сохранено%s"
+msgstr[2] "%d / %d сохранено%s"
-#: src/widgets/cache_indicator/job_info_badge.vala:83
+#: src/widgets/cache-indicator/job-info-badge.vala:85
#, c-format
-msgid ". %d track saving now"
-msgid_plural ". %d tracks saving now"
-msgstr[0] ". %d трек сохраняется сейчас"
-msgstr[1] ". %d трека сохраняется сейчас"
-msgstr[2] ". %d треков сохраняется сейчас"
+msgid "%d track saving now"
+msgid_plural "%d tracks saving now"
+msgstr[0] "%d трек сохраняется сейчас"
+msgstr[1] "%d трека сохраняется сейчас"
+msgstr[2] "%d треков сохраняется сейчас"
-#: src/widgets/dislike_button.vala:40
-msgid "Remove dislike"
-msgstr "Снять дизлайк"
-
-#: src/widgets/dislike_button.vala:45
-msgid "Set dislike"
-msgstr "Поставить дизлайк"
-
-#: src/widgets/info_marks.vala:44
+#: src/widgets/info-marks.vala:42
#, c-format
msgid "Track was replaced. Original version: %s, %s"
-msgstr "Трек был заменен. Оригинальная версия: %s, %s"
+msgstr "Трек был заменён. Оригинальная версия: %s, %s"
-#: src/widgets/like_button.vala:44
-msgid "Remove like"
-msgstr "Снять лайк"
-
-#: src/widgets/like_button.vala:51
-msgid "Set like"
-msgstr "Поставить лайк"
-
-#: src/widgets/options_button/options_button.vala:56
-msgid "Options menu"
-msgstr "Меню опций"
-
-#: src/widgets/options_button/playlist_options_button.vala:29
-msgid "My wave on playlist"
-msgstr "Моя волна по плейлисту"
-
-#: src/widgets/options_button/playlist_options_button.vala:30
-#: src/widgets/options_button/track_options_button.vala:30
-msgid "Add to queue"
-msgstr "Добавить в очередь"
-
-#: src/widgets/options_button/playlist_options_button.vala:31
-#: src/widgets/options_button/track_options_button.vala:35
-msgid "Share"
-msgstr "Поделиться"
-
-#: src/widgets/options_button/playlist_options_button.vala:35
-msgid "Delete playlist"
-msgstr "Удалить плейлист"
-
-#: src/widgets/options_button/track_options_button.vala:29
-msgid "Play next"
-msgstr "Играть следующим"
-
-#: src/widgets/options_button/track_options_button.vala:32
-msgid "My wave on track"
-msgstr "Моя волна по треку"
-
-#: src/widgets/options_button/track_options_button.vala:33
-msgid "Add to playlist"
-msgstr "Добавить в плейлист"
-
-#: src/widgets/options_button/track_options_button.vala:39
-msgid "Remove from playlist"
-msgstr "Удалить из плейлиста"
-
-#: src/widgets/options_button/track_options_button.vala:43
-msgid "Remove from queue"
-msgstr "Удалить из очереди"
-
-#: src/widgets/options_button/track_options_button.vala:47
-msgid "Save"
-msgstr "Сохранить"
-
-#: src/widgets/pages/loading_page.vala:40
-msgid "Loading…"
-msgstr "Загрузка…"
-
-#: src/widgets/play_button/play_button.vala:27
-msgid "Play/Pause"
-msgstr "Воспроизведение/пауза"
-
-#: src/widgets/playlist_micro.vala:68
-#, c-format
-msgid "%s like"
-msgid_plural "%s likes"
-msgstr[0] "%s лайк"
-msgstr[1] "%s лайка"
-msgstr[2] "%s лайков"
-
-#: src/widgets/playlist_micro.vala:159 src/widgets/views/playlist_view.vala:260
+#: src/widgets/playlist-micro.vala:158 src/widgets/views/playlist.vala:242
#, c-format
msgid "Owner: %s"
msgstr "Владелец: %s"
-#: src/widgets/playlist_row.vala:90
+#: src/widgets/playlist-row.vala:86
#, c-format
msgid "Track count: %s"
msgstr "Количество треков: %s"
-#: src/widgets/preferences/cache_deletion_preferences.vala:92
+#: src/widgets/preferences/cache-deletion-preferences.vala:89
+#: src/widgets/preferences/preferences-dialog.vala:135
msgid "Delete cache files?"
msgstr "Удалить кэш?"
-#: src/widgets/preferences/cache_deletion_preferences.vala:93
-msgid "Moved saved files?"
-msgstr "Переместить сохраненный контент?"
+#: src/widgets/preferences/cache-deletion-preferences.vala:90
+msgid "Move saved files?"
+msgstr "Переместить сохраненные файлы?"
-#: src/widgets/preferences/cache_deletion_preferences.vala:94
+#: src/widgets/preferences/cache-deletion-preferences.vala:91
+#: src/widgets/preferences/preferences-dialog.vala:136
msgid ""
-"All temporary cached files will be deleted. This doesn't affect on saved "
-"playlists or albums"
+"All cache will be deleted. This doesn't affect on saved playlists or albums"
msgstr ""
-"Весь кэш будет удален. Это не влияет на сохраненные плейлисты или альбомы"
+"Весь кэш будет удалён. Это не влияет на сохраненные плейлисты или альбомы"
-#: src/widgets/preferences/cache_deletion_preferences.vala:95
+#: src/widgets/preferences/cache-deletion-preferences.vala:92
msgid ""
"All saved playlists and albums will be moved to cache files. This could take "
"a while."
msgstr ""
-"Все сохраненные плейлисты и альбомы будут перемещены в файлы кэша. Это может "
+"Все сохранённые плейлисты и альбомы будут перемещены в кэш-файлы. Это может "
"занять некоторое время."
-#: src/widgets/preferences/cache_deletion_preferences.vala:100
-#: src/widgets/preferences/preferences_window.vala:122
-#: src/widgets/views/playlist_view.vala:115
-msgid "Delete"
-msgstr "Удалить"
-
-#: src/widgets/preferences/cache_deletion_preferences.vala:133
+#: src/widgets/preferences/cache-deletion-preferences.vala:130
msgid "Deleting…"
msgstr "Удаление…"
-#: src/widgets/preferences/preferences_window.vala:116
-msgid "Delete temporary files?"
-msgstr "Удалить временные файлы?"
-
-#: src/widgets/preferences/preferences_window.vala:117
-msgid ""
-"All temporary cache will be deleted. This doesn't affect on saved playlists "
-"or albums"
-msgstr ""
-"Весь временный кэш будет удален. Это не влияет на сохраненные плейлисты или "
-"альбомы"
-
-#: src/widgets/save_stack.vala:55
+#: src/widgets/save-stack.vala:55
msgid "Image"
msgstr "Изображение"
-#: src/widgets/save_stack.vala:59
+#: src/widgets/save-stack.vala:59
msgid "Track"
msgstr "Трек"
-#: src/widgets/save_stack.vala:76
+#: src/widgets/save-stack.vala:76
#, c-format
msgid "%s saving…"
msgstr "%s сохраняется…"
-#: src/widgets/save_stack.vala:77
+#: src/widgets/save-stack.vala:77
#, c-format
-msgid "%s saved to temp folder"
-msgstr "%s сохранен во временную папку"
+msgid "%s cached"
+msgstr "%s кэширован"
-#: src/widgets/save_stack.vala:78
+#: src/widgets/save-stack.vala:78
#, c-format
msgid "%s saved"
-msgstr "%s сохранен"
+msgstr "%s сохранён"
-#: src/widgets/sidebar.vala:133
-msgid "PLAYLIST"
-msgstr "ПЛЕЙЛИСТ"
+#: src/widgets/sidebar/childs/player-queue.vala:67
+#, c-format
+msgid "Playlist \"%s\""
+msgstr "Плейлист \"%s\""
-#: src/widgets/sidebar.vala:141
-msgid "ALBUM"
-msgstr "АЛЬБОМ"
+#: src/widgets/sidebar/childs/player-queue.vala:71
+#, c-format
+msgid "Album \"%s\""
+msgstr "Альбом \"%s\""
-#: src/widgets/sidebar.vala:145
-msgid "SEARCH RESULTS"
-msgstr "РЕЗУЛЬТАТЫ ПОИСКА"
+#: src/widgets/sidebar/childs/player-queue.vala:75
+#, c-format
+msgid "By search results \"%s\""
+msgstr "По результатам поиска \"%s\""
-#: src/widgets/sidebar.vala:150
+#: src/widgets/sidebar/childs/player-queue.vala:79
msgid "Track list"
msgstr "Список треков"
-#: src/widgets/track_detailed.vala:100
+#: src/widgets/sidebar/childs/track-info.vala:69
msgid "Your music track"
msgstr "Ваш трек"
-#: src/widgets/track_detailed.vala:116
+#: src/widgets/sidebar/childs/track-info.vala:85
msgid "Music track"
-msgstr "Трэк"
+msgstr "Трек"
-#: src/widgets/track_row_contents/track_default_content.vala:93
-#: src/widgets/track_rows/track_default_content.vala:193
+#: src/widgets/sidebar/childs/wave-settings.vala:40
+msgid "Wave settings"
+msgstr "Настройки Волны"
+
+#: src/widgets/track-rows/base.vala:80 src/widgets/track-rows/default.vala:101
msgid "Track is not available"
msgstr "Трек не доступен"
#. Translators: first %s - content type (Playlist), second - name
-#: src/widgets/views/cachiable_view.vala:75
+#: src/widgets/views/abstract-cachiable.vala:79
#, c-format
-msgid "%s%s successfully cached"
-msgstr "%s%s успешно сохранен"
+msgid "%s '%s' saved successfully"
+msgstr "%s '%s' успешно сохранен"
#. Translators: first %s - content type (Playlist), second - name
-#: src/widgets/views/cachiable_view.vala:86
+#: src/widgets/views/abstract-cachiable.vala:90
#, c-format
-msgid "Caching of %s%s was canceled, due to network error"
-msgstr "Сохранение %sа%s не было завершено из-за сетевой ошибки"
+msgid "%s '%s' saving was stopped, due to network error"
+msgstr "Сохранение %s '%s' было остановлено из-за сетевой ошибки"
#. Translators: first %s - content type (Playlist), second - name
-#: src/widgets/views/cachiable_view.vala:97
+#: src/widgets/views/abstract-cachiable.vala:100
#, c-format
-msgid "Caching of %s%s was aborted"
-msgstr "Сохранение %sа%s было отменено"
+msgid "%s '%s' saving was aborted"
+msgstr "Сохранение %s '%s' было прервано"
+
+#. Translators: %s - content type (e.g. "Playlist")
+#: src/widgets/views/abstract-cachiable.vala:192
+#, c-format
+msgid "%s saving has started"
+msgstr "Сохранение %s начато"
#. Translators: first %s - content type (Playlist), second - name
-#: src/widgets/views/cachiable_view.vala:195
+#: src/widgets/views/abstract-cachiable.vala:230
#, c-format
-msgid "Cacheing of %s%s started"
-msgstr "Сохранение %sа%s было начато"
+msgid "%s '%s' was moved from data to cache"
+msgstr "%s '%s' был перемещен из данных в кэш"
#. Translators: first %s - content type (Playlist), second - name
-#: src/widgets/views/cachiable_view.vala:231
+#: src/widgets/views/abstract-cachiable.vala:240
#, c-format
-msgid "%s%s was removed from cache folder"
-msgstr "%s%s был удален из папки кэшей"
+msgid "%s removing has started. Please do not close the app"
+msgstr "Удаление %s начато. Пожалуйста, не закрывайте приложение"
-#. Translators: first %s - content type (Playlist), second - name
-#: src/widgets/views/cachiable_view.vala:241
-#, c-format
-msgid "%s%s is removing, please do not close the app"
-msgstr "%s%s удаляется, пожалуйста не закрывайте приложение"
-
-#: src/widgets/views/cant_show_view.vala:40
+#: src/widgets/views/cant-show.vala:38
#, c-format
msgid "Error %d"
msgstr "Ошибка %d"
-#: src/widgets/views/cant_show_view.vala:44
+#: src/widgets/views/cant-show.vala:42
msgid "Can't load page"
-msgstr "Не удается загрузить страницу %s"
+msgstr "Не удаётся загрузить страницу"
-#: src/widgets/views/cant_show_view.vala:47
+#: src/widgets/views/cant-show.vala:45
msgid "Can't find desired content"
-msgstr "Не удается найти желаемый контент"
+msgstr "Не удаётся найти желаемый контент"
-#: src/widgets/views/playlist_view.vala:109
+#: src/widgets/views/playlist.vala:85
msgid "Delete playlist?"
msgstr "Удалить плейлист?"
-#: src/widgets/views/playlist_view.vala:110
+#: src/widgets/views/playlist.vala:86
#, c-format
msgid "Playlist '%s' will be permanently deleted."
-msgstr "Плейлист '%s' будет безвозвратно удален."
+msgstr "Плейлист '%s' будет безвозвратно удалён."
-#: src/widgets/views/playlist_view.vala:126
+#: src/widgets/views/playlist.vala:105
#, c-format
msgid "Playlist '%s' was deleted"
-msgstr "Плейлист '%s' удален"
+msgstr "Плейлист '%s' удалён"
-#. Translators: 0 - female, 1 - male (different gender endings)
-#: src/widgets/views/playlist_view.vala:264
+#. Translators: %s is female person
+#: src/widgets/views/playlist.vala:248
#, c-format
+msgctxt "female person"
msgid "%s updated playlist %s"
-msgid_plural "%s updated playlist %s"
-msgstr[0] "%s обновил плейлист %s"
-msgstr[1] "%s обновил плейлист %s"
-msgstr[2] "%s обновила плейлист %s"
+msgstr "%s обновила плейлист %s"
-#: src/widgets/views/playlist_view.vala:291
+#. Translators: %s is male person
+#: src/widgets/views/playlist.vala:252
+#, c-format
+msgctxt "male person"
+msgid "%s updated playlist %s"
+msgstr "%s обновил плейлист %s"
+
+#: src/widgets/views/playlist.vala:282
#, c-format
msgid "Can't change visibility of '%s'"
-msgstr "Не получилось изменить видимость плейлиста '%s'"
+msgstr "Не удалось изменить видимость плейлиста '%s'"
-#: src/widgets/views/playlist_view.vala:297
+#: src/widgets/views/playlist.vala:288
#, c-format
msgid "Playlist '%s' is public now"
msgstr "Плейлист '%s' виден всем"
-#: src/widgets/views/playlist_view.vala:300
+#: src/widgets/views/playlist.vala:291
#, c-format
msgid "Playlist '%s' is private now"
msgstr "Плейлист '%s' виден только вам"
-#~ msgid "Added new authorization via WebView
"
-#~ msgstr "Добавлена новая авторизация через WebView
"
-
+#: src/window.vala:236
#, c-format
-#~ msgid "In cache folder found suspicious file '%s'. It moved to trash."
-#~ msgstr ""
-#~ "В папке кэшей обнаружен подозрительный файл '%s'. Он был перенесен в "
-#~ "корзину."
+msgid "Window info message: %s"
+msgstr "Информационное сообщение об окне: %s"
-#, c-format
-#~ msgid "Can't move file '%s' to '%s'. Error message: %s"
-#~ msgstr "Не удается переместить каталог. Сообщение: %s"
+#~ msgid "@APP_NAME@"
+#~ msgstr "@APP_NAME@"
-#, c-format
-#~ msgid "Can't move directory '%s' to '%s'. Error message: %s"
-#~ msgstr "Не удается переместить каталог. Сообщение: %s"
+#~ msgid "Unofficial Yandex.Music client for GNOME @NAME_SUFFIX@"
+#~ msgstr "Неофициальный клиент сервиса Я.Музыка для GNOME @NAME_SUFFIX@"
-#, fuzzy, c-format
-#~ msgid "Can't delete file '%s'."
-#~ msgstr "Не удается создать %s"
+#~ msgid "Vladimir Vaskov"
+#~ msgstr "Владимир Васьков"
-#, fuzzy, c-format
-#~ msgid "Can't remove directory '%s'. Error message: %s"
-#~ msgstr "Не удается переместить каталог. Сообщение: %s"
-
-#, fuzzy, c-format
-#~ msgid "Can't load image '%s'. Error message: %s"
-#~ msgstr "Не удается прочитать файл страницы. Сообщение: %s"
-
-#, fuzzy, c-format
-#~ msgid "Can't load audio '%s'. Error message: %s"
-#~ msgstr "Не удается переместить каталог. Сообщение: %s"
-
-#, fuzzy, c-format
-#~ msgid "Can't save audio '%s'. Error message: %s"
-#~ msgstr "Не удается переместить каталог. Сообщение: %s"
-
-#, fuzzy, c-format
-#~ msgid "Can't find '%s'. Error message: %s"
-#~ msgstr "Не удается переместить каталог. Сообщение: %s"
-
-#~ msgid "Delete temporary"
-#~ msgstr "Удалить временные файлы"
-
-#~ msgid "Previous"
-#~ msgstr "Предыдущий"
-
-#~ msgid "Next"
-#~ msgstr "Следующий"
-
-#~ msgid "Temporary playlist"
-#~ msgstr "Временный плейлист"
-
-#~ msgid "Shuffle"
-#~ msgstr "Перемешать очередь"
-
-#~ msgid "Repeat"
-#~ msgstr "Повтор"
-
-#~ msgid "Close"
-#~ msgstr "Закрыть"
-
-#~ msgid "USER "
-#~ msgstr "ПОЛЬЗОВАТЕЛЬСКИЙ "
-
-#~ msgid "TRACK"
-#~ msgstr "ТРЕК"
-
-#~ msgid "ALBUM "
-#~ msgstr "АЛЬБОМ "
-
-#~ msgid "ARTISTS "
-#~ msgstr "ИСПОЛНИТЕЛИ "
-
-#~ msgid "TRACK LYRICS"
-#~ msgstr "ТЕКСТ ПЕСНИ"
-
-#~ msgid "SIMILAR TRACKS"
-#~ msgstr "Похожие треки"
-
-#~ msgid "Backward"
-#~ msgstr "Назад"
-
-#~ msgid "Refresh"
-#~ msgstr "Обновить"
-
-#~ msgid "Main menu"
-#~ msgstr "Главное меню"
-
-#~ msgid "Account menu"
-#~ msgstr "Информация об аккаунте"
-
-#~ msgid "Global search"
-#~ msgstr "Поиск по всей Яндекс музыке"
-
-#~ msgid "Compact mode"
-#~ msgstr "Компактный режим"
-
-#~ msgid "Big picture mode"
-#~ msgstr "Режим Big picture"
-
-#~ msgctxt "preference window"
-#~ msgid "Main preferences"
-#~ msgstr "Основные параметры"
-
-#~ msgctxt "preference window"
-#~ msgid "Pages preferences"
-#~ msgstr "Параметры страниц"
-
-#~ msgctxt "preference window"
-#~ msgid "Cache preferences"
-#~ msgstr "Параметры кэширования"
-
-#~ msgctxt "preference window"
-#~ msgid "Cache content to ~/.cache"
-#~ msgstr "Кэшировать содержимое"
-
-#, c-format
-#~ msgid "Log created, loc - %s"
-#~ msgstr "Журнал создан, расположение - %s"
-
-#, c-format
-#~ msgid "Can't save image %s"
-#~ msgstr "Не удается сохранить изображение %s"
-
-#, c-format
-#~ msgid "Can't save audio %s"
-#~ msgstr "Не удается сохранить аудио %s"
-
-#, c-format
-#~ msgid "Can't create log on %s"
-#~ msgstr "Не получается создать файл лога %s"
-
-#, c-format
-#~ msgid "Can't write to log file. Message: %s"
-#~ msgstr "Не получается сделать запись в файл лога. Сообщение: %s"
-
-#~ msgid "Can't write to log"
-#~ msgstr "Не получается сделать запись в файл лога"
-
-#~ msgid ""
-#~ "Cache state of this object was changed out of this view. Please refresh"
-#~ msgstr ""
-#~ "Состояния кэширования этого объекта были изменены вне этой страницы. "
-#~ "Пожалуйста обновите страницу"
-
-#~ msgid "Playlist name can't be empty"
-#~ msgstr "Имя плейлиста не может быть пустым"
-
-#, c-format
-#~ msgid "Playlist '%s' was renamed to '%s'"
-#~ msgstr "Плейлист '%s' был переименован в '%s'"
-
-#~ msgctxt "auth window"
-#~ msgid "By username"
-#~ msgstr "По имени пользователя"
-
-#~ msgctxt "auth window"
-#~ msgid "Username or email adress"
-#~ msgstr "Имя пользователя или адрес электронной почты"
-
-#~ msgctxt "auth window"
-#~ msgid "By phone number"
-#~ msgstr "По номер телефона"
-
-#~ msgctxt "auth window"
-#~ msgid "By Qr-code"
-#~ msgstr "По QR-код"
-
-#~ msgctxt "auth window"
-#~ msgid "Loading…"
-#~ msgstr "Загрузка…"
-
-#~ msgctxt "auth window"
-#~ msgid "Enter password"
-#~ msgstr "Введите пароль"
-
-#~ msgid "Failed while getting csrf token"
-#~ msgstr "Ошибка при получении csrf токена"
-
-#~ msgid "Error while getting qr-code uri"
-#~ msgstr "Ошибка при получении uri qr-кода"
-
-#~ msgid "Authorization warning"
-#~ msgstr "Предупреждение об авторизации"
-
-#~ msgid ""
-#~ "Frequent authorization initialization attempts may lead to Yandex "
-#~ "perceiving this as ddos, so please check the data when entering and do "
-#~ "not log in too often in a short time. And DON'T USE QR-CODE IF YOU HAVE "
-#~ "NOT KEY APP"
-#~ msgstr ""
-#~ "Частые попытки авторизации могут привести к тому, что Яндекс воспримет "
-#~ "это как ddos-атаку, поэтому, пожалуйста, проверяйте данные при вводе и не "
-#~ "авторизуйтесь в аккаунт слишком часто за короткое время. И НЕ ИСПОЛЬЗУЙТЕ "
-#~ "QR-КОД, ЕСЛИ У ВАС НЕ ПОДКЛЮЧЕН Я.Ключ"
-
-#~ msgid "Ok"
-#~ msgstr "Ок"
-
-#~ msgid "Username/phone can't be empty"
-#~ msgstr "Имя пользователя/номер телефона не может быть пустым"
-
-#~ msgid "Yandex send captcha. There nothing we can do. Try later"
-#~ msgstr "Яндекс отправил капчу. There nothing we can do. Попробуйте позже"
-
-#~ msgid "User not registered"
-#~ msgstr "Пользователь не зарегистрирован"
-
-#~ msgid "Enter code from key app"
-#~ msgstr "Введите код из приложения Я.Ключ"
-
-#~ msgid "Enter password"
-#~ msgstr "Введите пароль"
-
-#, c-format
-#~ msgid ""
-#~ "Can't login, create an issue with the attached file %s to github page"
-#~ msgstr ""
-#~ "Не удается авторизоваться, создайте ишью на GitHub с приложенным файлом: "
-#~ "%s"
-
-#, c-format
-#~ msgid "Auth methods: %s"
-#~ msgstr "Методы аутентификации: %s"
-
-#~ msgid "Username incorrect"
-#~ msgstr "Неверное имя пользователя"
-
-#~ msgid "Password/code can't be empty"
-#~ msgstr "Пароль/код не может быть пустым"
-
-#~ msgid "Password/code incorrect"
-#~ msgstr "Пароль/Код неверен"
-
-#~ msgid "Error while checking qr"
-#~ msgstr "Ошибка при проверке qr-кода"
-
-#, c-format
-#~ msgid "Error while checking qr. Message: %s"
-#~ msgstr "Ошибка при проверке qr-кода. Сообщение: %s"
-
-#~ msgid "Error while getting qr-code. Try later"
-#~ msgstr "Ошибка при получении qr-кода. Попробуйте позже"
-
-#~ msgid "First release. For additional info check telegram channel
"
-#~ msgstr ""
-#~ "Первый релиз. Дополнительную информацию смотрите в telegram-канале
"
-
-#~ msgid "Duration: 11 min."
-#~ msgstr "Продолжительность: %s мин."
-
-#~ msgid "Duration: 120 h. 11 min."
-#~ msgstr "Продолжительность: %s ч. %s мин."
-
-#~ msgid "Repeat playback"
-#~ msgstr "Переключить повтор"
-
-#~ msgid "Delete temp cache?"
-#~ msgstr "Удалить временный кэш?"
-
-#~ msgid "Track was replaced"
-#~ msgstr "Трек был заменён"
-
-#~ msgctxt "preference window"
-#~ msgid "Manage cache"
-#~ msgstr "Управление кэшами"
-
-# Заметки о релизе
-#~ msgid "Added bebra
"
-#~ msgstr "Добавлена бебра
"
-
-#~ msgctxt "preference window"
-#~ msgid "Download content to disk at all"
-#~ msgstr "Загружать контент без кэшей"
-
-#~ msgctxt "preference window"
-#~ msgid "The directory where the content will be saved for permanent storage"
-#~ msgstr ""
-#~ "Каталог, в котором содержимое будет сохранено для постоянного хранения"
-
-#, fuzzy
-#~ msgid "Error while getting qr-code"
-#~ msgstr "Ошибка при чтении ответа ЯМ"
-
-#~ msgid "No playlists to display"
-#~ msgstr "Нет плейлистов для отображения"
-
-#~ msgctxt "auth window"
-#~ msgid "Ya.Music account"
-#~ msgstr "Аккаунт Я.Музыки"
-
-#~ msgctxt "auth window"
-#~ msgid "Code"
-#~ msgstr "Код"
-
-#~ msgctxt "auth window"
-#~ msgid "Password"
-#~ msgstr "Пароль"
-
-#~ msgctxt "preference window"
-#~ msgid "Cache possibility"
-#~ msgstr "Возможность кэширования"
-
-#~ msgctxt "preference window"
-#~ msgid "Marks visible"
-#~ msgstr "Видимость меток"
-
-#~ msgctxt "preference window"
-#~ msgid "The ability to disable the display of some track information"
-#~ msgstr "Отключение дополнительной информации о треках."
-
-#~ msgid "Login incorrect"
-#~ msgstr "Логин неверен"
-
-#~ msgctxt "shortcut window"
-#~ msgid "Next Track"
-#~ msgstr "Следующий трек"
-
-#~ msgid "Show explicit tracks"
-#~ msgstr "Показывать 18+ треки"
-
-#~ msgid "Settings"
-#~ msgstr "Настройки"
-
-#, c-format
-#~ msgid "Not implemented yet. Will be implemented in version %s"
-#~ msgstr "Ещё не реализовано. Будет реализовано в версии %s"
-
-#~ msgid "Liked tracks"
-#~ msgstr "Любимые треки"
-
-#~ msgid "Queue doesn't exist"
-#~ msgstr "Очередь не существует"
-
-#~ msgid "Answer is error"
-#~ msgstr "Ошибочный ответ"
-
-#, c-format
-#~ msgid "Caching of %s %s was canceled, due to cancellation"
-#~ msgstr "Сохранение %sа %s было отменено"
-
-#, c-format
-#~ msgid "%s cacheing failed"
-#~ msgstr "%s не был сохранен"
-
-#, c-format
-#~ msgid "%s uncached"
-#~ msgstr "%s был удален из п"
-
-#~ msgid "Content moved"
-#~ msgstr "Содержимое перенесено"
+#~ msgid "Rirusha"
+#~ msgstr "Rirusha"
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..55f2a27
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,1374 @@
+# Slovenian translation for cassette.
+# Copyright (C) 2024 cassette's COPYRIGHT HOLDER
+# This file is distributed under the same license as the cassette package.
+#
+# Martin Srebotnjak , 2024.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cassette main\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/Rirusha/Cassette/-/issues\n"
+"POT-Creation-Date: 2024-09-30 18:34+0000\n"
+"PO-Revision-Date: 2024-09-30 22:20+0200\n"
+"Last-Translator: Martin Srebotnjak \n"
+"Language-Team: Slovenian GNOME Translation Team \n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Generator: Poedit 2.2.1\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette.desktop.in.in:4
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:3 src/main.vala:23
+msgid "Cassette"
+msgstr "Kaseta"
+
+#: data/space.rirusha.Cassette.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME"
+msgstr "Neuradni odjemalec Yandex Music za GNOME"
+
+#. Translators: keep number of ';'
+#: data/space.rirusha.Cassette.desktop.in.in:7
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:7
+msgid "yandex;yandex music;yam;music;"
+msgstr "yandex;glasba yandex;yandex music;yam;glasba;music;"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:4
+msgid "Cassette (Devel)"
+msgstr "Kaseta (razvojna različica)"
+
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME (Devel build)"
+msgstr "Neuradni odjemalec Yandex Music za GNOME (razvojna gradnja)"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:7
+msgid "Unofficial Yandex Music client"
+msgstr "Neuradni odjemalec za Yandex Music"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:9
+msgid ""
+"GTK/Adwaita application that allows to use Yandex Music service on Linux "
+"operating systems."
+msgstr ""
+"Program GTK / Adwaita, ki omogoča uporabo storitve Yandex Music v "
+"operacijskih sistemih Linux."
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:13
+msgid "Features:"
+msgstr "Zmožnosti:"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:17
+msgid "Allows you to save playlists and albums for offline listening"
+msgstr ""
+"Omogoča shranjevanje seznamov predvajanja in albumov za poslušanje brez "
+"povezave"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:20
+msgid "Has a dynamic \"karaoke mode\" right in the track information panel"
+msgstr ""
+"Ima dinamičen način »karaoke« neposredno na informacijski plošči posnetka"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:23
+msgid ""
+"Allows you to more precisely customize the display and playback of special "
+"content, such as explicit or suitable for children."
+msgstr ""
+"Omogoča natančnejše prilagajanje prikaza in predvajanja posebnih vsebin, na "
+"primer eksplicitnih ali primernih za otroke."
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:27
+msgid "Displays tracks that are currently unavailable in the service"
+msgstr "Prikaže posnetke, ki trenutno niso na voljo v storitvi"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:30
+msgid "Shows which tracks have been replaced and by what"
+msgstr "Pokaže, kateri posnetki so bili nadomeščeni in s čim"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:34
+msgid ""
+"Cassette is an unofficial client and is not associated with or endorsed by "
+"Yandex."
+msgstr "Kaseta je neuradni odjemalec in ni povezana z Yandexom ali ga podpira."
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:63
+msgid "Liked view"
+msgstr "Pogled všečnih"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:67
+msgid "Playlists view"
+msgstr "Pogled seznamov predvajanja"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:71
+msgid "Sync lyrics"
+msgstr "Sinhroniziraj besedilo"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:75
+msgid "Playback queue"
+msgstr "Čakalna vrsta za predvajanje"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:79
+msgid "Waves view"
+msgstr "Pogled valovanja"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:83
+msgid "Main preferences"
+msgstr "Glavne nastavitve"
+
+#: data/ui/account-info-dialog.blp:5
+msgid "Account information"
+msgstr "Podatki o računu"
+
+#: data/ui/account-info-dialog.blp:52
+msgid "Open in browser"
+msgstr "Odpri v brskalniku"
+
+#: data/ui/account-info-dialog.blp:61
+msgid "Plus"
+msgstr "Plus"
+
+#: data/ui/account-info-dialog.blp:70 data/ui/no-plus-dialog.blp:51
+#: src/authenticator.vala:51
+msgid "Log out"
+msgstr "Odjavi"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:11
+msgid "Usage mode"
+msgstr "Način uporabe"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:40
+msgctxt "auth window"
+msgid "Choose usage mode"
+msgstr "Izberite način uporabe"
+
+#: data/ui/begin-view.ui:50
+msgctxt "auth window"
+msgid ""
+"If you select the \"Online mode\", you can access local music by enabling "
+"the display of the corresponding pages in the pages preferences, as well as "
+"log in later when selecting \"Local mode\""
+msgstr ""
+"Če izberete »Spletni način«, lahko dostopate do krajevne glasbe tako, da "
+"omogočite prikaz ustreznih strani v nastavitvah strani, kot tudi pozneje, ko "
+"izberete »Krajevni način«"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:75
+msgctxt "auth window"
+msgid "Online mode"
+msgstr "Spletni način"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:85
+msgctxt "auth window"
+msgid "Local mode"
+msgstr "Krajevni način"
+
+#. Translators: "Close" window button label
+#: data/ui/begin-view.ui:97
+msgctxt "auth window"
+msgid "Close"
+msgstr "Zapri"
+
+#: data/ui/begin-view.ui:112
+msgid "Authorization"
+msgstr "Overitev"
+
+#. Translators: size of cache dirs
+#: data/ui/cache-deletion-preferences.ui:21
+msgid "Dirs size:"
+msgstr "Velikost map:"
+
+#. Translators: tempprary cache folder
+#: data/ui/cache-deletion-preferences.ui:35
+msgid "Cache"
+msgstr "Predpomnilnik"
+
+#: data/ui/cache-deletion-preferences.ui:88
+msgid "Clear"
+msgstr "Počisti"
+
+#. Translators: temparence cache folder
+#: data/ui/cache-deletion-preferences.ui:109
+msgid "Data"
+msgstr "Podatki"
+
+#: data/ui/cache-deletion-preferences.ui:159
+msgid "Move to cache"
+msgstr "Premakni v predpomnilnik"
+
+#: data/ui/cache-deletion-preferences.ui:163
+msgid "Move"
+msgstr "Premakni"
+
+#: data/ui/cache-indicator.blp:35
+msgid "Show all cache jobs"
+msgstr "Pokaži vsa opravila predpomnilnika"
+
+#: data/ui/custom-page-preferences.ui:17
+msgid "Title: "
+msgstr "Naslov: "
+
+#: data/ui/custom-page-preferences.ui:38
+msgid "Icon: "
+msgstr "Ikona: "
+
+#: data/ui/custom-page-preferences.ui:75
+msgid "Save page"
+msgstr "Shrani stran"
+
+#: data/ui/custom-page-preferences.ui:92
+msgid "Remove page"
+msgstr "Odstrani stran"
+
+#. Translators: title of preference group
+#: data/ui/custom-pages-preferences.ui:7
+msgctxt "preference window"
+msgid "Custom pages"
+msgstr "Strani po meri"
+
+#. Translators: description of preference group
+#: data/ui/custom-pages-preferences.ui:9
+msgctxt "preference window"
+msgid "Here you can control custom pages."
+msgstr "Tukaj lahko nadzirate strani po meri."
+
+#: data/ui/disliked-tracks-view.ui:23
+#: src/widgets/buttons/menu/primary-menu-button.vala:31
+msgid "Disliked tracks"
+msgstr "Posnetki, ki ne ugajajo"
+
+#: data/ui/header-bar.blp:12
+msgid "Go back"
+msgstr "Skoči nazaj"
+
+#: data/ui/header-bar.blp:20
+msgid "Refresh"
+msgstr "Osveži"
+
+#: data/ui/header-bar.blp:28
+msgid "Yandex Music search"
+msgstr "Iskanje Yandex Music"
+
+#: data/ui/help-overlay.blp:11
+msgid "Main Actions"
+msgstr "Glavna dejanja"
+
+#: data/ui/help-overlay.blp:14
+msgid "Show Shortcuts"
+msgstr "Pokaži tipkovne bližnjice"
+
+#: data/ui/help-overlay.blp:19
+msgid "Quit"
+msgstr "Izhod"
+
+#: data/ui/help-overlay.blp:25
+msgid "Playback Control"
+msgstr "Nadzor predvajanja"
+
+#: data/ui/help-overlay.blp:28
+msgid "Play/Pause playback"
+msgstr "Predvajaj/zaustavi predvajanje"
+
+#: data/ui/help-overlay.blp:33 data/ui/player-bar.blp:87
+msgid "Play previous track"
+msgstr "Predvajaj prejšnji posnetek"
+
+#: data/ui/help-overlay.blp:38 data/ui/player-bar.blp:119
+msgid "Play next track"
+msgstr "Predvajaj naslednji posnetek"
+
+#: data/ui/help-overlay.blp:43
+msgid "Mute app"
+msgstr "Utišaj program"
+
+#: data/ui/help-overlay.blp:49
+msgid "Queue control"
+msgstr "Nadzor čakalne vrste"
+
+#: data/ui/help-overlay.blp:52 data/ui/player-bar.blp:141
+msgid "Change shuffle mode"
+msgstr "Spremeni način naključnega predvajanja"
+
+#: data/ui/help-overlay.blp:57 data/ui/player-bar.blp:65
+msgid "Change repeat mode"
+msgstr "Spremeni način ponavljanja"
+
+#: data/ui/help-overlay.blp:63
+msgid "Other"
+msgstr "Drugo"
+
+#: data/ui/help-overlay.blp:66
+msgid "Share current track"
+msgstr "Trenutni posnetek v skupno rabo"
+
+#: data/ui/help-overlay.blp:71
+msgid "Parse url from clipboard"
+msgstr "Razčleni URL iz odložišča"
+
+#: data/ui/info-marks.ui:23
+msgid "Explicit content"
+msgstr "Eksplicitna vsebina"
+
+#: data/ui/info-marks.ui:32
+msgid "Child content"
+msgstr "Vsebina za otroke"
+
+#: data/ui/main-view.blp:6
+msgid "Page under construction"
+msgstr "Stran v gradnji"
+
+#: data/ui/main-view.blp:20
+msgid "All stations"
+msgstr "Vse postaje"
+
+#: data/ui/no-plus-dialog.blp:20
+msgid "No Plus Subscription"
+msgstr "Brez naročnine Plus"
+
+#: data/ui/no-plus-dialog.blp:21
+msgid ""
+"To avoid problems with Yandex, the online functions of the application are "
+"not available without a Yandex.Plus subscription. Thanks for understanding."
+msgstr ""
+"Da bi se izognili težavam z Yandexom, spletne funkcije programa niso na "
+"voljo brez naročnine na Yandex.Plus. Hvala za razumevanje."
+
+#: data/ui/no-plus-dialog.blp:41
+msgid "Get Plus"
+msgstr "Pridobi Plus"
+
+#: data/ui/player-bar.blp:22
+msgid "Show track info"
+msgstr "Pokaži podatke o posnetku"
+
+#: data/ui/player-bar.blp:206
+msgid "Show wave settings"
+msgstr "Pokaži nastavitve signalne oblike"
+
+#: data/ui/player-bar.blp:216
+msgid "Show playback queue"
+msgstr "Pokaži čakalno vrsto za predvajanje"
+
+#: data/ui/player-bar.blp:229
+msgid "Change volume"
+msgstr "Spremeni glasnost"
+
+#: data/ui/player-queue.blp:5 src/application.vala:271
+msgid "Playing now"
+msgstr "Zdaj se predvaja"
+
+#: data/ui/playlist-choose-dialog.ui:8
+msgid "Choose playlist to add"
+msgstr "Izberite seznam predvajanja, ki ga želite dodati"
+
+#: data/ui/playlist-create-button.ui:36
+msgid "Create playlist"
+msgstr "Ustvari seznam predvajanja"
+
+#: data/ui/playlist-micro.ui:39 data/ui/playlist-view.ui:56
+#: src/widgets/cache-indicator/job-info-badge.vala:42
+#: src/widgets/save-stack.vala:56 src/widgets/views/abstract-cachiable.vala:167
+msgid "Playlist"
+msgstr "Seznam predvajanja"
+
+#: data/ui/playlist-row.ui:40
+msgid "Empty"
+msgstr "Prazno"
+
+#: data/ui/playlists-view.ui:23
+msgid "Your playlists"
+msgstr "Vaši seznami predvajanja"
+
+#: data/ui/playlists-view.ui:39
+msgid "Also you liked these playlists"
+msgstr "Všeč so vam bili naslednji seznami predvajanja"
+
+#: data/ui/playlist-view.ui:187
+msgid "Change playlist visibility"
+msgstr "Spremeni vidnost seznama predvajanja"
+
+#: data/ui/playlist-view.ui:211
+msgid "Add page to header"
+msgstr "Dodaj stran v glavo"
+
+#. Translators: tooltip of "save" button
+#: data/ui/playlist-view.ui:233 data/ui/playlist-view.ui:237
+#: src/widgets/buttons/menu/track-options-button.vala:82
+#: src/widgets/buttons/menu/track-options-button.vala:107
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:38
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:49
+#: src/widgets/buttons/menu/track-queue-options-button.vala:72
+#: src/widgets/buttons/menu/track-queue-options-button.vala:102
+msgid "Save"
+msgstr "Shrani"
+
+#. Translators: tooltip of "delete" button
+#: data/ui/playlist-view.ui:256 data/ui/playlist-view.ui:260
+#: src/widgets/preferences/cache-deletion-preferences.vala:96
+#: src/widgets/preferences/preferences-dialog.vala:140
+#: src/widgets/views/playlist.vala:90
+msgid "Delete"
+msgstr "Izbriši"
+
+#. Translators: tooltip of "abort" button
+#: data/ui/playlist-view.ui:276
+msgid "Abort"
+msgstr "Prekliči"
+
+#: data/ui/playlist-view.ui:280
+msgid "Stop"
+msgstr "Ustavi"
+
+#: data/ui/preferences-dialog.ui:8
+msgctxt "preference dialog"
+msgid "Main"
+msgstr "Glavno"
+
+#: data/ui/preferences-dialog.ui:12
+msgctxt "preference dialog"
+msgid "General"
+msgstr "Splošno"
+
+#: data/ui/preferences-dialog.ui:15
+msgctxt "preference dialog"
+msgid "Enable high quality audio"
+msgstr "Omogoči visokokakovostni zvok"
+
+#: data/ui/preferences-dialog.ui:16
+msgctxt "preference dialog"
+msgid ""
+"Attention! If the track was downloaded in low quality, and after the "
+"download is enabled in high quality, the audio will not be reloaded"
+msgstr ""
+"Pozor! Če je bil posnetek prenesen v nizki kakovosti in je kasneje prenos "
+"omogočen v visoki kakovosti, zvok ne bo ponovno naložen"
+
+#: data/ui/preferences-dialog.ui:21
+msgctxt "preference dialog"
+msgid "Add track on top of playlist"
+msgstr "Dodaj posnetek na vrh seznama predvajanja"
+
+#: data/ui/preferences-dialog.ui:22
+msgctxt "preference dialog"
+msgid "Will the track be added to the playlist as the first or as the last"
+msgstr "Ali bo posnetek dodan na seznam predvajanja kot prvi ali zadnji"
+
+#: data/ui/preferences-dialog.ui:27
+msgctxt "preference dialog"
+msgid "Show 'Playing now' notification"
+msgstr "Pokaži obvestilo »Zdaj se predvaja«"
+
+#: data/ui/preferences-dialog.ui:28
+msgctxt "preference dialog"
+msgid "Show a notification when switching a track"
+msgstr "Pokaži obvestilo pri preklapljanju med posnetki"
+
+#: data/ui/preferences-dialog.ui:35
+msgctxt "preference dialog"
+msgid "Show additional marks"
+msgstr "Pokaži dodatne oznake"
+
+#: data/ui/preferences-dialog.ui:36
+msgctxt "preference dialog"
+msgid "Additional marks display additional information about the track"
+msgstr "Dodatne oznake prikazujejo dodatne informacije o posnetku"
+
+#: data/ui/preferences-dialog.ui:39
+msgctxt "preference dialog"
+msgid "Show save mark"
+msgstr "Pokaži oznako za shranjevanje"
+
+#: data/ui/preferences-dialog.ui:40
+msgctxt "preference dialog"
+msgid "Show a label with information about the caching status of the track"
+msgstr "Pokaži oznako z informacijami o stanju predpomnjenja posnetka"
+
+#: data/ui/preferences-dialog.ui:45
+msgctxt "preference dialog"
+msgid "Show cache mark"
+msgstr "Pokaži oznako predpomnjenja"
+
+#: data/ui/preferences-dialog.ui:46
+msgctxt "preference dialog"
+msgid "Show a mark about saving a track to the cache"
+msgstr "Pokaži oznako za shranjevanje posnetka v predpomnilnik"
+
+#: data/ui/preferences-dialog.ui:51
+msgctxt "preference dialog"
+msgid "Show replaced mark"
+msgstr "Pokaži zamenjano oznako"
+
+#: data/ui/preferences-dialog.ui:52
+msgctxt "preference dialog"
+msgid "Show a mark that shows that the track has been replaced"
+msgstr "Pokaži oznako, ki označuje, da je bil posnetek zamenjan"
+
+#: data/ui/preferences-dialog.ui:59
+msgctxt "preference dialog"
+msgid "Tracks visibility"
+msgstr "Vidnost posnetkov"
+
+#: data/ui/preferences-dialog.ui:60
+msgctxt "preference dialog"
+msgid ""
+"Show special tracks in track lists. Filter doesn't work when searching in "
+"track list"
+msgstr ""
+"Pokaži posebne posnetke na seznamih posnetkov. Filter ne deluje pri iskanju "
+"po seznamu posnetkov"
+
+#: data/ui/preferences-dialog.ui:63
+msgctxt "preference dialog"
+msgid "Show unavailable content"
+msgstr "Pokaži vsebine, ki niso na voljo"
+
+#: data/ui/preferences-dialog.ui:64
+msgctxt "preference dialog"
+msgid ""
+"Show tracks that are not available in the service. You can't listen to them"
+msgstr "Pokaži posnetke, ki niso na voljo v storitvi. Ne morete jih poslušati"
+
+#: data/ui/preferences-dialog.ui:69
+msgctxt "preference dialog"
+msgid "Show content suitable for children"
+msgstr "Pokaži vsebino, primerno za otroke"
+
+#: data/ui/preferences-dialog.ui:70
+msgctxt "preference dialog"
+msgid "Show content that is specific to children"
+msgstr "Pokaži vsebine, ki so posebej primerne za otroke"
+
+#: data/ui/preferences-dialog.ui:75
+msgctxt "preference dialog"
+msgid "Show explicit content"
+msgstr "Pokaži vsebine za odrasle"
+
+#: data/ui/preferences-dialog.ui:76
+msgctxt "preference dialog"
+msgid "Show content that has age restrictions"
+msgstr "Pokaži vsebine, za katero veljajo starostne omejitve"
+
+#: data/ui/preferences-dialog.ui:83
+msgctxt "preference dialog"
+msgid "Other"
+msgstr "Drugo"
+
+#: data/ui/preferences-dialog.ui:86
+msgctxt "preference dialog"
+msgid "Enable Debug-Mode"
+msgstr "Omogoči način odpravljanja napak"
+
+#: data/ui/preferences-dialog.ui:87
+msgctxt "preference dialog"
+msgid "Enable logging of additional information useful for error detection"
+msgstr ""
+"Omogoči pisanje zapisnika dodatnih informacij, uporabnih za zaznavanje napak"
+
+#: data/ui/preferences-dialog.ui:94
+msgctxt "preference dialog"
+msgid "Experimental"
+msgstr "Poskusno"
+
+#: data/ui/preferences-dialog.ui:95
+msgctxt "preference dialog"
+msgid "Parameters that test anything and may be removed in future releases"
+msgstr ""
+"Parametri, ki preizkušajo karkoli, in bodo morda odstranjeni v prihodnjih "
+"izdajah"
+
+#: data/ui/preferences-dialog.ui:98
+msgctxt "preference dialog"
+msgid "Use only bottom sheet menus"
+msgstr "Uporabi samo menije na spodnjih zavihkih"
+
+#: data/ui/preferences-dialog.ui:99
+msgctxt "preference dialog"
+msgid "Test preference for bottom sheet menu"
+msgstr "Preskusna nastavitev za meni spodnjih zavihkov"
+
+#: data/ui/preferences-dialog.ui:108
+msgctxt "preference dialog"
+msgid "Pages"
+msgstr "Strani"
+
+#: data/ui/preferences-dialog.ui:112
+msgctxt "preference dialog"
+msgid "Static pages"
+msgstr "Statične strani"
+
+#: data/ui/preferences-dialog.ui:113
+msgctxt "preference dialog"
+msgid ""
+"Here you can show or hide static pages. They will always be displayed on the "
+"left side of the header."
+msgstr ""
+"Tukaj lahko prikažete ali skrijete statične strani. Vedno bodo prikazane na "
+"levi strani glave."
+
+#: data/ui/preferences-dialog.ui:116
+msgctxt "preference dialog"
+msgid "Show 'Main' page"
+msgstr "Pokaži »Glavno« stran"
+
+#: data/ui/preferences-dialog.ui:121
+msgctxt "preference dialog"
+msgid "Show 'Liked' page"
+msgstr "Pokaži stran »Všeč mi je«"
+
+#: data/ui/preferences-dialog.ui:126
+msgctxt "preference dialog"
+msgid "Show 'Playlists' page"
+msgstr "Pokaži stran »Seznami predvajanja«"
+
+#: data/ui/preferences-dialog.ui:138
+msgctxt "preference dialog"
+msgid "Cache"
+msgstr "Predpomnilnik"
+
+#: data/ui/preferences-dialog.ui:142
+msgctxt "preference dialog"
+msgid "Cache managing"
+msgstr "Upravljanje predpomnilnika"
+
+#: data/ui/preferences-dialog.ui:143
+msgctxt "preference dialog"
+msgid ""
+"Here you can see application memory usage, delete all cache from cache "
+"folder and control downloading cache to disk"
+msgstr ""
+"Tukaj si lahko ogledate porabo pomnilnika programa, izbrišete ves "
+"predpomnilnik iz mape predpomnilnika in nadzirate prenos predpomnilnika na "
+"disk"
+
+#: data/ui/preferences-dialog.ui:146
+msgctxt "preference dialog"
+msgid "Cache content"
+msgstr "Vsebina predpomnilnika"
+
+#: data/ui/preferences-dialog.ui:147
+msgctxt "preference dialog"
+msgid ""
+"For better performance. Over time, it starts to take up a lot of space. So "
+"far, manual cleaning is required. If enabled, the application will cache all "
+"content to cache dir for better performance, otherwise, the application will "
+"load content only when caching objects (such as playlists or albums). "
+"Disabling the parameter does not delete already downloaded content"
+msgstr ""
+"Za boljše delovanje. Sčasoma začne zavzemati veliko prostora. Zaenkrat je "
+"potrebno ročno čiščenje. Če je omogočeno, bo program predpomnil vso vsebino "
+"v predpomnilno mapo za boljše delovanje, sicer bo program naložilavsebino "
+"samo pri predpomnjenju predmetov (kot so seznami predvajanja ali albumi). Če "
+"onemogočite parameter, ne izbrišete že prenesene vsebine"
+
+#: data/ui/save-stack.ui:25
+msgid "Content saving…"
+msgstr "Shranjevanje vsebine ..."
+
+#: data/ui/save-stack.ui:42
+msgid "Content cached"
+msgstr "Vsebina predpomnjena"
+
+#: data/ui/save-stack.ui:56
+msgid "Content saved"
+msgstr "Vsebina shranjena"
+
+#: data/ui/stations-view.blp:22
+msgid "Stations dashboard"
+msgstr "Nadzorna plošča postaj"
+
+#: data/ui/stations-view.blp:58
+msgid "Searching for station…"
+msgstr "Iskanje postaje ..."
+
+#: data/ui/stations-view.blp:77
+msgid "By genre…"
+msgstr "Po zvrsti …"
+
+#: data/ui/stations-view.blp:99 data/ui/wave-settings.blp:60
+msgid "By mood…"
+msgstr "Po razpoloženju …"
+
+#: data/ui/stations-view.blp:121 data/ui/wave-settings.blp:25
+msgid "By activity…"
+msgstr "Po aktivnosti …"
+
+#: data/ui/stations-view.blp:143
+msgid "By epoch…"
+msgstr "Po dobi …"
+
+#: data/ui/stations-view.blp:165
+msgid "Other…"
+msgstr "Drugo …"
+
+#: data/ui/stations-view.blp:209
+msgid "No stations with that name were found"
+msgstr "Postaje s tem imenom ni moč najti"
+
+#: data/ui/track-info.blp:103
+msgid "Track lyrics"
+msgstr "Besedilo posnetka"
+
+#: data/ui/track-info.blp:117
+msgid "Authors"
+msgstr "Avtorji"
+
+#: data/ui/track-info.blp:135
+msgid "Source"
+msgstr "Vir"
+
+#: data/ui/track-info.blp:158
+msgid "Similar tracks"
+msgstr "Podobni posnetki"
+
+#. Translators: placeholder of "search" entry. Local track search (inside of track list)
+#: data/ui/track-list.ui:21
+msgid "Search track"
+msgstr "Poišči posnetek"
+
+#. Translators: part of sort by
+#: data/ui/track-list.ui:30
+msgid "Sort by"
+msgstr "Razvrsti po"
+
+#: data/ui/track-list.ui:77
+msgid "No tracks to display"
+msgstr "Ni posnetkov za prikaz"
+
+#: data/ui/track-list.ui:88
+msgid "name"
+msgstr "name"
+
+#: data/ui/track-list.ui:92
+msgid "artist"
+msgstr "izvajalec"
+
+#: data/ui/track-list.ui:96
+msgid "album"
+msgstr "album"
+
+#: data/ui/track-list.ui:100
+msgid "duration"
+msgstr "trajanje"
+
+#: data/ui/track-placeholder.ui:9 src/widgets/pages/loading-page.vala:37
+msgid "Loading…"
+msgstr "Poteka nalaganje …"
+
+#: data/ui/wave-settings.blp:42
+msgid "By diversity…"
+msgstr "Po raznolikosti ..."
+
+#: data/ui/wave-settings.blp:78
+msgid "By language…"
+msgstr "Po jeziku ..."
+
+#: data/ui/wave-settings.blp:93
+msgid "Can't get wave settings"
+msgstr "Nastavitev signalne oblike ni mogoče pridobiti"
+
+#: data/ui/window.blp:57 src/window.vala:252
+msgid "Reconnect"
+msgstr "Ponovno se poveži"
+
+#: data/ui/window.blp:58 src/application.vala:151
+msgid "Connection problems"
+msgstr "Težave s povezavo"
+
+#. Translators: NAME /n NAME
+#: src/about.vala:59
+msgid "translator-credits"
+msgstr "Martin Srebotnjak "
+
+#: src/about.vala:67
+msgid "Telegram channel"
+msgstr "Kanal Telegram"
+
+#: src/about.vala:68
+msgid "Financial support (Tinkoff)"
+msgstr "Finančna podpora (Tinkoff)"
+
+#: src/about.vala:69
+msgid "Financial support (Boosty)"
+msgstr "Finančna podpora (Boosty)"
+
+#. Please keep alphabetical
+#: src/about.vala:72
+msgid "Sponsors"
+msgstr "Sponzorji"
+
+#: src/application.vala:62
+msgid "Print version information and exit"
+msgstr "Izpiši podatke o različici in končaj"
+
+#: src/application.vala:145
+msgid "Connection restored"
+msgstr "Povezava je bila obnovljena"
+
+#: src/application.vala:273
+msgid "Previous"
+msgstr "Prejšnje"
+
+#: src/application.vala:274
+msgid "Next"
+msgstr "Naslednje"
+
+#: src/application.vala:357
+msgid "Current track can not be copied to the clipboard"
+msgstr "Trenutnega posnetka ni mogoče kopirati v odložišče"
+
+#: src/application.vala:371 src/application.vala:378 src/application.vala:435
+msgid "Can't parse clipboard content"
+msgstr "Vsebine odložišča ni mogoče razčleniti"
+
+#: src/application.vala:389
+msgid "Users view not implemented yet"
+msgstr "Pogled uporabnikov še ni implementiran"
+
+#: src/application.vala:405 src/application.vala:419
+msgid "Albums view not implemented yet"
+msgstr "Pogled albumov še ni implementiran"
+
+#: src/authenticator.vala:46
+msgid "Log out?"
+msgstr "Se želite odjaviti?"
+
+#: src/authenticator.vala:47
+msgid "You will need to log in again to use the app"
+msgstr "Če želite uporabljati program, se boste morali znova prijaviti"
+
+#. Translators: cancel of deleting playlist
+#: src/authenticator.vala:50
+#: src/widgets/preferences/cache-deletion-preferences.vala:95
+#: src/widgets/preferences/preferences-dialog.vala:139
+#: src/widgets/views/playlist.vala:89
+msgid "Cancel"
+msgstr "Prekliči"
+
+#: src/authenticator.vala:97
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Moving…"
+msgstr "Premikanje …"
+
+#. Translators: Playlist with liked tracks
+#: src/client/api/objects/playlist/playlist.vala:49
+#: src/client/api/objects/playlist/playlist.vala:99 src/pager.vala:276
+msgid "Liked"
+msgstr "Všeč"
+
+#. Translators: Playlist that updates every day
+#: src/client/api/objects/playlist/playlist.vala:53
+msgid "Daily"
+msgstr "Dnevno"
+
+#. Translators: Unknown playlist
+#: src/client/api/objects/playlist/playlist.vala:57
+msgid "Unknown"
+msgstr "Neznano"
+
+#: src/client/cachier/storager.vala:124
+#, c-format
+msgid "Database was initialized, loc - %s"
+msgstr "Zbirka podatkov je bila inicializirana, loc - %s"
+
+#: src/client/cachier/storager.vala:801
+#, c-format
+msgid "Can't save object %s"
+msgstr "Predmeta %s ni mogoče shraniti"
+
+#: src/client/cachier/storager.vala:818
+msgid "Byte"
+msgid_plural "Bytes"
+msgstr[0] "bajtov"
+msgstr[1] "bajt"
+msgstr[2] "bajta"
+msgstr[3] "bajte"
+
+#: src/client/cachier/storager.vala:821
+msgid "Kilobyte"
+msgid_plural "Kilobytes"
+msgstr[0] "kilobajte"
+msgstr[1] "kilobajt"
+msgstr[2] "kilobajta"
+msgstr[3] "kilobajte"
+
+#: src/client/cachier/storager.vala:824
+msgid "Megabyte"
+msgid_plural "Megabytes"
+msgstr[0] "megabajtov"
+msgstr[1] "megabajt"
+msgstr[2] "megabajta"
+msgstr[3] "megabajte"
+
+#: src/client/cachier/storager.vala:827
+msgid "Gigabyte"
+msgid_plural "Gigabytes"
+msgstr[0] "gigabajtov"
+msgstr[1] "gigabajt"
+msgstr[2] "gigabajta"
+msgstr[3] "gigabajte"
+
+#: src/client/cachier/storager.vala:830
+msgid "Terabyte"
+msgid_plural "Terabytes"
+msgstr[0] "terabajtov"
+msgstr[1] "terabajt"
+msgstr[2] "terabajta"
+msgstr[3] "terabajte"
+
+#: src/client/cachier/storager.vala:859
+#, c-format
+msgid "Error while getting cache directory size. Message %s"
+msgstr "Napaka pri pridobivanju velikosti mape predpomnilnika. Sporočilo %s"
+
+#: src/client/cachier/storager.vala:894
+#, c-format
+msgid "Error while getting permanent directory size. Message %s"
+msgstr "Napaka pri pridobivanju velikosti trajne mape. Sporočilo %s"
+
+#: src/client/jsoner.vala:358 src/client/jsoner.vala:419
+#: src/client/jsoner.vala:526 src/client/jsoner.vala:550
+#, c-format
+msgid "Wrong type: expected %s, got %s"
+msgstr "Napačna vrsta: pričakovano %s, prejeto %s"
+
+#: src/client/player/mods/abstract-mode.vala:91
+msgid "Problems with queue"
+msgstr "Težave s čakalno vrsto"
+
+#. Translators: name of new created playlist
+#: src/client/talkers/yam-talker.vala:627
+msgid "New Playlist"
+msgstr "Nov seznam predvajanja"
+
+#: src/pager.vala:162
+#, c-format
+msgid "Can't set title \"%s\" to page"
+msgstr "Strani ni mogoče nastaviti naslova »%s«"
+
+#: src/pager.vala:173
+#, c-format
+msgid "Can't set icon with name \"%s\" to page"
+msgstr "Strani ni mogoče nastaviti ikone z imenom »%s«"
+
+#: src/pager.vala:199
+msgid "Reached max page count"
+msgstr "Doseženo največje število strani"
+
+#: src/pager.vala:205
+#, c-format
+msgid "Page '%s' already added"
+msgstr "Stran »%s« je že dodana"
+
+#: src/pager.vala:267
+msgid "Main"
+msgstr "Glavno"
+
+#: src/pager.vala:286
+msgid "Playlists"
+msgstr "Seznami predvajanja"
+
+#: src/pager.vala:311
+#, c-format
+msgid "Can't read pages file. Message: %s"
+msgstr "Datoteke strani ni mogoče prebrati. Sporočilo: %s"
+
+#: src/pager.vala:331
+#, c-format
+msgid "Can't create pages file. Message: %s"
+msgstr "Ni mogoče ustvariti datoteke strani. Sporočilo: %s"
+
+#: src/utils.vala:69
+msgid "Not implemented yet"
+msgstr "Še ni izvedeno"
+
+#: src/utils.vala:76
+msgid "Need authorization"
+msgstr "Potrebna je overitev"
+
+#: src/utils.vala:80
+msgid "Need Bookmate subscription"
+msgstr "Potrebujete naročnino na Bookmate"
+
+#: src/utils.vala:176 src/utils.vala:192
+msgid "Link copied to clipboard"
+msgstr "Povezava je kopirana v odložišče"
+
+#: src/utils.vala:241
+#, c-format
+msgid "Duration: %s h. %s min."
+msgstr "Trajanje: %s u. %s min."
+
+#: src/utils.vala:243
+#, c-format
+msgid "Duration: %s min."
+msgstr "Trajanje: %s min."
+
+#: src/utils.vala:357
+msgid "today"
+msgstr "danes"
+
+#: src/utils.vala:359
+msgid "yesterday"
+msgstr "včeraj"
+
+#: src/widgets/buttons/just/dislike-button.vala:37
+msgid "Remove dislike"
+msgstr "Odstrani neugajanje"
+
+#: src/widgets/buttons/just/dislike-button.vala:40
+msgid "Set dislike"
+msgstr "Nastavi neugajanje"
+
+#: src/widgets/buttons/just/like-button.vala:41
+msgid "Remove like"
+msgstr "Odstrani všeček"
+
+#: src/widgets/buttons/just/like-button.vala:48
+msgid "Set like"
+msgstr "Nastavi všeček"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:37
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:40
+msgid "Pause"
+msgstr "Premor"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:44
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:47
+msgid "Play"
+msgstr "Predvajaj"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:48
+#, c-format
+msgid "Playlist '%s'"
+msgstr "Seznam predvajanja »%s«"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:53
+#: src/widgets/buttons/menu/playlist-options-button.vala:66
+msgid "My Vibe by playlist"
+msgstr "My Vibe po seznamu predvajanja"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:54
+#: src/widgets/buttons/menu/playlist-options-button.vala:76
+#: src/widgets/buttons/menu/track-options-button.vala:80
+#: src/widgets/buttons/menu/track-options-button.vala:105
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:35
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:46
+#: src/widgets/buttons/menu/track-queue-options-button.vala:69
+#: src/widgets/buttons/menu/track-queue-options-button.vala:99
+msgid "Add to queue"
+msgstr "Dodaj v vrsto predvajanja"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:55
+#: src/widgets/buttons/menu/playlist-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:83
+#: src/widgets/buttons/menu/track-options-button.vala:108
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:39
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:50
+#: src/widgets/buttons/menu/track-queue-options-button.vala:73
+#: src/widgets/buttons/menu/track-queue-options-button.vala:103
+msgid "Share"
+msgstr "Deli"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:26
+msgid "Primary menu"
+msgstr "Osnovni meni"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:32
+msgid "Parse URL from clipboard"
+msgstr "Razčleni URL iz odložišča"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:33
+msgid "Preferences"
+msgstr "Nastavitve"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:34
+msgid "Keyboard Shortcuts"
+msgstr "Tipkovne bližnjice"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:35
+msgid "About Cassette"
+msgstr "O programu Kaseta"
+
+#: src/widgets/buttons/menu/track-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:94
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:32
+#: src/widgets/buttons/menu/track-queue-options-button.vala:66
+#: src/widgets/buttons/menu/track-queue-options-button.vala:87
+msgid "My Vibe by track"
+msgstr "My Vibe po posnetku"
+
+#: src/widgets/buttons/menu/track-options-button.vala:78
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:33
+#: src/widgets/buttons/menu/track-queue-options-button.vala:67
+msgid "Show info"
+msgstr "Pokaži podatke"
+
+#: src/widgets/buttons/menu/track-options-button.vala:79
+#: src/widgets/buttons/menu/track-options-button.vala:104
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:34
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:45
+#: src/widgets/buttons/menu/track-queue-options-button.vala:68
+#: src/widgets/buttons/menu/track-queue-options-button.vala:98
+msgid "Play next"
+msgstr "Predvajaj naslednje"
+
+#: src/widgets/buttons/menu/track-options-button.vala:81
+#: src/widgets/buttons/menu/track-options-button.vala:106
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:36
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:47
+#: src/widgets/buttons/menu/track-queue-options-button.vala:70
+#: src/widgets/buttons/menu/track-queue-options-button.vala:100
+msgid "Add to playlist"
+msgstr "Dodaj na seznam predvajanja"
+
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:37
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:48
+msgid "Remove from playlist"
+msgstr "Odstrani s seznama predvajanja"
+
+#: src/widgets/buttons/menu/track-queue-options-button.vala:71
+#: src/widgets/buttons/menu/track-queue-options-button.vala:101
+msgid "Remove from queue"
+msgstr "Odstrani iz čakalne vrste"
+
+#: src/widgets/buttons/menu/volume-button.vala:121
+msgid "Volume control"
+msgstr "Nadzor glasnosti"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Unmute"
+msgstr "Vklopi zvok"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Mute"
+msgstr "Nemo"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:44
+#: src/widgets/save-stack.vala:52 src/widgets/views/abstract-cachiable.vala:172
+msgid "Album"
+msgstr "Album"
+
+#. Translators: n track from n tracks saved
+#: src/widgets/cache-indicator/job-info-badge.vala:77
+#, c-format
+msgid "%d / %d saved%s"
+msgid_plural "%d / %d saved%s"
+msgstr[0] "%d / %d shranjenih%s"
+msgstr[1] "%d / %d shranjen%s"
+msgstr[2] "%d / %d shranjena%s"
+msgstr[3] "%d / %d shranjeni%s"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:84
+#, c-format
+msgid "%d track saving now"
+msgid_plural "%d tracks saving now"
+msgstr[0] "Shranjevanje %d posnetkov je v teku"
+msgstr[1] "Shranjevanje %d posnetka je v teku"
+msgstr[2] "Shranjevanje %d posnetkov je v teku"
+msgstr[3] "Shranjevanje %d posnetkov je v teku"
+
+#: src/widgets/info-marks.vala:41
+#, c-format
+msgid "Track was replaced. Original version: %s, %s"
+msgstr "Posnetek je bil zamenjan. Izvirna različica: %s, %s"
+
+#: src/widgets/playlist-micro.vala:157 src/widgets/views/playlist.vala:241
+#, c-format
+msgid "Owner: %s"
+msgstr "Lastnik: %s"
+
+#: src/widgets/playlist-row.vala:85
+#, c-format
+msgid "Track count: %s"
+msgstr "Število posnetkov: %s"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:88
+#: src/widgets/preferences/preferences-dialog.vala:134
+msgid "Delete cache files?"
+msgstr "Želite izbrisati predpomnilniške datoteke?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:89
+msgid "Move saved files?"
+msgstr "Ali želite premakniti shranjene datoteke?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:90
+#: src/widgets/preferences/preferences-dialog.vala:135
+msgid ""
+"All cache will be deleted. This doesn't affect on saved playlists or albums"
+msgstr ""
+"Ves predpomnilnik bo izbrisan. To ne vpliva na shranjene sezname predvajanja "
+"ali albume"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:91
+msgid ""
+"All saved playlists and albums will be moved to cache files. This could take "
+"a while."
+msgstr ""
+"Vsi shranjeni seznami predvajanja in albumi bodo premaknjeni v "
+"predpomnilniške datoteke. To lahko traja nekaj časa."
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Deleting…"
+msgstr "Poteka brisanje …"
+
+#: src/widgets/save-stack.vala:54
+msgid "Image"
+msgstr "Slika"
+
+#: src/widgets/save-stack.vala:58
+msgid "Track"
+msgstr "Steza"
+
+#: src/widgets/save-stack.vala:75
+#, c-format
+msgid "%s saving…"
+msgstr "Shranjevanje %s ..."
+
+#: src/widgets/save-stack.vala:76
+#, c-format
+msgid "%s cached"
+msgstr "%s predpomnjeno"
+
+#: src/widgets/save-stack.vala:77
+#, c-format
+msgid "%s saved"
+msgstr "%s shranjeno"
+
+#: src/widgets/sidebar/childs/player-queue.vala:66
+#, c-format
+msgid "Playlist \"%s\""
+msgstr "Seznam predvajanja »%s«"
+
+#: src/widgets/sidebar/childs/player-queue.vala:70
+#, c-format
+msgid "Album \"%s\""
+msgstr "Album »%s«"
+
+#: src/widgets/sidebar/childs/player-queue.vala:74
+#, c-format
+msgid "By search results \"%s\""
+msgstr "Po rezultatih iskanja »%s«"
+
+#: src/widgets/sidebar/childs/player-queue.vala:78
+msgid "Track list"
+msgstr "Seznam posnetkov"
+
+#: src/widgets/sidebar/childs/track-info.vala:68
+msgid "Your music track"
+msgstr "Vaš glasbeni posnetek"
+
+#: src/widgets/sidebar/childs/track-info.vala:84
+msgid "Music track"
+msgstr "Glasbeni posnetek"
+
+#: src/widgets/sidebar/childs/wave-settings.vala:39
+msgid "Wave settings"
+msgstr "Nastavitve signalne oblike"
+
+#: src/widgets/track-rows/base.vala:79 src/widgets/track-rows/default.vala:100
+msgid "Track is not available"
+msgstr "Posnetek ni na voljo"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:78
+#, c-format
+msgid "%s '%s' saved successfully"
+msgstr "%s »%s« uspešno shranjen(a)"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:89
+#, c-format
+msgid "%s '%s' saving was stopped, due to network error"
+msgstr "Shranjevanje (%s) »%s« je bilo preklicano zaradi napake v omrežju"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:99
+#, c-format
+msgid "%s '%s' saving was aborted"
+msgstr "Shranjevanje (%s) »%s« je bilo prekinjeno"
+
+#. Translators: %s - content type (e.g. "Playlist")
+#: src/widgets/views/abstract-cachiable.vala:191
+#, c-format
+msgid "%s saving has started"
+msgstr "Začelo se je shranjevanje %s"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:229
+#, c-format
+msgid "%s '%s' was moved from data to cache"
+msgstr "%s »%s« je bil(a) premaknjen(a) iz podatkov v predpomnilnik"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:239
+#, c-format
+msgid "%s removing has started. Please do not close the app"
+msgstr "%s se odstranjuje. Ne zaprite programa"
+
+#: src/widgets/views/cant-show.vala:37
+#, c-format
+msgid "Error %d"
+msgstr "Napaka %d"
+
+#: src/widgets/views/cant-show.vala:41
+msgid "Can't load page"
+msgstr "Strani ni mogoče naložiti"
+
+#: src/widgets/views/cant-show.vala:44
+msgid "Can't find desired content"
+msgstr "Želene vsebine ni mogoče najti"
+
+#: src/widgets/views/playlist.vala:84
+msgid "Delete playlist?"
+msgstr "Želite izbrisati seznam predvajanja?"
+
+#: src/widgets/views/playlist.vala:85
+#, c-format
+msgid "Playlist '%s' will be permanently deleted."
+msgstr "Seznam predvajanja »%s« bo trajno izbrisan."
+
+#: src/widgets/views/playlist.vala:104
+#, c-format
+msgid "Playlist '%s' was deleted"
+msgstr "Seznam predvajanja »%s« je bil izbrisan"
+
+#. Translators: %s is female person
+#: src/widgets/views/playlist.vala:247
+#, c-format
+msgctxt "female person"
+msgid "%s updated playlist %s"
+msgstr "%s je posodobila seznam predvajanja %s"
+
+#. Translators: %s is male person
+#: src/widgets/views/playlist.vala:251
+#, c-format
+msgctxt "male person"
+msgid "%s updated playlist %s"
+msgstr "%s je posodobil seznam predvajanja %s"
+
+#: src/widgets/views/playlist.vala:281
+#, c-format
+msgid "Can't change visibility of '%s'"
+msgstr "Vidnosti »%s« ni mogoče spremeniti"
+
+#: src/widgets/views/playlist.vala:287
+#, c-format
+msgid "Playlist '%s' is public now"
+msgstr "Seznam predvajanja »%s« je zdaj javen"
+
+#: src/widgets/views/playlist.vala:290
+#, c-format
+msgid "Playlist '%s' is private now"
+msgstr "Seznam predvajanja »%s« je zdaj zaseben"
+
+#: src/window.vala:235
+#, c-format
+msgid "Window info message: %s"
+msgstr "Sporočilo informacijskega okna: %s"
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..c35bb71
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,1366 @@
+# Swedish translation for cassette.
+# Copyright © 2024 cassette's COPYRIGHT HOLDER
+# This file is distributed under the same license as the cassette package.
+# Anders Jonsson , 2024.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cassette main\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/Rirusha/Cassette/-/issues\n"
+"POT-Creation-Date: 2024-09-30 18:34+0000\n"
+"PO-Revision-Date: 2024-10-05 11:49+0200\n"
+"Last-Translator: Anders Jonsson \n"
+"Language-Team: Swedish \n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.5\n"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette.desktop.in.in:4
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:3 src/main.vala:23
+msgid "Cassette"
+msgstr "Kassett"
+
+#: data/space.rirusha.Cassette.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME"
+msgstr "Inofficiell Yandex Music-klient för GNOME"
+
+#. Translators: keep number of ';'
+#: data/space.rirusha.Cassette.desktop.in.in:7
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:7
+msgid "yandex;yandex music;yam;music;"
+msgstr "yandex;yandex music;yam;musik;"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:4
+msgid "Cassette (Devel)"
+msgstr "Kassett (utveckling)"
+
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME (Devel build)"
+msgstr "Inofficiell Yandex Music-klient för GNOME (utvecklingsbygge)"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:7
+msgid "Unofficial Yandex Music client"
+msgstr "Inofficiell Yandex Music-klient"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:9
+msgid ""
+"GTK/Adwaita application that allows to use Yandex Music service on Linux "
+"operating systems."
+msgstr ""
+"GTK/Adwaita-program som låter dig använda Yandex Music-tjänsten på Linux-"
+"operativsystem."
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:13
+msgid "Features:"
+msgstr "Funktioner:"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:17
+msgid "Allows you to save playlists and albums for offline listening"
+msgstr "Låter dig spara spellistor och album för frånkopplad lyssning"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:20
+msgid "Has a dynamic \"karaoke mode\" right in the track information panel"
+msgstr "Har ett dynamiskt ”karaokeläge” direkt i spårinformationspanelen"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:23
+msgid ""
+"Allows you to more precisely customize the display and playback of special "
+"content, such as explicit or suitable for children."
+msgstr ""
+"Låter dig mer precist anpassa visningen och uppspelningen av speciellt "
+"innehåll, exempelvis om det är känsligt eller lämpligt för barn."
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:27
+msgid "Displays tracks that are currently unavailable in the service"
+msgstr "Visar spår som för närvarande är otillgängliga på tjänsten"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:30
+msgid "Shows which tracks have been replaced and by what"
+msgstr "Visar vilka spår som ersatts och av vad"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:34
+msgid ""
+"Cassette is an unofficial client and is not associated with or endorsed by "
+"Yandex."
+msgstr ""
+"Kassett är en inofficiell klient och är inte associerad med eller främjad av "
+"Yandex."
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:63
+msgid "Liked view"
+msgstr "Gillatvy"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:67
+msgid "Playlists view"
+msgstr "Spellistevy"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:71
+msgid "Sync lyrics"
+msgstr "Synkronisera låttexter"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:75
+msgid "Playback queue"
+msgstr "Uppspelningskö"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:79
+msgid "Waves view"
+msgstr "Vågvy"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:83
+msgid "Main preferences"
+msgstr "Huvudinställningar"
+
+#: data/ui/account-info-dialog.blp:5
+msgid "Account information"
+msgstr "Kontoinformation"
+
+#: data/ui/account-info-dialog.blp:52
+msgid "Open in browser"
+msgstr "Öppna i webbläsare"
+
+#: data/ui/account-info-dialog.blp:61
+msgid "Plus"
+msgstr "Plus"
+
+#: data/ui/account-info-dialog.blp:70 data/ui/no-plus-dialog.blp:51
+#: src/authenticator.vala:51
+msgid "Log out"
+msgstr "Logga ut"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:11
+msgid "Usage mode"
+msgstr "Användningsläge"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:40
+msgctxt "auth window"
+msgid "Choose usage mode"
+msgstr "Välj användningsläge"
+
+#: data/ui/begin-view.ui:50
+msgctxt "auth window"
+msgid ""
+"If you select the \"Online mode\", you can access local music by enabling "
+"the display of the corresponding pages in the pages preferences, as well as "
+"log in later when selecting \"Local mode\""
+msgstr ""
+"Om du väljer ”Anslutet läge” kan du komma åt lokal musik genom att aktivera "
+"visningen av motsvarande sidor i sidinställningarna, såväl som att logga in "
+"senare när du väljer ”Lokalt läge”"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:75
+msgctxt "auth window"
+msgid "Online mode"
+msgstr "Anslutet läge"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:85
+msgctxt "auth window"
+msgid "Local mode"
+msgstr "Lokalt läge"
+
+#. Translators: "Close" window button label
+#: data/ui/begin-view.ui:97
+msgctxt "auth window"
+msgid "Close"
+msgstr "Stäng"
+
+#: data/ui/begin-view.ui:112
+msgid "Authorization"
+msgstr "Auktorisering"
+
+#. Translators: size of cache dirs
+#: data/ui/cache-deletion-preferences.ui:21
+msgid "Dirs size:"
+msgstr "Katalogstorlek:"
+
+#. Translators: tempprary cache folder
+#: data/ui/cache-deletion-preferences.ui:35
+msgid "Cache"
+msgstr "Cache"
+
+#: data/ui/cache-deletion-preferences.ui:88
+msgid "Clear"
+msgstr "Rensa"
+
+#. Translators: temparence cache folder
+#: data/ui/cache-deletion-preferences.ui:109
+msgid "Data"
+msgstr "Data"
+
+#: data/ui/cache-deletion-preferences.ui:159
+msgid "Move to cache"
+msgstr "Flytta till cache"
+
+#: data/ui/cache-deletion-preferences.ui:163
+msgid "Move"
+msgstr "Flytta"
+
+#: data/ui/cache-indicator.blp:35
+msgid "Show all cache jobs"
+msgstr "Visa alla cachejobb"
+
+#: data/ui/custom-page-preferences.ui:17
+msgid "Title: "
+msgstr "Titel: "
+
+#: data/ui/custom-page-preferences.ui:38
+msgid "Icon: "
+msgstr "Ikon: "
+
+#: data/ui/custom-page-preferences.ui:75
+msgid "Save page"
+msgstr "Spara sida"
+
+#: data/ui/custom-page-preferences.ui:92
+msgid "Remove page"
+msgstr "Ta bort sida"
+
+#. Translators: title of preference group
+#: data/ui/custom-pages-preferences.ui:7
+msgctxt "preference window"
+msgid "Custom pages"
+msgstr "Anpassade sidor"
+
+#. Translators: description of preference group
+#: data/ui/custom-pages-preferences.ui:9
+msgctxt "preference window"
+msgid "Here you can control custom pages."
+msgstr "Här kan du styra anpassade sidor."
+
+#: data/ui/disliked-tracks-view.ui:23
+#: src/widgets/buttons/menu/primary-menu-button.vala:31
+msgid "Disliked tracks"
+msgstr "Ogillade spår"
+
+#: data/ui/header-bar.blp:12
+msgid "Go back"
+msgstr "Gå bakåt"
+
+#: data/ui/header-bar.blp:20
+msgid "Refresh"
+msgstr "Uppdatera"
+
+#: data/ui/header-bar.blp:28
+msgid "Yandex Music search"
+msgstr "Yandex Music-sökning"
+
+#: data/ui/help-overlay.blp:11
+msgid "Main Actions"
+msgstr "Huvudåtgärder"
+
+#: data/ui/help-overlay.blp:14
+msgid "Show Shortcuts"
+msgstr "Visa kortkommandon"
+
+#: data/ui/help-overlay.blp:19
+msgid "Quit"
+msgstr "Avsluta"
+
+#: data/ui/help-overlay.blp:25
+msgid "Playback Control"
+msgstr "Uppspelningskontroll"
+
+#: data/ui/help-overlay.blp:28
+msgid "Play/Pause playback"
+msgstr "Spela upp/pausa uppspelning"
+
+#: data/ui/help-overlay.blp:33 data/ui/player-bar.blp:87
+msgid "Play previous track"
+msgstr "Spela upp föregående spår"
+
+#: data/ui/help-overlay.blp:38 data/ui/player-bar.blp:119
+msgid "Play next track"
+msgstr "Spela upp nästa spår"
+
+#: data/ui/help-overlay.blp:43
+msgid "Mute app"
+msgstr "Tysta program"
+
+#: data/ui/help-overlay.blp:49
+msgid "Queue control"
+msgstr "Kökontroll"
+
+#: data/ui/help-overlay.blp:52 data/ui/player-bar.blp:141
+msgid "Change shuffle mode"
+msgstr "Ändra blandningsläge"
+
+#: data/ui/help-overlay.blp:57 data/ui/player-bar.blp:65
+msgid "Change repeat mode"
+msgstr "Ändra upprepningsläge"
+
+#: data/ui/help-overlay.blp:63
+msgid "Other"
+msgstr "Annat"
+
+#: data/ui/help-overlay.blp:66
+msgid "Share current track"
+msgstr "Dela aktuellt spår"
+
+#: data/ui/help-overlay.blp:71
+msgid "Parse url from clipboard"
+msgstr "Klistra in URL från urklipp"
+
+#: data/ui/info-marks.ui:23
+msgid "Explicit content"
+msgstr "Känsligt innehåll"
+
+#: data/ui/info-marks.ui:32
+msgid "Child content"
+msgstr "Innehåll för barn"
+
+#: data/ui/main-view.blp:6
+msgid "Page under construction"
+msgstr "Sidan under uppbyggnad"
+
+#: data/ui/main-view.blp:20
+msgid "All stations"
+msgstr "Alla stationer"
+
+#: data/ui/no-plus-dialog.blp:20
+msgid "No Plus Subscription"
+msgstr "Ingen Plus-prenumeration"
+
+#: data/ui/no-plus-dialog.blp:21
+msgid ""
+"To avoid problems with Yandex, the online functions of the application are "
+"not available without a Yandex.Plus subscription. Thanks for understanding."
+msgstr ""
+"För att undvika problem med Yandex så är programmets nätfunktioner inte "
+"tillgängliga utan en Yandex.Plus-prenumeration. Tack för er förståelse."
+
+#: data/ui/no-plus-dialog.blp:41
+msgid "Get Plus"
+msgstr "Skaffa Plus"
+
+#: data/ui/player-bar.blp:22
+msgid "Show track info"
+msgstr "Visa spårinfo"
+
+#: data/ui/player-bar.blp:206
+msgid "Show wave settings"
+msgstr "Visa våginställningar"
+
+#: data/ui/player-bar.blp:216
+msgid "Show playback queue"
+msgstr "Visa uppspelningskö"
+
+#: data/ui/player-bar.blp:229
+msgid "Change volume"
+msgstr "Ändra volym"
+
+#: data/ui/player-queue.blp:5 src/application.vala:271
+msgid "Playing now"
+msgstr "Spelar nu"
+
+#: data/ui/playlist-choose-dialog.ui:8
+msgid "Choose playlist to add"
+msgstr "Välj spellista att lägga till"
+
+#: data/ui/playlist-create-button.ui:36
+msgid "Create playlist"
+msgstr "Skapa spellista"
+
+#: data/ui/playlist-micro.ui:39 data/ui/playlist-view.ui:56
+#: src/widgets/cache-indicator/job-info-badge.vala:42
+#: src/widgets/save-stack.vala:56 src/widgets/views/abstract-cachiable.vala:167
+msgid "Playlist"
+msgstr "Spellista"
+
+#: data/ui/playlist-row.ui:40
+msgid "Empty"
+msgstr "Tom"
+
+#: data/ui/playlists-view.ui:23
+msgid "Your playlists"
+msgstr "Dina spellistor"
+
+#: data/ui/playlists-view.ui:39
+msgid "Also you liked these playlists"
+msgstr "Du gillade också dessa spellistor"
+
+#: data/ui/playlist-view.ui:187
+msgid "Change playlist visibility"
+msgstr "Ändra synlighet för spellista"
+
+#: data/ui/playlist-view.ui:211
+msgid "Add page to header"
+msgstr "Lägg till sida till rubrik"
+
+#. Translators: tooltip of "save" button
+#: data/ui/playlist-view.ui:233 data/ui/playlist-view.ui:237
+#: src/widgets/buttons/menu/track-options-button.vala:82
+#: src/widgets/buttons/menu/track-options-button.vala:107
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:38
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:49
+#: src/widgets/buttons/menu/track-queue-options-button.vala:72
+#: src/widgets/buttons/menu/track-queue-options-button.vala:102
+msgid "Save"
+msgstr "Spara"
+
+#. Translators: tooltip of "delete" button
+#: data/ui/playlist-view.ui:256 data/ui/playlist-view.ui:260
+#: src/widgets/preferences/cache-deletion-preferences.vala:96
+#: src/widgets/preferences/preferences-dialog.vala:140
+#: src/widgets/views/playlist.vala:90
+msgid "Delete"
+msgstr "Ta bort"
+
+#. Translators: tooltip of "abort" button
+#: data/ui/playlist-view.ui:276
+msgid "Abort"
+msgstr "Avbryt"
+
+#: data/ui/playlist-view.ui:280
+msgid "Stop"
+msgstr "Stoppa"
+
+#: data/ui/preferences-dialog.ui:8
+msgctxt "preference dialog"
+msgid "Main"
+msgstr "Huvudsida"
+
+#: data/ui/preferences-dialog.ui:12
+msgctxt "preference dialog"
+msgid "General"
+msgstr "Allmänt"
+
+#: data/ui/preferences-dialog.ui:15
+msgctxt "preference dialog"
+msgid "Enable high quality audio"
+msgstr "Aktivera högkvalitetsljud"
+
+#: data/ui/preferences-dialog.ui:16
+msgctxt "preference dialog"
+msgid ""
+"Attention! If the track was downloaded in low quality, and after the "
+"download is enabled in high quality, the audio will not be reloaded"
+msgstr ""
+"Observera! Om spåret hämtades i låg kvalitet, och hög kvalitet aktiveras "
+"efter hämtningen, så kommer ljudet inte läsas in på nytt"
+
+#: data/ui/preferences-dialog.ui:21
+msgctxt "preference dialog"
+msgid "Add track on top of playlist"
+msgstr "Lägg till spår högst upp i spellista"
+
+#: data/ui/preferences-dialog.ui:22
+msgctxt "preference dialog"
+msgid "Will the track be added to the playlist as the first or as the last"
+msgstr "Om spåret kommer läggas till först eller sist i spellistan"
+
+#: data/ui/preferences-dialog.ui:27
+msgctxt "preference dialog"
+msgid "Show 'Playing now' notification"
+msgstr "Visa ”Spelar nu”-avisering"
+
+#: data/ui/preferences-dialog.ui:28
+msgctxt "preference dialog"
+msgid "Show a notification when switching a track"
+msgstr "Visa en avisering vid byte av spår"
+
+#: data/ui/preferences-dialog.ui:35
+msgctxt "preference dialog"
+msgid "Show additional marks"
+msgstr "Visa ytterligare märken"
+
+#: data/ui/preferences-dialog.ui:36
+msgctxt "preference dialog"
+msgid "Additional marks display additional information about the track"
+msgstr "Ytterligare märken visar ytterligare information om spåret"
+
+#: data/ui/preferences-dialog.ui:39
+msgctxt "preference dialog"
+msgid "Show save mark"
+msgstr "Visa sparningsmärke"
+
+#: data/ui/preferences-dialog.ui:40
+msgctxt "preference dialog"
+msgid "Show a label with information about the caching status of the track"
+msgstr "Visa en etikett med information om spårets cachestatus"
+
+#: data/ui/preferences-dialog.ui:45
+msgctxt "preference dialog"
+msgid "Show cache mark"
+msgstr "Visa cachemärke"
+
+#: data/ui/preferences-dialog.ui:46
+msgctxt "preference dialog"
+msgid "Show a mark about saving a track to the cache"
+msgstr "Visa ett märke om att spara ett spår till cachen"
+
+#: data/ui/preferences-dialog.ui:51
+msgctxt "preference dialog"
+msgid "Show replaced mark"
+msgstr "Visa ersattmärke"
+
+#: data/ui/preferences-dialog.ui:52
+msgctxt "preference dialog"
+msgid "Show a mark that shows that the track has been replaced"
+msgstr "Visa ett märke som visar att spåret har blivit ersatt"
+
+#: data/ui/preferences-dialog.ui:59
+msgctxt "preference dialog"
+msgid "Tracks visibility"
+msgstr "Synlighet för spår"
+
+#: data/ui/preferences-dialog.ui:60
+msgctxt "preference dialog"
+msgid ""
+"Show special tracks in track lists. Filter doesn't work when searching in "
+"track list"
+msgstr ""
+"Visa speciella spår i spårlistor. Filter fungerar inte vid sökning i "
+"spårlistan"
+
+#: data/ui/preferences-dialog.ui:63
+msgctxt "preference dialog"
+msgid "Show unavailable content"
+msgstr "Visa otillgängligt innehåll"
+
+#: data/ui/preferences-dialog.ui:64
+msgctxt "preference dialog"
+msgid ""
+"Show tracks that are not available in the service. You can't listen to them"
+msgstr ""
+"Visa spår som inte är tillgängliga i tjänsten. Du kan inte lyssna på dem"
+
+#: data/ui/preferences-dialog.ui:69
+msgctxt "preference dialog"
+msgid "Show content suitable for children"
+msgstr "Visa innehåll som är lämpligt för barn"
+
+#: data/ui/preferences-dialog.ui:70
+msgctxt "preference dialog"
+msgid "Show content that is specific to children"
+msgstr "Visa innehåll specifikt för barn"
+
+#: data/ui/preferences-dialog.ui:75
+msgctxt "preference dialog"
+msgid "Show explicit content"
+msgstr "Visa känsligt innehåll"
+
+#: data/ui/preferences-dialog.ui:76
+msgctxt "preference dialog"
+msgid "Show content that has age restrictions"
+msgstr "Visa innehåll som har åldersbegränsningar"
+
+#: data/ui/preferences-dialog.ui:83
+msgctxt "preference dialog"
+msgid "Other"
+msgstr "Övrigt"
+
+#: data/ui/preferences-dialog.ui:86
+msgctxt "preference dialog"
+msgid "Enable Debug-Mode"
+msgstr "Aktivera felsökningsläge"
+
+#: data/ui/preferences-dialog.ui:87
+msgctxt "preference dialog"
+msgid "Enable logging of additional information useful for error detection"
+msgstr ""
+"Aktivera loggning av ytterligare information som är användbar för felupptäckt"
+
+#: data/ui/preferences-dialog.ui:94
+msgctxt "preference dialog"
+msgid "Experimental"
+msgstr "Experimentellt"
+
+#: data/ui/preferences-dialog.ui:95
+msgctxt "preference dialog"
+msgid "Parameters that test anything and may be removed in future releases"
+msgstr "Parametrar som testar något och kan tas bort i framtida utgåvor"
+
+#: data/ui/preferences-dialog.ui:98
+msgctxt "preference dialog"
+msgid "Use only bottom sheet menus"
+msgstr "Använd endast bottenmenyer"
+
+#: data/ui/preferences-dialog.ui:99
+msgctxt "preference dialog"
+msgid "Test preference for bottom sheet menu"
+msgstr "Testinställning för bottenmeny"
+
+#: data/ui/preferences-dialog.ui:108
+msgctxt "preference dialog"
+msgid "Pages"
+msgstr "Sidor"
+
+#: data/ui/preferences-dialog.ui:112
+msgctxt "preference dialog"
+msgid "Static pages"
+msgstr "Statiska sidor"
+
+#: data/ui/preferences-dialog.ui:113
+msgctxt "preference dialog"
+msgid ""
+"Here you can show or hide static pages. They will always be displayed on the "
+"left side of the header."
+msgstr ""
+"Här kan du visa eller dölja statiska sidor. De kommer alltid visas på "
+"vänster sida om rubriken."
+
+#: data/ui/preferences-dialog.ui:116
+msgctxt "preference dialog"
+msgid "Show 'Main' page"
+msgstr "Visa ”Huvud”-sida"
+
+#: data/ui/preferences-dialog.ui:121
+msgctxt "preference dialog"
+msgid "Show 'Liked' page"
+msgstr "Visa ”Gillat”-sida"
+
+#: data/ui/preferences-dialog.ui:126
+msgctxt "preference dialog"
+msgid "Show 'Playlists' page"
+msgstr "Visa ”Spellistor”-sida"
+
+#: data/ui/preferences-dialog.ui:138
+msgctxt "preference dialog"
+msgid "Cache"
+msgstr "Cache"
+
+#: data/ui/preferences-dialog.ui:142
+msgctxt "preference dialog"
+msgid "Cache managing"
+msgstr "Cachehantering"
+
+#: data/ui/preferences-dialog.ui:143
+msgctxt "preference dialog"
+msgid ""
+"Here you can see application memory usage, delete all cache from cache "
+"folder and control downloading cache to disk"
+msgstr ""
+"Här kan du se programmets minnesanvändning, ta bort all cache från "
+"cachemappen och styra hämtning av cache till disk"
+
+#: data/ui/preferences-dialog.ui:146
+msgctxt "preference dialog"
+msgid "Cache content"
+msgstr "Cacha innehåll"
+
+#: data/ui/preferences-dialog.ui:147
+msgctxt "preference dialog"
+msgid ""
+"For better performance. Over time, it starts to take up a lot of space. So "
+"far, manual cleaning is required. If enabled, the application will cache all "
+"content to cache dir for better performance, otherwise, the application will "
+"load content only when caching objects (such as playlists or albums). "
+"Disabling the parameter does not delete already downloaded content"
+msgstr ""
+"För bättre prestanda. Med tiden börjar det ta upp mycket utrymme. Så här "
+"långt krävs manuell rensning. Om aktiverat kommer programmet cacha allt "
+"innehåll till en cachekatalog för bättre prestanda. Annars kommer programmet "
+"endast läsa in innehåll vid cachning av objekt (såsom spellistor eller "
+"album). Att inaktivera parametern tar inte bort redan hämtat innehåll"
+
+#: data/ui/save-stack.ui:25
+msgid "Content saving…"
+msgstr "Innehåll sparas…"
+
+#: data/ui/save-stack.ui:42
+msgid "Content cached"
+msgstr "Innehåll cachat"
+
+#: data/ui/save-stack.ui:56
+msgid "Content saved"
+msgstr "Innehåll sparat"
+
+#: data/ui/stations-view.blp:22
+msgid "Stations dashboard"
+msgstr "Stationspanel"
+
+#: data/ui/stations-view.blp:58
+msgid "Searching for station…"
+msgstr "Söker efter station…"
+
+#: data/ui/stations-view.blp:77
+msgid "By genre…"
+msgstr "Efter genre…"
+
+#: data/ui/stations-view.blp:99 data/ui/wave-settings.blp:60
+msgid "By mood…"
+msgstr "Efter stämning…"
+
+#: data/ui/stations-view.blp:121 data/ui/wave-settings.blp:25
+msgid "By activity…"
+msgstr "Efter aktivitet…"
+
+#: data/ui/stations-view.blp:143
+msgid "By epoch…"
+msgstr "Efter epok…"
+
+#: data/ui/stations-view.blp:165
+msgid "Other…"
+msgstr "Annat…"
+
+#: data/ui/stations-view.blp:209
+msgid "No stations with that name were found"
+msgstr "Inga stationer hittades med det namnet"
+
+#: data/ui/track-info.blp:103
+msgid "Track lyrics"
+msgstr "Texter för spår"
+
+#: data/ui/track-info.blp:117
+msgid "Authors"
+msgstr "Upphovsmän"
+
+#: data/ui/track-info.blp:135
+msgid "Source"
+msgstr "Källa"
+
+#: data/ui/track-info.blp:158
+msgid "Similar tracks"
+msgstr "Liknande spår"
+
+#. Translators: placeholder of "search" entry. Local track search (inside of track list)
+#: data/ui/track-list.ui:21
+msgid "Search track"
+msgstr "Sök spår"
+
+#. Translators: part of sort by
+#: data/ui/track-list.ui:30
+msgid "Sort by"
+msgstr "Sortera efter"
+
+#: data/ui/track-list.ui:77
+msgid "No tracks to display"
+msgstr "Inga spår att visa"
+
+#: data/ui/track-list.ui:88
+msgid "name"
+msgstr "namn"
+
+#: data/ui/track-list.ui:92
+msgid "artist"
+msgstr "artist"
+
+#: data/ui/track-list.ui:96
+msgid "album"
+msgstr "album"
+
+#: data/ui/track-list.ui:100
+msgid "duration"
+msgstr "längd"
+
+#: data/ui/track-placeholder.ui:9 src/widgets/pages/loading-page.vala:37
+msgid "Loading…"
+msgstr "Läser in…"
+
+#: data/ui/wave-settings.blp:42
+msgid "By diversity…"
+msgstr "Efter mångfald…"
+
+#: data/ui/wave-settings.blp:78
+msgid "By language…"
+msgstr "Efter språk…"
+
+#: data/ui/wave-settings.blp:93
+msgid "Can't get wave settings"
+msgstr "Kan inte hämta våginställningar"
+
+#: data/ui/window.blp:57 src/window.vala:252
+msgid "Reconnect"
+msgstr "Anslut igen"
+
+#: data/ui/window.blp:58 src/application.vala:151
+msgid "Connection problems"
+msgstr "Anslutningsproblem"
+
+#. Translators: NAME /n NAME
+#: src/about.vala:59
+msgid "translator-credits"
+msgstr "Anders Jonsson "
+
+#: src/about.vala:67
+msgid "Telegram channel"
+msgstr "Telegramkanal"
+
+#: src/about.vala:68
+msgid "Financial support (Tinkoff)"
+msgstr "Finansiellt stöd (Tinkoff)"
+
+#: src/about.vala:69
+msgid "Financial support (Boosty)"
+msgstr "Finansiellt stöd (Boosty)"
+
+#. Please keep alphabetical
+#: src/about.vala:72
+msgid "Sponsors"
+msgstr "Sponsorer"
+
+#: src/application.vala:62
+msgid "Print version information and exit"
+msgstr "Skriv ut versionsinformation och avsluta"
+
+#: src/application.vala:145
+msgid "Connection restored"
+msgstr "Anslutning återupprättad"
+
+#: src/application.vala:273
+msgid "Previous"
+msgstr "Föregående"
+
+#: src/application.vala:274
+msgid "Next"
+msgstr "Nästa"
+
+#: src/application.vala:357
+msgid "Current track can not be copied to the clipboard"
+msgstr "Aktuellt spår kan inte kopieras till urklipp"
+
+#: src/application.vala:371 src/application.vala:378 src/application.vala:435
+msgid "Can't parse clipboard content"
+msgstr "Kan inte tolka urklippsinnehåll"
+
+#: src/application.vala:389
+msgid "Users view not implemented yet"
+msgstr "Användarvy inte implementerad ännu"
+
+#: src/application.vala:405 src/application.vala:419
+msgid "Albums view not implemented yet"
+msgstr "Albumvy inte implementerad ännu"
+
+#: src/authenticator.vala:46
+msgid "Log out?"
+msgstr "Logga ut?"
+
+#: src/authenticator.vala:47
+msgid "You will need to log in again to use the app"
+msgstr "Du behöver logga in igen för att använda programmet"
+
+#. Translators: cancel of deleting playlist
+#: src/authenticator.vala:50
+#: src/widgets/preferences/cache-deletion-preferences.vala:95
+#: src/widgets/preferences/preferences-dialog.vala:139
+#: src/widgets/views/playlist.vala:89
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: src/authenticator.vala:97
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Moving…"
+msgstr "Flyttar…"
+
+#. Translators: Playlist with liked tracks
+#: src/client/api/objects/playlist/playlist.vala:49
+#: src/client/api/objects/playlist/playlist.vala:99 src/pager.vala:276
+msgid "Liked"
+msgstr "Gillade"
+
+#. Translators: Playlist that updates every day
+#: src/client/api/objects/playlist/playlist.vala:53
+msgid "Daily"
+msgstr "Dagens"
+
+#. Translators: Unknown playlist
+#: src/client/api/objects/playlist/playlist.vala:57
+msgid "Unknown"
+msgstr "Okänd"
+
+#: src/client/cachier/storager.vala:124
+#, c-format
+msgid "Database was initialized, loc - %s"
+msgstr "Databasen initierades, plats - %s"
+
+#: src/client/cachier/storager.vala:801
+#, c-format
+msgid "Can't save object %s"
+msgstr "Kan inte spara objektet %s"
+
+#: src/client/cachier/storager.vala:818
+msgid "Byte"
+msgid_plural "Bytes"
+msgstr[0] "Byte"
+msgstr[1] "Byte"
+
+#: src/client/cachier/storager.vala:821
+msgid "Kilobyte"
+msgid_plural "Kilobytes"
+msgstr[0] "Kilobyte"
+msgstr[1] "Kilobyte"
+
+#: src/client/cachier/storager.vala:824
+msgid "Megabyte"
+msgid_plural "Megabytes"
+msgstr[0] "Megabyte"
+msgstr[1] "Megabyte"
+
+#: src/client/cachier/storager.vala:827
+msgid "Gigabyte"
+msgid_plural "Gigabytes"
+msgstr[0] "Gigabyte"
+msgstr[1] "Gigabyte"
+
+#: src/client/cachier/storager.vala:830
+msgid "Terabyte"
+msgid_plural "Terabytes"
+msgstr[0] "Terabyte"
+msgstr[1] "Terabyte"
+
+#: src/client/cachier/storager.vala:859
+#, c-format
+msgid "Error while getting cache directory size. Message %s"
+msgstr "Fel vid hämtning av storlek på cachekatalog. Meddelande %s"
+
+#: src/client/cachier/storager.vala:894
+#, c-format
+msgid "Error while getting permanent directory size. Message %s"
+msgstr "Fel vid hämtning av storlek på permanent katalog. Meddelande %s"
+
+#: src/client/jsoner.vala:358 src/client/jsoner.vala:419
+#: src/client/jsoner.vala:526 src/client/jsoner.vala:550
+#, c-format
+msgid "Wrong type: expected %s, got %s"
+msgstr "Fel typ: %s förväntades, fick %s"
+
+#: src/client/player/mods/abstract-mode.vala:91
+msgid "Problems with queue"
+msgstr "Problem med kö"
+
+#. Translators: name of new created playlist
+#: src/client/talkers/yam-talker.vala:627
+msgid "New Playlist"
+msgstr "Ny spellista"
+
+#: src/pager.vala:162
+#, c-format
+msgid "Can't set title \"%s\" to page"
+msgstr "Kan inte ställa in titeln ”%s” till sida"
+
+#: src/pager.vala:173
+#, c-format
+msgid "Can't set icon with name \"%s\" to page"
+msgstr "Kan inte ställa in ikon med namnet ”%s” till sida"
+
+#: src/pager.vala:199
+msgid "Reached max page count"
+msgstr "Maximalt sidantal uppnåddes"
+
+#: src/pager.vala:205
+#, c-format
+msgid "Page '%s' already added"
+msgstr "Sidan ”%s” redan tillagd"
+
+#: src/pager.vala:267
+msgid "Main"
+msgstr "Huvudsida"
+
+#: src/pager.vala:286
+msgid "Playlists"
+msgstr "Spellistor"
+
+#: src/pager.vala:311
+#, c-format
+msgid "Can't read pages file. Message: %s"
+msgstr "Kan inte läsa sidfil. Meddelande: %s"
+
+#: src/pager.vala:331
+#, c-format
+msgid "Can't create pages file. Message: %s"
+msgstr "Kan inte skapa sidfil. Meddelande: %s"
+
+#: src/utils.vala:69
+msgid "Not implemented yet"
+msgstr "Inte implementerat ännu"
+
+#: src/utils.vala:76
+msgid "Need authorization"
+msgstr "Behöver auktorisering"
+
+#: src/utils.vala:80
+msgid "Need Bookmate subscription"
+msgstr "Behöver en prenumeration på Bookmate"
+
+#: src/utils.vala:176 src/utils.vala:192
+msgid "Link copied to clipboard"
+msgstr "Länk kopierad till urklipp"
+
+#: src/utils.vala:241
+#, c-format
+msgid "Duration: %s h. %s min."
+msgstr "Längd: %s h. %s min."
+
+#: src/utils.vala:243
+#, c-format
+msgid "Duration: %s min."
+msgstr "Längd: %s min."
+
+#: src/utils.vala:357
+msgid "today"
+msgstr "i dag"
+
+#: src/utils.vala:359
+msgid "yesterday"
+msgstr "i går"
+
+#: src/widgets/buttons/just/dislike-button.vala:37
+msgid "Remove dislike"
+msgstr "Ta bort ogillande"
+
+#: src/widgets/buttons/just/dislike-button.vala:40
+msgid "Set dislike"
+msgstr "Sätt ogillande"
+
+#: src/widgets/buttons/just/like-button.vala:41
+msgid "Remove like"
+msgstr "Ta bort gillande"
+
+#: src/widgets/buttons/just/like-button.vala:48
+msgid "Set like"
+msgstr "Sätt gillande"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:37
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:40
+msgid "Pause"
+msgstr "Pausa"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:44
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:47
+msgid "Play"
+msgstr "Spela upp"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:48
+#, c-format
+msgid "Playlist '%s'"
+msgstr "Spellista ”%s”"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:53
+#: src/widgets/buttons/menu/playlist-options-button.vala:66
+msgid "My Vibe by playlist"
+msgstr "Min vibb efter spellista"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:54
+#: src/widgets/buttons/menu/playlist-options-button.vala:76
+#: src/widgets/buttons/menu/track-options-button.vala:80
+#: src/widgets/buttons/menu/track-options-button.vala:105
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:35
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:46
+#: src/widgets/buttons/menu/track-queue-options-button.vala:69
+#: src/widgets/buttons/menu/track-queue-options-button.vala:99
+msgid "Add to queue"
+msgstr "Lägg till i kö"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:55
+#: src/widgets/buttons/menu/playlist-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:83
+#: src/widgets/buttons/menu/track-options-button.vala:108
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:39
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:50
+#: src/widgets/buttons/menu/track-queue-options-button.vala:73
+#: src/widgets/buttons/menu/track-queue-options-button.vala:103
+msgid "Share"
+msgstr "Dela"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:26
+msgid "Primary menu"
+msgstr "Primär meny"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:32
+msgid "Parse URL from clipboard"
+msgstr "Tolka URL från urklipp"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:33
+msgid "Preferences"
+msgstr "Inställningar"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:34
+msgid "Keyboard Shortcuts"
+msgstr "Tangentbordsgenvägar"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:35
+msgid "About Cassette"
+msgstr "Om Kassett"
+
+#: src/widgets/buttons/menu/track-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:94
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:32
+#: src/widgets/buttons/menu/track-queue-options-button.vala:66
+#: src/widgets/buttons/menu/track-queue-options-button.vala:87
+msgid "My Vibe by track"
+msgstr "Min vibb efter spår"
+
+#: src/widgets/buttons/menu/track-options-button.vala:78
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:33
+#: src/widgets/buttons/menu/track-queue-options-button.vala:67
+msgid "Show info"
+msgstr "Visa info"
+
+#: src/widgets/buttons/menu/track-options-button.vala:79
+#: src/widgets/buttons/menu/track-options-button.vala:104
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:34
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:45
+#: src/widgets/buttons/menu/track-queue-options-button.vala:68
+#: src/widgets/buttons/menu/track-queue-options-button.vala:98
+msgid "Play next"
+msgstr "Spela nästa"
+
+#: src/widgets/buttons/menu/track-options-button.vala:81
+#: src/widgets/buttons/menu/track-options-button.vala:106
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:36
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:47
+#: src/widgets/buttons/menu/track-queue-options-button.vala:70
+#: src/widgets/buttons/menu/track-queue-options-button.vala:100
+msgid "Add to playlist"
+msgstr "Lägg till i spellista"
+
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:37
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:48
+msgid "Remove from playlist"
+msgstr "Ta bort från spellista"
+
+#: src/widgets/buttons/menu/track-queue-options-button.vala:71
+#: src/widgets/buttons/menu/track-queue-options-button.vala:101
+msgid "Remove from queue"
+msgstr "Ta bort från kö"
+
+#: src/widgets/buttons/menu/volume-button.vala:121
+msgid "Volume control"
+msgstr "Volymkontroll"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Unmute"
+msgstr "Aktivera ljud"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Mute"
+msgstr "Tysta"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:44
+#: src/widgets/save-stack.vala:52 src/widgets/views/abstract-cachiable.vala:172
+msgid "Album"
+msgstr "Album"
+
+#. Translators: n track from n tracks saved
+#: src/widgets/cache-indicator/job-info-badge.vala:77
+#, c-format
+msgid "%d / %d saved%s"
+msgid_plural "%d / %d saved%s"
+msgstr[0] "%d / %d sparat%s"
+msgstr[1] "%d / %d sparade%s"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:84
+#, c-format
+msgid "%d track saving now"
+msgid_plural "%d tracks saving now"
+msgstr[0] "%d spår sparas nu"
+msgstr[1] "%d spår sparas nu"
+
+#: src/widgets/info-marks.vala:41
+#, c-format
+msgid "Track was replaced. Original version: %s, %s"
+msgstr "Spår ersattes. Ursprunglig version: %s, %s"
+
+#: src/widgets/playlist-micro.vala:157 src/widgets/views/playlist.vala:241
+#, c-format
+msgid "Owner: %s"
+msgstr "Ägare: %s"
+
+#: src/widgets/playlist-row.vala:85
+#, c-format
+msgid "Track count: %s"
+msgstr "Spårantal: %s"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:88
+#: src/widgets/preferences/preferences-dialog.vala:134
+msgid "Delete cache files?"
+msgstr "Ta bort cachefiler?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:89
+msgid "Move saved files?"
+msgstr "Flytta sparade filer?"
+
+# TODO: affect saved
+#: src/widgets/preferences/cache-deletion-preferences.vala:90
+#: src/widgets/preferences/preferences-dialog.vala:135
+msgid ""
+"All cache will be deleted. This doesn't affect on saved playlists or albums"
+msgstr ""
+"All cache kommer tas bort. Detta påverkar inte sparade spellistor eller album"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:91
+msgid ""
+"All saved playlists and albums will be moved to cache files. This could take "
+"a while."
+msgstr ""
+"Alla sparade spellistor och album kommer flyttas till cachefiler. Detta kan "
+"ta ett tag."
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Deleting…"
+msgstr "Tar bort…"
+
+#: src/widgets/save-stack.vala:54
+msgid "Image"
+msgstr "Bild"
+
+#: src/widgets/save-stack.vala:58
+msgid "Track"
+msgstr "Spår"
+
+#: src/widgets/save-stack.vala:75
+#, c-format
+msgid "%s saving…"
+msgstr "%s sparas…"
+
+#: src/widgets/save-stack.vala:76
+#, c-format
+msgid "%s cached"
+msgstr "%s cachad"
+
+#: src/widgets/save-stack.vala:77
+#, c-format
+msgid "%s saved"
+msgstr "%s sparad"
+
+#: src/widgets/sidebar/childs/player-queue.vala:66
+#, c-format
+msgid "Playlist \"%s\""
+msgstr "Spellista ”%s”"
+
+#: src/widgets/sidebar/childs/player-queue.vala:70
+#, c-format
+msgid "Album \"%s\""
+msgstr "Album ”%s”"
+
+#: src/widgets/sidebar/childs/player-queue.vala:74
+#, c-format
+msgid "By search results \"%s\""
+msgstr "Efter sökresultat ”%s”"
+
+#: src/widgets/sidebar/childs/player-queue.vala:78
+msgid "Track list"
+msgstr "Spårlista"
+
+#: src/widgets/sidebar/childs/track-info.vala:68
+msgid "Your music track"
+msgstr "Ditt musikspår"
+
+#: src/widgets/sidebar/childs/track-info.vala:84
+msgid "Music track"
+msgstr "Musikspår"
+
+#: src/widgets/sidebar/childs/wave-settings.vala:39
+msgid "Wave settings"
+msgstr "Våginställningar"
+
+#: src/widgets/track-rows/base.vala:79 src/widgets/track-rows/default.vala:100
+msgid "Track is not available"
+msgstr "Spåret inte tillgängligt"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:78
+#, c-format
+msgid "%s '%s' saved successfully"
+msgstr "%s ”%s” sparades"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:89
+#, c-format
+msgid "%s '%s' saving was stopped, due to network error"
+msgstr "Sparning av %s ”%s” stoppades på grund av nätverksfel"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:99
+#, c-format
+msgid "%s '%s' saving was aborted"
+msgstr "Sparning av %s ”%s” avbröts"
+
+#. Translators: %s - content type (e.g. "Playlist")
+#: src/widgets/views/abstract-cachiable.vala:191
+#, c-format
+msgid "%s saving has started"
+msgstr "Sparning av %s har startat"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:229
+#, c-format
+msgid "%s '%s' was moved from data to cache"
+msgstr "%s ”%s” flyttades från data till cache"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:239
+#, c-format
+msgid "%s removing has started. Please do not close the app"
+msgstr "Borttagning av %s har startat. Stäng inte programmet"
+
+#: src/widgets/views/cant-show.vala:37
+#, c-format
+msgid "Error %d"
+msgstr "Fel %d"
+
+#: src/widgets/views/cant-show.vala:41
+msgid "Can't load page"
+msgstr "Kan inte läsa in sida"
+
+#: src/widgets/views/cant-show.vala:44
+msgid "Can't find desired content"
+msgstr "Kan inte hitta önskat innehåll"
+
+#: src/widgets/views/playlist.vala:84
+msgid "Delete playlist?"
+msgstr "Ta bort spellista?"
+
+#: src/widgets/views/playlist.vala:85
+#, c-format
+msgid "Playlist '%s' will be permanently deleted."
+msgstr "Spellistan ”%s” kommer tas bort permanent."
+
+#: src/widgets/views/playlist.vala:104
+#, c-format
+msgid "Playlist '%s' was deleted"
+msgstr "Spellistan ”%s” togs bort"
+
+#. Translators: %s is female person
+#: src/widgets/views/playlist.vala:247
+#, c-format
+msgctxt "female person"
+msgid "%s updated playlist %s"
+msgstr "%s uppdaterade spellistan %s"
+
+#. Translators: %s is male person
+#: src/widgets/views/playlist.vala:251
+#, c-format
+msgctxt "male person"
+msgid "%s updated playlist %s"
+msgstr "%s uppdaterade spellistan %s"
+
+#: src/widgets/views/playlist.vala:281
+#, c-format
+msgid "Can't change visibility of '%s'"
+msgstr "Kan inte ändra synlighet för ”%s”"
+
+#: src/widgets/views/playlist.vala:287
+#, c-format
+msgid "Playlist '%s' is public now"
+msgstr "Spellistan ”%s” är nu offentlig"
+
+#: src/widgets/views/playlist.vala:290
+#, c-format
+msgid "Playlist '%s' is private now"
+msgstr "Spellistan ”%s” är nu privat"
+
+#: src/window.vala:235
+#, c-format
+msgid "Window info message: %s"
+msgstr "Fönsterinfomeddelande: %s"
+
+#~ msgid "@APP_NAME@"
+#~ msgstr "@APP_NAME@"
+
+#~ msgid "Unofficial Yandex.Music client for GNOME @NAME_SUFFIX@"
+#~ msgstr "Inofficiell Yandex.Music-klient för GNOME @NAME_SUFFIX@"
+
+#~ msgid "Vladimir Vaskov"
+#~ msgstr "Vladimir Vaskov"
+
+#~ msgid "Rirusha"
+#~ msgstr "Rirusha"
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..2db2935
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,1328 @@
+# Turkish translation for cassette.
+# Copyright (C) 2024 cassette's COPYRIGHT HOLDER
+# This file is distributed under the same license as the cassette package.
+#
+# Sabri Ünal , 2024.
+# Emin Tufan Çetin , 2024.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cassette main\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/Rirusha/Cassette/-/issues\n"
+"POT-Creation-Date: 2024-09-30 18:34+0000\n"
+"PO-Revision-Date: 2024-10-28 15:49+0300\n"
+"Last-Translator: Sabri Ünal \n"
+"Language-Team: Türkçe \n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.5\n"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette.desktop.in.in:4
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:3 src/main.vala:23
+msgid "Cassette"
+msgstr "Kaset"
+
+#: data/space.rirusha.Cassette.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME"
+msgstr "GNOME için resmi olmayan Yandex Müzik istemcisi"
+
+#. Translators: keep number of ';'
+#: data/space.rirusha.Cassette.desktop.in.in:7
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:7
+msgid "yandex;yandex music;yam;music;"
+msgstr "yandex;yandex music;yam;music;yandex müzik;"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:4
+msgid "Cassette (Devel)"
+msgstr "Kaset (Geliştirme)"
+
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME (Devel build)"
+msgstr ""
+"GNOME için resmi olmayan Yandex Müzik istemcisi (Geliştirici derlemesi)"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:7
+msgid "Unofficial Yandex Music client"
+msgstr "Resmi olmayan Yandex Müzik istemcisi"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:9
+msgid ""
+"GTK/Adwaita application that allows to use Yandex Music service on Linux "
+"operating systems."
+msgstr ""
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:13
+msgid "Features:"
+msgstr "Özellikler:"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:17
+msgid "Allows you to save playlists and albums for offline listening"
+msgstr ""
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:20
+msgid "Has a dynamic \"karaoke mode\" right in the track information panel"
+msgstr ""
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:23
+msgid ""
+"Allows you to more precisely customize the display and playback of special "
+"content, such as explicit or suitable for children."
+msgstr ""
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:27
+msgid "Displays tracks that are currently unavailable in the service"
+msgstr ""
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:30
+msgid "Shows which tracks have been replaced and by what"
+msgstr ""
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:34
+msgid ""
+"Cassette is an unofficial client and is not associated with or endorsed by "
+"Yandex."
+msgstr ""
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:63
+msgid "Liked view"
+msgstr "Beğenilenler görünümü"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:67
+msgid "Playlists view"
+msgstr "Çalma listeleri görünümü"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:71
+msgid "Sync lyrics"
+msgstr "Şarkı sözlerini eşzamanla"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:75
+msgid "Playback queue"
+msgstr "Çalma listesi kuyruğu"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:79
+msgid "Waves view"
+msgstr "Dalgalar görünümü"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:83
+msgid "Main preferences"
+msgstr "Ana tercihler"
+
+#: data/ui/account-info-dialog.blp:5
+msgid "Account information"
+msgstr "Hesap Bilgileri"
+
+#: data/ui/account-info-dialog.blp:52
+msgid "Open in browser"
+msgstr "Tarayıcıda Aç"
+
+# Plus burada Yandex'in ek özellikler içeren bir paketinin adı.
+#: data/ui/account-info-dialog.blp:61
+msgid "Plus"
+msgstr "Plus"
+
+#: data/ui/account-info-dialog.blp:70 data/ui/no-plus-dialog.blp:51
+#: src/authenticator.vala:51
+msgid "Log out"
+msgstr "Oturumu kapat"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:11
+msgid "Usage mode"
+msgstr "Kullanım kipi"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:40
+msgctxt "auth window"
+msgid "Choose usage mode"
+msgstr "Kullanım kipini seç"
+
+#: data/ui/begin-view.ui:50
+msgctxt "auth window"
+msgid ""
+"If you select the \"Online mode\", you can access local music by enabling "
+"the display of the corresponding pages in the pages preferences, as well as "
+"log in later when selecting \"Local mode\""
+msgstr ""
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:75
+msgctxt "auth window"
+msgid "Online mode"
+msgstr "Çevrim içi kip"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:85
+msgctxt "auth window"
+msgid "Local mode"
+msgstr "Yerel kip"
+
+#. Translators: "Close" window button label
+#: data/ui/begin-view.ui:97
+msgctxt "auth window"
+msgid "Close"
+msgstr "Kapat"
+
+#: data/ui/begin-view.ui:112
+msgid "Authorization"
+msgstr "Yetkilendirme"
+
+#. Translators: size of cache dirs
+#: data/ui/cache-deletion-preferences.ui:21
+msgid "Dirs size:"
+msgstr "Dizin boyutu:"
+
+#. Translators: tempprary cache folder
+#: data/ui/cache-deletion-preferences.ui:35
+msgid "Cache"
+msgstr "Ön Bellek"
+
+#: data/ui/cache-deletion-preferences.ui:88
+msgid "Clear"
+msgstr "Temizle"
+
+#. Translators: temparence cache folder
+#: data/ui/cache-deletion-preferences.ui:109
+msgid "Data"
+msgstr "Veri"
+
+#: data/ui/cache-deletion-preferences.ui:159
+msgid "Move to cache"
+msgstr "Ön belleğe taşı"
+
+#: data/ui/cache-deletion-preferences.ui:163
+msgid "Move"
+msgstr "Taşı"
+
+#: data/ui/cache-indicator.blp:35
+msgid "Show all cache jobs"
+msgstr "Tüm ön bellek işlerini göster"
+
+#: data/ui/custom-page-preferences.ui:17
+msgid "Title: "
+msgstr "Başlık:"
+
+#: data/ui/custom-page-preferences.ui:38
+msgid "Icon: "
+msgstr "Simge: "
+
+#: data/ui/custom-page-preferences.ui:75
+msgid "Save page"
+msgstr "Sayfayı kaydet"
+
+#: data/ui/custom-page-preferences.ui:92
+msgid "Remove page"
+msgstr "Sayfayı kaldır"
+
+#. Translators: title of preference group
+#: data/ui/custom-pages-preferences.ui:7
+msgctxt "preference window"
+msgid "Custom pages"
+msgstr "Özel sayfalar"
+
+#. Translators: description of preference group
+#: data/ui/custom-pages-preferences.ui:9
+msgctxt "preference window"
+msgid "Here you can control custom pages."
+msgstr "Buradan özel sayfaları denetleyebilirsiniz."
+
+#: data/ui/disliked-tracks-view.ui:23
+#: src/widgets/buttons/menu/primary-menu-button.vala:31
+msgid "Disliked tracks"
+msgstr "Beğenilmeyen parçalar"
+
+#: data/ui/header-bar.blp:12
+msgid "Go back"
+msgstr "Geri git"
+
+#: data/ui/header-bar.blp:20
+msgid "Refresh"
+msgstr "Yenile"
+
+#: data/ui/header-bar.blp:28
+#, fuzzy
+#| msgid "Yandex.Music search"
+msgid "Yandex Music search"
+msgstr "Yandex.Music arama"
+
+#: data/ui/help-overlay.blp:11
+msgid "Main Actions"
+msgstr "Ana Eylemler"
+
+#: data/ui/help-overlay.blp:14
+msgid "Show Shortcuts"
+msgstr "Kısayolları Göster"
+
+#: data/ui/help-overlay.blp:19
+msgid "Quit"
+msgstr "Çık"
+
+#: data/ui/help-overlay.blp:25
+msgid "Playback Control"
+msgstr "Oynatma Denetimi"
+
+#: data/ui/help-overlay.blp:28
+msgid "Play/Pause playback"
+msgstr "Oynat/Duraklat"
+
+#: data/ui/help-overlay.blp:33 data/ui/player-bar.blp:87
+msgid "Play previous track"
+msgstr "Önceki parçayı çal"
+
+#: data/ui/help-overlay.blp:38 data/ui/player-bar.blp:119
+msgid "Play next track"
+msgstr "Sonraki parçayı çal"
+
+#: data/ui/help-overlay.blp:43
+msgid "Mute app"
+msgstr "Uygulamayı sustur"
+
+#: data/ui/help-overlay.blp:49
+msgid "Queue control"
+msgstr "Kuyruk denetimi"
+
+#: data/ui/help-overlay.blp:52 data/ui/player-bar.blp:141
+msgid "Change shuffle mode"
+msgstr "Karıştırma kipini değiştir"
+
+#: data/ui/help-overlay.blp:57 data/ui/player-bar.blp:65
+msgid "Change repeat mode"
+msgstr "Yineleme kipini değiştir"
+
+#: data/ui/help-overlay.blp:63
+msgid "Other"
+msgstr "Diğer"
+
+#: data/ui/help-overlay.blp:66
+msgid "Share current track"
+msgstr "Geçerli parçayı paylaş"
+
+#: data/ui/help-overlay.blp:71
+msgid "Parse url from clipboard"
+msgstr "Panodan URL ayrıştır"
+
+#: data/ui/info-marks.ui:23
+msgid "Explicit content"
+msgstr "Yetişkin içerik"
+
+#: data/ui/info-marks.ui:32
+msgid "Child content"
+msgstr "Çocuk içerik"
+
+#: data/ui/main-view.blp:6
+msgid "Page under construction"
+msgstr "Sayfa yapım aşamasında"
+
+#: data/ui/main-view.blp:20
+msgid "All stations"
+msgstr "Tüm istasyonlar"
+
+#: data/ui/no-plus-dialog.blp:20
+msgid "No Plus Subscription"
+msgstr "Plus Aboneliği Yok"
+
+#: data/ui/no-plus-dialog.blp:21
+msgid ""
+"To avoid problems with Yandex, the online functions of the application are "
+"not available without a Yandex.Plus subscription. Thanks for understanding."
+msgstr ""
+
+#: data/ui/no-plus-dialog.blp:41
+msgid "Get Plus"
+msgstr "Plus Al"
+
+#: data/ui/player-bar.blp:22
+msgid "Show track info"
+msgstr "Parça bilgisini göster"
+
+#: data/ui/player-bar.blp:206
+msgid "Show wave settings"
+msgstr "Dalga ayarlarını göster"
+
+#: data/ui/player-bar.blp:216
+msgid "Show playback queue"
+msgstr "Oynatma kuyruğunu göster"
+
+#: data/ui/player-bar.blp:229
+msgid "Change volume"
+msgstr "Sesi değiştir"
+
+#: data/ui/player-queue.blp:5 src/application.vala:271
+msgid "Playing now"
+msgstr "Şimdi oynatılıyor"
+
+#: data/ui/playlist-choose-dialog.ui:8
+msgid "Choose playlist to add"
+msgstr "Eklenecek çalma listesini seç"
+
+#: data/ui/playlist-create-button.ui:36
+msgid "Create playlist"
+msgstr "Çalma listesi oluştur"
+
+#: data/ui/playlist-micro.ui:39 data/ui/playlist-view.ui:56
+#: src/widgets/cache-indicator/job-info-badge.vala:42
+#: src/widgets/save-stack.vala:56 src/widgets/views/abstract-cachiable.vala:167
+msgid "Playlist"
+msgstr "Çalma Listesi"
+
+#: data/ui/playlist-row.ui:40
+msgid "Empty"
+msgstr "Boş"
+
+#: data/ui/playlists-view.ui:23
+msgid "Your playlists"
+msgstr "Çalma listeleriniz"
+
+#: data/ui/playlists-view.ui:39
+msgid "Also you liked these playlists"
+msgstr "Ayrıca şu çalma listelerini de beğendiniz"
+
+#: data/ui/playlist-view.ui:187
+msgid "Change playlist visibility"
+msgstr "Çalma listesi görünürlüğünü değiştir"
+
+#: data/ui/playlist-view.ui:211
+msgid "Add page to header"
+msgstr "Başlığa sayfa ekle"
+
+#. Translators: tooltip of "save" button
+#: data/ui/playlist-view.ui:233 data/ui/playlist-view.ui:237
+#: src/widgets/buttons/menu/track-options-button.vala:82
+#: src/widgets/buttons/menu/track-options-button.vala:107
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:38
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:49
+#: src/widgets/buttons/menu/track-queue-options-button.vala:72
+#: src/widgets/buttons/menu/track-queue-options-button.vala:102
+msgid "Save"
+msgstr "Kaydet"
+
+#. Translators: tooltip of "delete" button
+#: data/ui/playlist-view.ui:256 data/ui/playlist-view.ui:260
+#: src/widgets/preferences/cache-deletion-preferences.vala:96
+#: src/widgets/preferences/preferences-dialog.vala:140
+#: src/widgets/views/playlist.vala:90
+msgid "Delete"
+msgstr "Sil"
+
+#. Translators: tooltip of "abort" button
+#: data/ui/playlist-view.ui:276
+msgid "Abort"
+msgstr "Vazgeç"
+
+#: data/ui/playlist-view.ui:280
+msgid "Stop"
+msgstr "Durdur"
+
+#: data/ui/preferences-dialog.ui:8
+msgctxt "preference dialog"
+msgid "Main"
+msgstr "Ana"
+
+#: data/ui/preferences-dialog.ui:12
+msgctxt "preference dialog"
+msgid "General"
+msgstr "Genel"
+
+#: data/ui/preferences-dialog.ui:15
+msgctxt "preference dialog"
+msgid "Enable high quality audio"
+msgstr "Yüksek kaliteli sesi etkinleştir"
+
+#: data/ui/preferences-dialog.ui:16
+msgctxt "preference dialog"
+msgid ""
+"Attention! If the track was downloaded in low quality, and after the "
+"download is enabled in high quality, the audio will not be reloaded"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:21
+msgctxt "preference dialog"
+msgid "Add track on top of playlist"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:22
+msgctxt "preference dialog"
+msgid "Will the track be added to the playlist as the first or as the last"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:27
+msgctxt "preference dialog"
+msgid "Show 'Playing now' notification"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:28
+msgctxt "preference dialog"
+msgid "Show a notification when switching a track"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:35
+msgctxt "preference dialog"
+msgid "Show additional marks"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:36
+msgctxt "preference dialog"
+msgid "Additional marks display additional information about the track"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:39
+msgctxt "preference dialog"
+msgid "Show save mark"
+msgstr "Kaydetme imini göster"
+
+#: data/ui/preferences-dialog.ui:40
+msgctxt "preference dialog"
+msgid "Show a label with information about the caching status of the track"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:45
+msgctxt "preference dialog"
+msgid "Show cache mark"
+msgstr "Önbellek imini göster"
+
+#: data/ui/preferences-dialog.ui:46
+msgctxt "preference dialog"
+msgid "Show a mark about saving a track to the cache"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:51
+msgctxt "preference dialog"
+msgid "Show replaced mark"
+msgstr "Değiştirildi imini göster"
+
+#: data/ui/preferences-dialog.ui:52
+msgctxt "preference dialog"
+msgid "Show a mark that shows that the track has been replaced"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:59
+msgctxt "preference dialog"
+msgid "Tracks visibility"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:60
+msgctxt "preference dialog"
+msgid ""
+"Show special tracks in track lists. Filter doesn't work when searching in "
+"track list"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:63
+msgctxt "preference dialog"
+msgid "Show unavailable content"
+msgstr "Kullanılamayan içeriği göster"
+
+#: data/ui/preferences-dialog.ui:64
+msgctxt "preference dialog"
+msgid ""
+"Show tracks that are not available in the service. You can't listen to them"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:69
+msgctxt "preference dialog"
+msgid "Show content suitable for children"
+msgstr "Çocuklar için uygun içeriği göster"
+
+#: data/ui/preferences-dialog.ui:70
+msgctxt "preference dialog"
+msgid "Show content that is specific to children"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:75
+msgctxt "preference dialog"
+msgid "Show explicit content"
+msgstr "Müstehcen içeriği göster"
+
+#: data/ui/preferences-dialog.ui:76
+msgctxt "preference dialog"
+msgid "Show content that has age restrictions"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:83
+msgctxt "preference dialog"
+msgid "Other"
+msgstr "Diğer"
+
+#: data/ui/preferences-dialog.ui:86
+msgctxt "preference dialog"
+msgid "Enable Debug-Mode"
+msgstr "Hata ayıklama kipini etkinleştir"
+
+#: data/ui/preferences-dialog.ui:87
+msgctxt "preference dialog"
+msgid "Enable logging of additional information useful for error detection"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:94
+msgctxt "preference dialog"
+msgid "Experimental"
+msgstr "Deneysel"
+
+#: data/ui/preferences-dialog.ui:95
+msgctxt "preference dialog"
+msgid "Parameters that test anything and may be removed in future releases"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:98
+msgctxt "preference dialog"
+msgid "Use only bottom sheet menus"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:99
+msgctxt "preference dialog"
+msgid "Test preference for bottom sheet menu"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:108
+msgctxt "preference dialog"
+msgid "Pages"
+msgstr "Sayfalar"
+
+#: data/ui/preferences-dialog.ui:112
+msgctxt "preference dialog"
+msgid "Static pages"
+msgstr "Sabit sayfalar"
+
+#: data/ui/preferences-dialog.ui:113
+msgctxt "preference dialog"
+msgid ""
+"Here you can show or hide static pages. They will always be displayed on the "
+"left side of the header."
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:116
+msgctxt "preference dialog"
+msgid "Show 'Main' page"
+msgstr "'Ana' sayfayı göster"
+
+#: data/ui/preferences-dialog.ui:121
+msgctxt "preference dialog"
+msgid "Show 'Liked' page"
+msgstr "'Beğenilen' sayfasını göster"
+
+#: data/ui/preferences-dialog.ui:126
+msgctxt "preference dialog"
+msgid "Show 'Playlists' page"
+msgstr "'Çalma Listeleri' sayfasını göster"
+
+#: data/ui/preferences-dialog.ui:138
+msgctxt "preference dialog"
+msgid "Cache"
+msgstr "Ön bellek"
+
+#: data/ui/preferences-dialog.ui:142
+msgctxt "preference dialog"
+msgid "Cache managing"
+msgstr "Ön bellek yönetimi"
+
+#: data/ui/preferences-dialog.ui:143
+msgctxt "preference dialog"
+msgid ""
+"Here you can see application memory usage, delete all cache from cache "
+"folder and control downloading cache to disk"
+msgstr ""
+
+#: data/ui/preferences-dialog.ui:146
+msgctxt "preference dialog"
+msgid "Cache content"
+msgstr "İçeriği ön bellekle"
+
+#: data/ui/preferences-dialog.ui:147
+msgctxt "preference dialog"
+msgid ""
+"For better performance. Over time, it starts to take up a lot of space. So "
+"far, manual cleaning is required. If enabled, the application will cache all "
+"content to cache dir for better performance, otherwise, the application will "
+"load content only when caching objects (such as playlists or albums). "
+"Disabling the parameter does not delete already downloaded content"
+msgstr ""
+
+#: data/ui/save-stack.ui:25
+msgid "Content saving…"
+msgstr "İçerik kaydediliyor…"
+
+#: data/ui/save-stack.ui:42
+msgid "Content cached"
+msgstr "İçerik ön belleklendi"
+
+#: data/ui/save-stack.ui:56
+msgid "Content saved"
+msgstr "İçerik kaydedildi"
+
+#: data/ui/stations-view.blp:22
+msgid "Stations dashboard"
+msgstr "İstasyonlar tablosu"
+
+#: data/ui/stations-view.blp:58
+msgid "Searching for station…"
+msgstr "İstasyon aranıyor…"
+
+#: data/ui/stations-view.blp:77
+msgid "By genre…"
+msgstr "Türe göre…"
+
+#: data/ui/stations-view.blp:99 data/ui/wave-settings.blp:60
+msgid "By mood…"
+msgstr "Ruh haline göre…"
+
+#: data/ui/stations-view.blp:121 data/ui/wave-settings.blp:25
+msgid "By activity…"
+msgstr "Etkinliğe göre…"
+
+#: data/ui/stations-view.blp:143
+msgid "By epoch…"
+msgstr "Çağlara göre…"
+
+#: data/ui/stations-view.blp:165
+msgid "Other…"
+msgstr "Diğer…"
+
+#: data/ui/stations-view.blp:209
+msgid "No stations with that name were found"
+msgstr ""
+
+#: data/ui/track-info.blp:103
+msgid "Track lyrics"
+msgstr "Parça şarkı sözleri"
+
+#: data/ui/track-info.blp:117
+msgid "Authors"
+msgstr "Yazarlar"
+
+#: data/ui/track-info.blp:135
+msgid "Source"
+msgstr "Kaynak"
+
+#: data/ui/track-info.blp:158
+msgid "Similar tracks"
+msgstr "Benzer parçalar"
+
+#. Translators: placeholder of "search" entry. Local track search (inside of track list)
+#: data/ui/track-list.ui:21
+msgid "Search track"
+msgstr "Parça ara"
+
+#. Translators: part of sort by
+#: data/ui/track-list.ui:30
+msgid "Sort by"
+msgstr "Sıralama Ölçütü"
+
+#: data/ui/track-list.ui:77
+msgid "No tracks to display"
+msgstr "Görüntülenecek parça yok"
+
+#: data/ui/track-list.ui:88
+msgid "name"
+msgstr "ad"
+
+#: data/ui/track-list.ui:92
+msgid "artist"
+msgstr "sanatçı"
+
+#: data/ui/track-list.ui:96
+msgid "album"
+msgstr "albüm"
+
+#: data/ui/track-list.ui:100
+msgid "duration"
+msgstr "süre"
+
+#: data/ui/track-placeholder.ui:9 src/widgets/pages/loading-page.vala:37
+msgid "Loading…"
+msgstr "Yükleniyor…"
+
+#: data/ui/wave-settings.blp:42
+msgid "By diversity…"
+msgstr "Çeşitliliğe göre…"
+
+#: data/ui/wave-settings.blp:78
+msgid "By language…"
+msgstr "Dile göre…"
+
+#: data/ui/wave-settings.blp:93
+msgid "Can't get wave settings"
+msgstr "Dalga ayarları alınamadı"
+
+#: data/ui/window.blp:57 src/window.vala:252
+msgid "Reconnect"
+msgstr "Yeniden Bağlan"
+
+#: data/ui/window.blp:58 src/application.vala:151
+msgid "Connection problems"
+msgstr "Bağlantı sorunları"
+
+#. Translators: NAME /n NAME
+#: src/about.vala:59
+msgid "translator-credits"
+msgstr ""
+"Sabri Ünal \n"
+"Emin Tufan Çetin "
+
+#: src/about.vala:67
+msgid "Telegram channel"
+msgstr "Telegram kanalı"
+
+#: src/about.vala:68
+msgid "Financial support (Tinkoff)"
+msgstr "Maddi destek (Tinkoff)"
+
+#: src/about.vala:69
+msgid "Financial support (Boosty)"
+msgstr "Maddi destek (Boosty)"
+
+#. Please keep alphabetical
+#: src/about.vala:72
+msgid "Sponsors"
+msgstr "Sponsorlar"
+
+#: src/application.vala:62
+msgid "Print version information and exit"
+msgstr "Sürüm bilgisini yazdır ve çık"
+
+#: src/application.vala:145
+msgid "Connection restored"
+msgstr "Bağlantı yeniden sağlandı"
+
+#: src/application.vala:273
+msgid "Previous"
+msgstr "Önceki"
+
+#: src/application.vala:274
+msgid "Next"
+msgstr "Sonraki"
+
+#: src/application.vala:357
+msgid "Current track can not be copied to the clipboard"
+msgstr ""
+
+#: src/application.vala:371 src/application.vala:378 src/application.vala:435
+msgid "Can't parse clipboard content"
+msgstr "Pano içeriği ayrıştırılamadı"
+
+#: src/application.vala:389
+msgid "Users view not implemented yet"
+msgstr ""
+
+#: src/application.vala:405 src/application.vala:419
+msgid "Albums view not implemented yet"
+msgstr ""
+
+#: src/authenticator.vala:46
+msgid "Log out?"
+msgstr "Oturum kapatılsın mı?"
+
+#: src/authenticator.vala:47
+msgid "You will need to log in again to use the app"
+msgstr ""
+
+#. Translators: cancel of deleting playlist
+#: src/authenticator.vala:50
+#: src/widgets/preferences/cache-deletion-preferences.vala:95
+#: src/widgets/preferences/preferences-dialog.vala:139
+#: src/widgets/views/playlist.vala:89
+msgid "Cancel"
+msgstr "İptal"
+
+#: src/authenticator.vala:97
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Moving…"
+msgstr "Taşınıyor…"
+
+#. Translators: Playlist with liked tracks
+#: src/client/api/objects/playlist/playlist.vala:49
+#: src/client/api/objects/playlist/playlist.vala:99 src/pager.vala:276
+msgid "Liked"
+msgstr "Beğenildi"
+
+#. Translators: Playlist that updates every day
+#: src/client/api/objects/playlist/playlist.vala:53
+msgid "Daily"
+msgstr "Günlük"
+
+#. Translators: Unknown playlist
+#: src/client/api/objects/playlist/playlist.vala:57
+msgid "Unknown"
+msgstr "Bilinmeyen"
+
+#: src/client/cachier/storager.vala:124
+#, c-format
+msgid "Database was initialized, loc - %s"
+msgstr ""
+
+#: src/client/cachier/storager.vala:801
+#, c-format
+msgid "Can't save object %s"
+msgstr ""
+
+#: src/client/cachier/storager.vala:818
+msgid "Byte"
+msgid_plural "Bytes"
+msgstr[0] "Bayt"
+
+#: src/client/cachier/storager.vala:821
+msgid "Kilobyte"
+msgid_plural "Kilobytes"
+msgstr[0] "Kilobayt"
+
+#: src/client/cachier/storager.vala:824
+msgid "Megabyte"
+msgid_plural "Megabytes"
+msgstr[0] "Megabayt"
+
+#: src/client/cachier/storager.vala:827
+msgid "Gigabyte"
+msgid_plural "Gigabytes"
+msgstr[0] "Gigabyte"
+
+#: src/client/cachier/storager.vala:830
+msgid "Terabyte"
+msgid_plural "Terabytes"
+msgstr[0] "Terabayt"
+
+#: src/client/cachier/storager.vala:859
+#, c-format
+msgid "Error while getting cache directory size. Message %s"
+msgstr ""
+
+#: src/client/cachier/storager.vala:894
+#, c-format
+msgid "Error while getting permanent directory size. Message %s"
+msgstr ""
+
+#: src/client/jsoner.vala:358 src/client/jsoner.vala:419
+#: src/client/jsoner.vala:526 src/client/jsoner.vala:550
+#, c-format
+msgid "Wrong type: expected %s, got %s"
+msgstr ""
+
+#: src/client/player/mods/abstract-mode.vala:91
+msgid "Problems with queue"
+msgstr "Kuyruk ile ilgili sorun"
+
+#. Translators: name of new created playlist
+#: src/client/talkers/yam-talker.vala:627
+msgid "New Playlist"
+msgstr "Yeni Çalma Listesi"
+
+#: src/pager.vala:162
+#, c-format
+msgid "Can't set title \"%s\" to page"
+msgstr ""
+
+#: src/pager.vala:173
+#, c-format
+msgid "Can't set icon with name \"%s\" to page"
+msgstr ""
+
+#: src/pager.vala:199
+msgid "Reached max page count"
+msgstr ""
+
+#: src/pager.vala:205
+#, c-format
+msgid "Page '%s' already added"
+msgstr ""
+
+#: src/pager.vala:267
+msgid "Main"
+msgstr "Ana"
+
+#: src/pager.vala:286
+msgid "Playlists"
+msgstr "Çalma Listeleri"
+
+#: src/pager.vala:311
+#, c-format
+msgid "Can't read pages file. Message: %s"
+msgstr ""
+
+#: src/pager.vala:331
+#, c-format
+msgid "Can't create pages file. Message: %s"
+msgstr ""
+
+#: src/utils.vala:69
+msgid "Not implemented yet"
+msgstr ""
+
+#: src/utils.vala:76
+msgid "Need authorization"
+msgstr ""
+
+#: src/utils.vala:80
+msgid "Need Bookmate subscription"
+msgstr "Bookmate aboneliği gerekli"
+
+#: src/utils.vala:176 src/utils.vala:192
+msgid "Link copied to clipboard"
+msgstr ""
+
+#: src/utils.vala:241
+#, c-format
+msgid "Duration: %s h. %s min."
+msgstr "Süre: %s sa. %s dk."
+
+#: src/utils.vala:243
+#, c-format
+msgid "Duration: %s min."
+msgstr "Süre: %s dk."
+
+#: src/utils.vala:357
+msgid "today"
+msgstr "bugün"
+
+#: src/utils.vala:359
+msgid "yesterday"
+msgstr "dün"
+
+#: src/widgets/buttons/just/dislike-button.vala:37
+msgid "Remove dislike"
+msgstr ""
+
+#: src/widgets/buttons/just/dislike-button.vala:40
+msgid "Set dislike"
+msgstr ""
+
+#: src/widgets/buttons/just/like-button.vala:41
+msgid "Remove like"
+msgstr ""
+
+#: src/widgets/buttons/just/like-button.vala:48
+msgid "Set like"
+msgstr ""
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:37
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:40
+msgid "Pause"
+msgstr "Duraklat"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:44
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:47
+msgid "Play"
+msgstr "Oynat"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:48
+#, c-format
+msgid "Playlist '%s'"
+msgstr "Çalma Listesi '%s'"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:53
+#: src/widgets/buttons/menu/playlist-options-button.vala:66
+msgid "My Vibe by playlist"
+msgstr ""
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:54
+#: src/widgets/buttons/menu/playlist-options-button.vala:76
+#: src/widgets/buttons/menu/track-options-button.vala:80
+#: src/widgets/buttons/menu/track-options-button.vala:105
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:35
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:46
+#: src/widgets/buttons/menu/track-queue-options-button.vala:69
+#: src/widgets/buttons/menu/track-queue-options-button.vala:99
+msgid "Add to queue"
+msgstr "Kuyruğa ekle"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:55
+#: src/widgets/buttons/menu/playlist-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:83
+#: src/widgets/buttons/menu/track-options-button.vala:108
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:39
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:50
+#: src/widgets/buttons/menu/track-queue-options-button.vala:73
+#: src/widgets/buttons/menu/track-queue-options-button.vala:103
+msgid "Share"
+msgstr "Paylaş"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:26
+msgid "Primary menu"
+msgstr "Ana Menü"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:32
+msgid "Parse URL from clipboard"
+msgstr ""
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:33
+msgid "Preferences"
+msgstr ""
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:34
+msgid "Keyboard Shortcuts"
+msgstr ""
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:35
+msgid "About Cassette"
+msgstr ""
+
+#: src/widgets/buttons/menu/track-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:94
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:32
+#: src/widgets/buttons/menu/track-queue-options-button.vala:66
+#: src/widgets/buttons/menu/track-queue-options-button.vala:87
+msgid "My Vibe by track"
+msgstr ""
+
+#: src/widgets/buttons/menu/track-options-button.vala:78
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:33
+#: src/widgets/buttons/menu/track-queue-options-button.vala:67
+msgid "Show info"
+msgstr ""
+
+#: src/widgets/buttons/menu/track-options-button.vala:79
+#: src/widgets/buttons/menu/track-options-button.vala:104
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:34
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:45
+#: src/widgets/buttons/menu/track-queue-options-button.vala:68
+#: src/widgets/buttons/menu/track-queue-options-button.vala:98
+msgid "Play next"
+msgstr ""
+
+#: src/widgets/buttons/menu/track-options-button.vala:81
+#: src/widgets/buttons/menu/track-options-button.vala:106
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:36
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:47
+#: src/widgets/buttons/menu/track-queue-options-button.vala:70
+#: src/widgets/buttons/menu/track-queue-options-button.vala:100
+msgid "Add to playlist"
+msgstr "Çalma Listesine Ekle"
+
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:37
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:48
+msgid "Remove from playlist"
+msgstr "Çalma Listesinden Kaldır"
+
+#: src/widgets/buttons/menu/track-queue-options-button.vala:71
+#: src/widgets/buttons/menu/track-queue-options-button.vala:101
+msgid "Remove from queue"
+msgstr "Kuyruktan Kaldır"
+
+#: src/widgets/buttons/menu/volume-button.vala:121
+msgid "Volume control"
+msgstr "Ses Denetimi"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Unmute"
+msgstr "Sesi Aç"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Mute"
+msgstr "Sessiz"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:44
+#: src/widgets/save-stack.vala:52 src/widgets/views/abstract-cachiable.vala:172
+msgid "Album"
+msgstr "Albüm"
+
+#. Translators: n track from n tracks saved
+#: src/widgets/cache-indicator/job-info-badge.vala:77
+#, c-format
+msgid "%d / %d saved%s"
+msgid_plural "%d / %d saved%s"
+msgstr[0] "%d / %d kaydedildi %s"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:84
+#, c-format
+msgid "%d track saving now"
+msgid_plural "%d tracks saving now"
+msgstr[0] "%d parça şimdi kaydediliyor"
+
+#: src/widgets/info-marks.vala:41
+#, c-format
+msgid "Track was replaced. Original version: %s, %s"
+msgstr ""
+
+#: src/widgets/playlist-micro.vala:157 src/widgets/views/playlist.vala:241
+#, c-format
+msgid "Owner: %s"
+msgstr "Sahibi: %s"
+
+#: src/widgets/playlist-row.vala:85
+#, c-format
+msgid "Track count: %s"
+msgstr "Parça sayısı: %s"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:88
+#: src/widgets/preferences/preferences-dialog.vala:134
+msgid "Delete cache files?"
+msgstr "Ön bellek dosyaları silinsin mi?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:89
+msgid "Move saved files?"
+msgstr "Kayıtlı dosyalar taşınsın mı?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:90
+#: src/widgets/preferences/preferences-dialog.vala:135
+msgid ""
+"All cache will be deleted. This doesn't affect on saved playlists or albums"
+msgstr ""
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:91
+msgid ""
+"All saved playlists and albums will be moved to cache files. This could take "
+"a while."
+msgstr ""
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Deleting…"
+msgstr "Siliniyor…"
+
+#: src/widgets/save-stack.vala:54
+msgid "Image"
+msgstr "Görüntü"
+
+#: src/widgets/save-stack.vala:58
+msgid "Track"
+msgstr "Parça"
+
+#: src/widgets/save-stack.vala:75
+#, c-format
+msgid "%s saving…"
+msgstr "%s kaydediliyor…"
+
+#: src/widgets/save-stack.vala:76
+#, c-format
+msgid "%s cached"
+msgstr "%s ön belleklendi"
+
+#: src/widgets/save-stack.vala:77
+#, c-format
+msgid "%s saved"
+msgstr "%s kaydedildi"
+
+#: src/widgets/sidebar/childs/player-queue.vala:66
+#, c-format
+msgid "Playlist \"%s\""
+msgstr "Çalma Listesi \"%s\""
+
+#: src/widgets/sidebar/childs/player-queue.vala:70
+#, c-format
+msgid "Album \"%s\""
+msgstr "Sanatçı \"%s\""
+
+#: src/widgets/sidebar/childs/player-queue.vala:74
+#, c-format
+msgid "By search results \"%s\""
+msgstr "Arama sonuçlarına göre \"%s\""
+
+#: src/widgets/sidebar/childs/player-queue.vala:78
+msgid "Track list"
+msgstr "Parça listesi"
+
+#: src/widgets/sidebar/childs/track-info.vala:68
+msgid "Your music track"
+msgstr "Müzik parçanız"
+
+#: src/widgets/sidebar/childs/track-info.vala:84
+msgid "Music track"
+msgstr "Müzik parçası"
+
+#: src/widgets/sidebar/childs/wave-settings.vala:39
+msgid "Wave settings"
+msgstr "Dalga ayarları"
+
+#: src/widgets/track-rows/base.vala:79 src/widgets/track-rows/default.vala:100
+msgid "Track is not available"
+msgstr "Parça yok"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:78
+#, c-format
+msgid "%s '%s' saved successfully"
+msgstr "%s '%s' kaydedildi"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:89
+#, c-format
+msgid "%s '%s' saving was stopped, due to network error"
+msgstr "%s '%s' kaydedilemedi, ağ hatası oluştu"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:99
+#, c-format
+msgid "%s '%s' saving was aborted"
+msgstr "%s '%s' kaydından vazgeçildi"
+
+#. Translators: %s - content type (e.g. "Playlist")
+#: src/widgets/views/abstract-cachiable.vala:191
+#, c-format
+msgid "%s saving has started"
+msgstr "%s kaydı başladı"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:229
+#, c-format
+msgid "%s '%s' was moved from data to cache"
+msgstr "%s '%s' veriden ön belleğe taşındı"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:239
+#, c-format
+msgid "%s removing has started. Please do not close the app"
+msgstr "%s kaldırma başladı. Lütfen uygulamayı kapatmayın"
+
+#: src/widgets/views/cant-show.vala:37
+#, c-format
+msgid "Error %d"
+msgstr "Hata %d"
+
+#: src/widgets/views/cant-show.vala:41
+msgid "Can't load page"
+msgstr "Sayfa yüklenemedi"
+
+#: src/widgets/views/cant-show.vala:44
+msgid "Can't find desired content"
+msgstr "İstenen içerik bulunamadı"
+
+#: src/widgets/views/playlist.vala:84
+msgid "Delete playlist?"
+msgstr "Çalma listesi silinsin mi?"
+
+#: src/widgets/views/playlist.vala:85
+#, c-format
+msgid "Playlist '%s' will be permanently deleted."
+msgstr ""
+
+#: src/widgets/views/playlist.vala:104
+#, c-format
+msgid "Playlist '%s' was deleted"
+msgstr "'%s' çalma listesi silindi"
+
+#. Translators: %s is female person
+#: src/widgets/views/playlist.vala:247
+#, c-format
+msgctxt "female person"
+msgid "%s updated playlist %s"
+msgstr "%s, %s çalma listesini güncelledi"
+
+#. Translators: %s is male person
+#: src/widgets/views/playlist.vala:251
+#, c-format
+msgctxt "male person"
+msgid "%s updated playlist %s"
+msgstr "%s, %s çalma listesini güncelledi"
+
+#: src/widgets/views/playlist.vala:281
+#, c-format
+msgid "Can't change visibility of '%s'"
+msgstr "'%s' görünürlüğü değiştirelemedi"
+
+#: src/widgets/views/playlist.vala:287
+#, c-format
+msgid "Playlist '%s' is public now"
+msgstr "Çalma listesi '%s' artık genel"
+
+#: src/widgets/views/playlist.vala:290
+#, c-format
+msgid "Playlist '%s' is private now"
+msgstr "Çalma listesi '%s' artık özel"
+
+#: src/window.vala:235
+#, c-format
+msgid "Window info message: %s"
+msgstr "Pencere bilgi iletisi: %s"
+
+#~ msgid "Rirusha"
+#~ msgstr "Rirusha"
diff --git a/po/update_pot.sh b/po/update_pot.sh
deleted file mode 100644
index f0cb0e7..0000000
--- a/po/update_pot.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-# Should run from project root dir
-
-version=$(grep -F "version: " ./meson.build | grep -v "meson" | grep -o "'.*'" | sed "s/'//g")
-
-find ./src -iname "*.vala" | xargs xgettext --add-comments --package-name=Cassette --package-version="$version" --from-code=UTF-8 --output=./po/cassette-src.pot
-find ./data/ui -iname "*.ui" | xargs xgettext --add-comments --package-name=Cassette --package-version="$version" --from-code=UTF-8 --output=./po/cassette-old-ui.pot
-find ./data/ui -iname "*.blp" | xargs xgettext --add-comments --package-name=Cassette --package-version="$version" --from-code=UTF-8 --output=./po/cassette-blueprint.pot --keyword=_ --keyword=C_:1c,2 -L C
-find ./data/ -iname "*.desktop.in" | xargs xgettext --add-comments --package-name=Cassette --package-version="$version" --from-code=UTF-8 --output=./po/cassette-desktop.pot -L Desktop
-find ./data/ -iname "*.appdata.xml.in" | xargs xgettext --no-wrap --package-name=Cassette --package-version="$version" --from-code=UTF-8 --output=./po/cassette-appdata.pot
-
-msgcat --sort-by-file --use-first --output-file=./po/cassette.pot ./po/cassette-src.pot ./po/cassette-old-ui.pot ./po/cassette-blueprint.pot ./po/cassette-desktop.pot ./po/cassette-appdata.pot
-
-sed 's/#: //g;s/:[0-9]*//g;s/\.\.\///g' <(grep -F "#: " po/cassette.pot) | sed s/\ /\\n/ | sort | uniq > ./po/POTFILES.in
-
-rm ./po/cassette-*.pot
-
-echo "# Please keep this list alphabetically sorted" > ./po/LINGUAS
-for l in $(ls ./po/*.po); do basename $l .po >> ./po/LINGUAS; done
-
-for file in ./po/*.po; do
- msgmerge --update --backup=none "$file" ./po/cassette.pot
- msguniq "$file" -o "$file"
-done
-
-# To create language file use this command
-# msginit --locale=LOCALE --input cassette.pot
-# where LOCALE is something like `de`, `it`, `es`...
-# or use Poedit with "Create new"
diff --git a/po/update_potfiles.sh b/po/update_potfiles.sh
new file mode 100644
index 0000000..fe5439b
--- /dev/null
+++ b/po/update_potfiles.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+# Should run from project root dir
+
+touch ./po/unsort-POTFILES.in
+
+find ./data/ui -iname "*.ui" -type f -exec grep -l "translatable" {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
+find ./data/ui -iname "*.blp" -type f -exec grep -lrE '_\(|C_|ngettext' {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
+find ./src -iname "*.vala" -type f -exec grep -lrE '_\(|C_|ngettext' {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
+find ./data/ -iname "*.desktop.in.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
+find ./data/ -iname "*.metainfo.xml.in.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
+
+cat ./po/unsort-POTFILES.in | sort | uniq > ./po/POTFILES.in
+
+rm ./po/unsort-POTFILES.in
+
+# To add translation, please use Damned Lies service https://l10n.gnome.org/
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..90f9ffb
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,1328 @@
+# Chinese (China) translation for cassette.
+# Copyright (C) 2024 cassette's COPYRIGHT HOLDER
+# This file is distributed under the same license as the cassette package.
+# lumingzh , 2024-2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cassette main\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/Rirusha/Cassette/-/issues\n"
+"POT-Creation-Date: 2025-01-14 06:02+0000\n"
+"PO-Revision-Date: 2025-06-22 14:48+0800\n"
+"Last-Translator: lumingzh \n"
+"Language-Team: Chinese (China) \n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 48.0\n"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette.desktop.in.in:4
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:3 src/main.vala:24
+msgid "Cassette"
+msgstr "Cassette"
+
+#: data/space.rirusha.Cassette.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME"
+msgstr "GNOME 的第三方 Yandex 音乐客户端"
+
+#. Translators: keep number of ';'
+#: data/space.rirusha.Cassette.desktop.in.in:7
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:7
+msgid "yandex;yandex music;yam;music;"
+msgstr "yandex;yandex music;yam;music;音乐;播放器;歌曲;"
+
+#. Translators: app name should be translated
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:4
+msgid "Cassette (Devel)"
+msgstr "Cassette(开发版)"
+
+#: data/space.rirusha.Cassette-Devel.desktop.in.in:5
+msgid "Unofficial Yandex Music client for GNOME (Devel build)"
+msgstr "GNOME 的第三方 Yandex 音乐客户端(开发版构建)"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:7
+msgid "Unofficial Yandex Music client"
+msgstr "第三方 Yandex 音乐客户端"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:9
+msgid ""
+"GTK/Adwaita application that allows to use Yandex Music service on Linux "
+"operating systems."
+msgstr "可让您在 Linux 操作系统上使用 Yandex 音乐服务的 GTK/Adwaita 应用程序。"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:13
+msgid "Features:"
+msgstr "特性:"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:17
+msgid "Allows you to save playlists and albums for offline listening"
+msgstr "可让您保存播放列表和专辑用于离线播放"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:20
+msgid "Has a dynamic \"karaoke mode\" right in the track information panel"
+msgstr "在曲目信息面板中有动态“卡拉 OK 模式”"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:23
+msgid ""
+"Allows you to more precisely customize the display and playback of special "
+"content, such as explicit or suitable for children."
+msgstr "可让您更精准自定义显示和播放特定内容,比如露骨内容或适合儿童的内容。"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:27
+msgid "Displays tracks that are currently unavailable in the service"
+msgstr "显示当前在服务中不可用的曲目"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:30
+msgid "Shows which tracks have been replaced and by what"
+msgstr "显示被替换的曲目和替换后的曲目"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:34
+msgid ""
+"Cassette is an unofficial client and is not associated with or endorsed by "
+"Yandex."
+msgstr "Cassette 是第三方客户端且未与 Yandex 关联或受其支持。"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:63
+msgid "Liked view"
+msgstr "喜欢视图"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:67
+msgid "Playlists view"
+msgstr "播放列表视图"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:71
+msgid "Sync lyrics"
+msgstr "同步歌词"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:75
+msgid "Playback queue"
+msgstr "播放队列"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:79
+msgid "Waves view"
+msgstr "波形视图"
+
+#: data/space.rirusha.Cassette.metainfo.xml.in.in:83
+msgid "Main preferences"
+msgstr "主首选项"
+
+#: data/ui/account-info-dialog.blp:5
+msgid "Account information"
+msgstr "账号信息"
+
+#: data/ui/account-info-dialog.blp:52
+msgid "Open in browser"
+msgstr "在浏览器中打开"
+
+#: data/ui/account-info-dialog.blp:61
+msgid "Plus"
+msgstr "会员"
+
+#: data/ui/account-info-dialog.blp:70 data/ui/no-plus-dialog.blp:51
+#: src/authenticator.vala:52
+msgid "Log out"
+msgstr "登出"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:11
+msgid "Usage mode"
+msgstr "使用模式"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:40
+msgctxt "auth window"
+msgid "Choose usage mode"
+msgstr "选择使用模式"
+
+#: data/ui/begin-view.ui:50
+msgctxt "auth window"
+msgid ""
+"If you select the \"Online mode\", you can access local music by enabling "
+"the display of the corresponding pages in the pages preferences, as well as "
+"log in later when selecting \"Local mode\""
+msgstr ""
+"如果您选择“在线模式”,可以通过在页面首选项中启用显示相应页面来访问本地音乐,"
+"或选择“本地模式”后登录"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:75
+msgctxt "auth window"
+msgid "Online mode"
+msgstr "在线模式"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:85
+msgctxt "auth window"
+msgid "Local mode"
+msgstr "本地模式"
+
+#. Translators: "Close" window button label
+#: data/ui/begin-view.ui:97
+msgctxt "auth window"
+msgid "Close"
+msgstr "关闭"
+
+#: data/ui/begin-view.ui:112
+msgid "Authorization"
+msgstr "授权"
+
+#. Translators: size of cache dirs
+#: data/ui/cache-deletion-preferences.ui:21
+msgid "Dirs size:"
+msgstr "目录大小:"
+
+#. Translators: tempprary cache folder
+#: data/ui/cache-deletion-preferences.ui:35
+msgid "Cache"
+msgstr "缓存"
+
+#: data/ui/cache-deletion-preferences.ui:88
+msgid "Clear"
+msgstr "清除"
+
+#. Translators: temparence cache folder
+#: data/ui/cache-deletion-preferences.ui:109
+msgid "Data"
+msgstr "数据"
+
+#: data/ui/cache-deletion-preferences.ui:159
+msgid "Move to cache"
+msgstr "移至缓存"
+
+#: data/ui/cache-deletion-preferences.ui:163
+msgid "Move"
+msgstr "移动"
+
+#: data/ui/cache-indicator.blp:35
+msgid "Show all cache jobs"
+msgstr "显示所有缓存任务"
+
+#: data/ui/custom-page-preferences.ui:17
+msgid "Title: "
+msgstr "标题:"
+
+#: data/ui/custom-page-preferences.ui:38
+msgid "Icon: "
+msgstr "图标:"
+
+#: data/ui/custom-page-preferences.ui:75
+msgid "Save page"
+msgstr "保存页面"
+
+#: data/ui/custom-page-preferences.ui:92
+msgid "Remove page"
+msgstr "移除页面"
+
+#. Translators: title of preference group
+#: data/ui/custom-pages-preferences.ui:7
+msgctxt "preference window"
+msgid "Custom pages"
+msgstr "自定义页面"
+
+#. Translators: description of preference group
+#: data/ui/custom-pages-preferences.ui:9
+msgctxt "preference window"
+msgid "Here you can control custom pages."
+msgstr "您可以在这里控制自定义页面。"
+
+#: data/ui/disliked-tracks-view.ui:23
+#: src/widgets/buttons/menu/primary-menu-button.vala:32
+msgid "Disliked tracks"
+msgstr "讨厌的曲目"
+
+#: data/ui/header-bar.blp:12
+msgid "Go back"
+msgstr "返回"
+
+#: data/ui/header-bar.blp:20
+msgid "Refresh"
+msgstr "刷新"
+
+#: data/ui/header-bar.blp:28
+msgid "Yandex Music search"
+msgstr "Yandex 音乐搜索"
+
+#: data/ui/help-overlay.blp:11
+msgid "Main Actions"
+msgstr "主操作"
+
+#: data/ui/help-overlay.blp:14
+msgid "Show Shortcuts"
+msgstr "显示快捷键"
+
+#: data/ui/help-overlay.blp:19
+msgid "Quit"
+msgstr "退出"
+
+#: data/ui/help-overlay.blp:25
+msgid "Playback Control"
+msgstr "播放控制"
+
+#: data/ui/help-overlay.blp:28
+msgid "Play/Pause playback"
+msgstr "播放/暂停播放"
+
+#: data/ui/help-overlay.blp:33 data/ui/player-bar.blp:87
+msgid "Play previous track"
+msgstr "播放上一首曲目"
+
+#: data/ui/help-overlay.blp:38 data/ui/player-bar.blp:119
+msgid "Play next track"
+msgstr "播放下一首曲目"
+
+#: data/ui/help-overlay.blp:43
+msgid "Mute app"
+msgstr "静音应用"
+
+#: data/ui/help-overlay.blp:49
+msgid "Queue control"
+msgstr "队列控制"
+
+#: data/ui/help-overlay.blp:52 data/ui/player-bar.blp:141
+msgid "Change shuffle mode"
+msgstr "更改乱序模式"
+
+#: data/ui/help-overlay.blp:57 data/ui/player-bar.blp:65
+msgid "Change repeat mode"
+msgstr "更改重复模式"
+
+#: data/ui/help-overlay.blp:63
+msgid "Other"
+msgstr "其它"
+
+#: data/ui/help-overlay.blp:66
+msgid "Share current track"
+msgstr "分享当前曲目"
+
+#: data/ui/help-overlay.blp:71
+msgid "Parse url from clipboard"
+msgstr "从剪贴板解析 URL"
+
+#: data/ui/info-marks.ui:23
+msgid "Explicit content"
+msgstr "露骨内容"
+
+#: data/ui/info-marks.ui:32
+msgid "Child content"
+msgstr "儿童内容"
+
+#: data/ui/main-view.blp:6
+msgid "Page under construction"
+msgstr "施工中页面"
+
+#: data/ui/main-view.blp:20
+msgid "All stations"
+msgstr "所有电台"
+
+#: data/ui/no-plus-dialog.blp:20
+msgid "No Plus Subscription"
+msgstr "无会员订阅"
+
+#: data/ui/no-plus-dialog.blp:21
+msgid ""
+"To avoid problems with Yandex, the online functions of the application are "
+"not available without a Yandex.Plus subscription. Thanks for understanding."
+msgstr ""
+"为了避免与 Yandex 相关的问题,该应用程序的在线功能在没有 Yandex 会员订阅时不"
+"可用。感谢理解。"
+
+#: data/ui/no-plus-dialog.blp:41
+msgid "Get Plus"
+msgstr "获取会员"
+
+#: data/ui/player-bar.blp:22
+msgid "Show track info"
+msgstr "显示曲目信息"
+
+#: data/ui/player-bar.blp:206
+msgid "Show wave settings"
+msgstr "显示波形设置"
+
+#: data/ui/player-bar.blp:216
+msgid "Show playback queue"
+msgstr "显示播放队列"
+
+#: data/ui/player-bar.blp:229
+msgid "Change volume"
+msgstr "更改音量"
+
+#: data/ui/player-queue.blp:5 src/application.vala:272
+msgid "Playing now"
+msgstr "正在播放"
+
+#: data/ui/playlist-choose-dialog.ui:8
+msgid "Choose playlist to add"
+msgstr "选择添加的播放列表"
+
+#: data/ui/playlist-create-button.ui:36
+msgid "Create playlist"
+msgstr "创建播放列表"
+
+#: data/ui/playlist-micro.ui:39 data/ui/playlist-view.ui:56
+#: src/widgets/cache-indicator/job-info-badge.vala:43
+#: src/widgets/save-stack.vala:57 src/widgets/views/abstract-cachiable.vala:168
+msgid "Playlist"
+msgstr "播放列表"
+
+#: data/ui/playlist-row.ui:40
+msgid "Empty"
+msgstr "空"
+
+#: data/ui/playlists-view.ui:23
+msgid "Your playlists"
+msgstr "您的播放列表"
+
+#: data/ui/playlists-view.ui:39
+msgid "Also you liked these playlists"
+msgstr "您也喜欢这些播放列表"
+
+#: data/ui/playlist-view.ui:187
+msgid "Change playlist visibility"
+msgstr "更改播放列表可见性"
+
+#: data/ui/playlist-view.ui:211
+msgid "Add page to header"
+msgstr "将页面添加到头部"
+
+#. Translators: tooltip of "save" button
+#: data/ui/playlist-view.ui:233 data/ui/playlist-view.ui:237
+#: src/widgets/buttons/menu/track-options-button.vala:83
+#: src/widgets/buttons/menu/track-options-button.vala:108
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:39
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:50
+#: src/widgets/buttons/menu/track-queue-options-button.vala:73
+#: src/widgets/buttons/menu/track-queue-options-button.vala:103
+msgid "Save"
+msgstr "保存"
+
+#. Translators: tooltip of "delete" button
+#: data/ui/playlist-view.ui:256 data/ui/playlist-view.ui:260
+#: src/widgets/preferences/cache-deletion-preferences.vala:97
+#: src/widgets/preferences/preferences-dialog.vala:141
+#: src/widgets/views/playlist.vala:91
+msgid "Delete"
+msgstr "删除"
+
+#. Translators: tooltip of "abort" button
+#: data/ui/playlist-view.ui:276
+msgid "Abort"
+msgstr "中止"
+
+#: data/ui/playlist-view.ui:280
+msgid "Stop"
+msgstr "停止"
+
+#: data/ui/preferences-dialog.ui:8
+msgctxt "preference dialog"
+msgid "Main"
+msgstr "主要"
+
+#: data/ui/preferences-dialog.ui:12
+msgctxt "preference dialog"
+msgid "General"
+msgstr "常规"
+
+#: data/ui/preferences-dialog.ui:15
+msgctxt "preference dialog"
+msgid "Enable high quality audio"
+msgstr "启用高质量音频"
+
+#: data/ui/preferences-dialog.ui:16
+msgctxt "preference dialog"
+msgid ""
+"Attention! If the track was downloaded in low quality, and after the "
+"download is enabled in high quality, the audio will not be reloaded"
+msgstr ""
+"注意!如果曲目已以低质量下载并在下载之后启用了高质量选项,则已下载音频不会重"
+"新加载"
+
+#: data/ui/preferences-dialog.ui:21
+msgctxt "preference dialog"
+msgid "Add track on top of playlist"
+msgstr "添加曲目至播放列表顶部"
+
+#: data/ui/preferences-dialog.ui:22
+msgctxt "preference dialog"
+msgid "Will the track be added to the playlist as the first or as the last"
+msgstr "将曲目添加至播放列表顶部还是底部"
+
+#: data/ui/preferences-dialog.ui:27
+msgctxt "preference dialog"
+msgid "Show 'Playing now' notification"
+msgstr "显示“正在播放”通知"
+
+#: data/ui/preferences-dialog.ui:28
+msgctxt "preference dialog"
+msgid "Show a notification when switching a track"
+msgstr "切换曲目时显示通知"
+
+#: data/ui/preferences-dialog.ui:35
+msgctxt "preference dialog"
+msgid "Show additional marks"
+msgstr "显示额外标记"
+
+#: data/ui/preferences-dialog.ui:36
+msgctxt "preference dialog"
+msgid "Additional marks display additional information about the track"
+msgstr "额外标记会显示关于曲目的额外信息"
+
+#: data/ui/preferences-dialog.ui:39
+msgctxt "preference dialog"
+msgid "Show save mark"
+msgstr "显示保存标记"
+
+#: data/ui/preferences-dialog.ui:40
+msgctxt "preference dialog"
+msgid "Show a label with information about the caching status of the track"
+msgstr "显示带有关于曲目缓存状态信息的标签"
+
+#: data/ui/preferences-dialog.ui:45
+msgctxt "preference dialog"
+msgid "Show cache mark"
+msgstr "显示缓存标记"
+
+#: data/ui/preferences-dialog.ui:46
+msgctxt "preference dialog"
+msgid "Show a mark about saving a track to the cache"
+msgstr "显示关于将曲目保存至缓存的标记"
+
+#: data/ui/preferences-dialog.ui:51
+msgctxt "preference dialog"
+msgid "Show replaced mark"
+msgstr "显示替换标记"
+
+#: data/ui/preferences-dialog.ui:52
+msgctxt "preference dialog"
+msgid "Show a mark that shows that the track has been replaced"
+msgstr "显示表明曲目已被替换的标记"
+
+#: data/ui/preferences-dialog.ui:59
+msgctxt "preference dialog"
+msgid "Tracks visibility"
+msgstr "曲目可见性"
+
+#: data/ui/preferences-dialog.ui:60
+msgctxt "preference dialog"
+msgid ""
+"Show special tracks in track lists. Filter doesn't work when searching in "
+"track list"
+msgstr "显示曲目列表中的特定曲目。在曲目列表中搜索时无法使用筛选器"
+
+#: data/ui/preferences-dialog.ui:63
+msgctxt "preference dialog"
+msgid "Show unavailable content"
+msgstr "显示不可用内容"
+
+#: data/ui/preferences-dialog.ui:64
+msgctxt "preference dialog"
+msgid ""
+"Show tracks that are not available in the service. You can't listen to them"
+msgstr "显示服务中不可用的曲目。您无法听这些曲目"
+
+#: data/ui/preferences-dialog.ui:69
+msgctxt "preference dialog"
+msgid "Show content suitable for children"
+msgstr "显示适合儿童的内容"
+
+#: data/ui/preferences-dialog.ui:70
+msgctxt "preference dialog"
+msgid "Show content that is specific to children"
+msgstr "显示儿童特定的内容"
+
+#: data/ui/preferences-dialog.ui:75
+msgctxt "preference dialog"
+msgid "Show explicit content"
+msgstr "显示露骨内容"
+
+#: data/ui/preferences-dialog.ui:76
+msgctxt "preference dialog"
+msgid "Show content that has age restrictions"
+msgstr "显示具有年龄限制的内容"
+
+#: data/ui/preferences-dialog.ui:83
+msgctxt "preference dialog"
+msgid "Other"
+msgstr "其它"
+
+#: data/ui/preferences-dialog.ui:86
+msgctxt "preference dialog"
+msgid "Enable Debug-Mode"
+msgstr "启用调试模式"
+
+#: data/ui/preferences-dialog.ui:87
+msgctxt "preference dialog"
+msgid "Enable logging of additional information useful for error detection"
+msgstr "启用对错误检测有用的额外信息的日志记录"
+
+#: data/ui/preferences-dialog.ui:94
+msgctxt "preference dialog"
+msgid "Experimental"
+msgstr "试验"
+
+#: data/ui/preferences-dialog.ui:95
+msgctxt "preference dialog"
+msgid "Parameters that test anything and may be removed in future releases"
+msgstr "测试所有部分且可能在未来发布中移除的参数"
+
+#: data/ui/preferences-dialog.ui:98
+msgctxt "preference dialog"
+msgid "Use only bottom sheet menus"
+msgstr "使用仅底部操作表菜单"
+
+#: data/ui/preferences-dialog.ui:99
+msgctxt "preference dialog"
+msgid "Test preference for bottom sheet menu"
+msgstr "底部操作表菜单的测试首选项"
+
+#: data/ui/preferences-dialog.ui:108
+msgctxt "preference dialog"
+msgid "Pages"
+msgstr "页面"
+
+#: data/ui/preferences-dialog.ui:112
+msgctxt "preference dialog"
+msgid "Static pages"
+msgstr "静态页面"
+
+#: data/ui/preferences-dialog.ui:113
+msgctxt "preference dialog"
+msgid ""
+"Here you can show or hide static pages. They will always be displayed on the "
+"left side of the header."
+msgstr "这里您可以显示或隐藏静态页面。它们将总是显示在标头的左侧。"
+
+#: data/ui/preferences-dialog.ui:116
+msgctxt "preference dialog"
+msgid "Show 'Main' page"
+msgstr "显示“主”页面"
+
+#: data/ui/preferences-dialog.ui:121
+msgctxt "preference dialog"
+msgid "Show 'Liked' page"
+msgstr "显示“喜欢”页面"
+
+#: data/ui/preferences-dialog.ui:126
+msgctxt "preference dialog"
+msgid "Show 'Playlists' page"
+msgstr "显示“播放列表”页面"
+
+#: data/ui/preferences-dialog.ui:138
+msgctxt "preference dialog"
+msgid "Cache"
+msgstr "缓存"
+
+#: data/ui/preferences-dialog.ui:142
+msgctxt "preference dialog"
+msgid "Cache managing"
+msgstr "缓存管理"
+
+#: data/ui/preferences-dialog.ui:143
+msgctxt "preference dialog"
+msgid ""
+"Here you can see application memory usage, delete all cache from cache "
+"folder and control downloading cache to disk"
+msgstr ""
+"这里您可以查看应用程序的内存占用,从缓存文件夹删除所有缓存和对将缓存下载至磁"
+"盘进行控制"
+
+#: data/ui/preferences-dialog.ui:146
+msgctxt "preference dialog"
+msgid "Cache content"
+msgstr "缓存内容"
+
+#: data/ui/preferences-dialog.ui:147
+msgctxt "preference dialog"
+msgid ""
+"For better performance. Over time, it starts to take up a lot of space. So "
+"far, manual cleaning is required. If enabled, the application will cache all "
+"content to cache dir for better performance, otherwise, the application will "
+"load content only when caching objects (such as playlists or albums). "
+"Disabling the parameter does not delete already downloaded content"
+msgstr ""
+"为了更好的性能。随着使用,它会开始占用大量空间。目前需要手动清理。如果启用,"
+"应用程序会将所有内容缓存至缓存目录以获得更好的性能,否则会仅在缓存对象(比如"
+"播放列表或专辑)时加载内容。禁用该选项不会删除已经下载的内容"
+
+#: data/ui/save-stack.ui:25
+msgid "Content saving…"
+msgstr "正在保存内容…"
+
+#: data/ui/save-stack.ui:42
+msgid "Content cached"
+msgstr "内容已缓存"
+
+#: data/ui/save-stack.ui:56
+msgid "Content saved"
+msgstr "内容已保存"
+
+#: data/ui/stations-view.blp:22
+msgid "Stations dashboard"
+msgstr "电台仪表盘"
+
+#: data/ui/stations-view.blp:58
+msgid "Searching for station…"
+msgstr "搜索电台…"
+
+#: data/ui/stations-view.blp:77
+msgid "By genre…"
+msgstr "按流派…"
+
+#: data/ui/stations-view.blp:99 data/ui/wave-settings.blp:60
+msgid "By mood…"
+msgstr "按情绪…"
+
+#: data/ui/stations-view.blp:121 data/ui/wave-settings.blp:25
+msgid "By activity…"
+msgstr "按活跃…"
+
+#: data/ui/stations-view.blp:143
+msgid "By epoch…"
+msgstr "按时代…"
+
+#: data/ui/stations-view.blp:165
+msgid "Other…"
+msgstr "其它…"
+
+#: data/ui/stations-view.blp:209
+msgid "No stations with that name were found"
+msgstr "未找到带有该名称的电台"
+
+#: data/ui/track-info.blp:103
+msgid "Track lyrics"
+msgstr "曲目歌词"
+
+#: data/ui/track-info.blp:117
+msgid "Authors"
+msgstr "作者"
+
+#: data/ui/track-info.blp:135
+msgid "Source"
+msgstr "来源"
+
+#: data/ui/track-info.blp:158
+msgid "Similar tracks"
+msgstr "相似曲目"
+
+#. Translators: placeholder of "search" entry. Local track search (inside of track list)
+#: data/ui/track-list.ui:21
+msgid "Search track"
+msgstr "搜索曲目"
+
+#. Translators: part of sort by
+#: data/ui/track-list.ui:30
+msgid "Sort by"
+msgstr "排序方式"
+
+#: data/ui/track-list.ui:77
+msgid "No tracks to display"
+msgstr "无可显示曲目"
+
+#: data/ui/track-list.ui:88
+msgid "name"
+msgstr "名称"
+
+#: data/ui/track-list.ui:92
+msgid "artist"
+msgstr "艺人"
+
+#: data/ui/track-list.ui:96
+msgid "album"
+msgstr "专辑"
+
+#: data/ui/track-list.ui:100
+msgid "duration"
+msgstr "时长"
+
+#: data/ui/track-placeholder.ui:9 src/widgets/pages/loading-page.vala:38
+msgid "Loading…"
+msgstr "正在加载…"
+
+#: data/ui/wave-settings.blp:42
+msgid "By diversity…"
+msgstr "按多元性…"
+
+#: data/ui/wave-settings.blp:78
+msgid "By language…"
+msgstr "按语言…"
+
+#: data/ui/wave-settings.blp:93
+msgid "Can't get wave settings"
+msgstr "无法获取波形设置"
+
+#: data/ui/window.blp:57 src/window.vala:253
+msgid "Reconnect"
+msgstr "重新连接"
+
+#: data/ui/window.blp:58 src/application.vala:152
+msgid "Connection problems"
+msgstr "连接问题"
+
+#. Translators: NAME /n NAME
+#: src/about.vala:60
+msgid "translator-credits"
+msgstr "lumingzh , 2024-2025"
+
+#: src/about.vala:68
+msgid "Telegram channel"
+msgstr "Telegram 频道"
+
+#: src/about.vala:69
+msgid "Financial support (Tinkoff)"
+msgstr "财政支持(Tinkoff)"
+
+#: src/about.vala:70
+msgid "Financial support (Boosty)"
+msgstr "财政支持(Boosty)"
+
+#. Please keep alphabetical
+#: src/about.vala:73
+msgid "Sponsors"
+msgstr "赞助者"
+
+#: src/application.vala:63
+msgid "Print version information and exit"
+msgstr "显示版本信息并退出"
+
+#: src/application.vala:146
+msgid "Connection restored"
+msgstr "连接已恢复"
+
+#: src/application.vala:274
+msgid "Previous"
+msgstr "上一首"
+
+#: src/application.vala:275
+msgid "Next"
+msgstr "下一首"
+
+#: src/application.vala:358
+msgid "Current track can not be copied to the clipboard"
+msgstr "当前曲目无法复制到剪贴板"
+
+#: src/application.vala:372 src/application.vala:379 src/application.vala:436
+msgid "Can't parse clipboard content"
+msgstr "无法解析剪贴板内容"
+
+#: src/application.vala:390
+msgid "Users view not implemented yet"
+msgstr "用户视图尚未实现"
+
+#: src/application.vala:406 src/application.vala:420
+msgid "Albums view not implemented yet"
+msgstr "专辑视图尚未实现"
+
+#: src/authenticator.vala:47
+msgid "Log out?"
+msgstr "登出吗?"
+
+#: src/authenticator.vala:48
+msgid "You will need to log in again to use the app"
+msgstr "您将需要再次登录以使用该应用"
+
+#. Translators: cancel of deleting playlist
+#: src/authenticator.vala:51
+#: src/widgets/preferences/cache-deletion-preferences.vala:96
+#: src/widgets/preferences/preferences-dialog.vala:140
+#: src/widgets/views/playlist.vala:90
+msgid "Cancel"
+msgstr "取消"
+
+#: src/authenticator.vala:98
+#: src/widgets/preferences/cache-deletion-preferences.vala:130
+msgid "Moving…"
+msgstr "正在移动…"
+
+#. Translators: Playlist with liked tracks
+#: src/client/api/objects/playlist/playlist.vala:50
+#: src/client/api/objects/playlist/playlist.vala:100 src/pager.vala:277
+msgid "Liked"
+msgstr "喜爱"
+
+#. Translators: Playlist that updates every day
+#: src/client/api/objects/playlist/playlist.vala:54
+msgid "Daily"
+msgstr "每日"
+
+#. Translators: Unknown playlist
+#: src/client/api/objects/playlist/playlist.vala:58
+msgid "Unknown"
+msgstr "未知"
+
+#: src/client/cachier/storager.vala:125
+#, c-format
+msgid "Database was initialized, loc - %s"
+msgstr "数据库已初始化,位置 - %s"
+
+#: src/client/cachier/storager.vala:802
+#, c-format
+msgid "Can't save object %s"
+msgstr "无法保存对象 %s"
+
+#: src/client/cachier/storager.vala:819
+msgid "Byte"
+msgid_plural "Bytes"
+msgstr[0] "B"
+
+#: src/client/cachier/storager.vala:822
+msgid "Kilobyte"
+msgid_plural "Kilobytes"
+msgstr[0] "KB"
+
+#: src/client/cachier/storager.vala:825
+msgid "Megabyte"
+msgid_plural "Megabytes"
+msgstr[0] "MB"
+
+#: src/client/cachier/storager.vala:828
+msgid "Gigabyte"
+msgid_plural "Gigabytes"
+msgstr[0] "GB"
+
+#: src/client/cachier/storager.vala:831
+msgid "Terabyte"
+msgid_plural "Terabytes"
+msgstr[0] "TB"
+
+#: src/client/cachier/storager.vala:860
+#, c-format
+msgid "Error while getting cache directory size. Message %s"
+msgstr "获取缓存目录大小时出错。消息 %s"
+
+#: src/client/cachier/storager.vala:895
+#, c-format
+msgid "Error while getting permanent directory size. Message %s"
+msgstr "获取永存目录大小时出错。消息 %s"
+
+#: src/client/jsoner.vala:358 src/client/jsoner.vala:419
+#: src/client/jsoner.vala:526 src/client/jsoner.vala:550
+#, c-format
+msgid "Wrong type: expected %s, got %s"
+msgstr "类型错误:需要 %s,但获得 %s"
+
+#: src/client/player/mods/abstract-mode.vala:92
+msgid "Problems with queue"
+msgstr "队列有问题"
+
+#. Translators: name of new created playlist
+#: src/client/talkers/yam-talker.vala:628
+msgid "New Playlist"
+msgstr "新建播放列表"
+
+#: src/pager.vala:163
+#, c-format
+msgid "Can't set title \"%s\" to page"
+msgstr "无法为页面设定“%s”标题"
+
+#: src/pager.vala:174
+#, c-format
+msgid "Can't set icon with name \"%s\" to page"
+msgstr "无法为页面设定带名字“%s”的图标"
+
+#: src/pager.vala:200
+msgid "Reached max page count"
+msgstr "达到最大页数"
+
+#: src/pager.vala:206
+#, c-format
+msgid "Page '%s' already added"
+msgstr "页面“%s”已经添加"
+
+#: src/pager.vala:268
+msgid "Main"
+msgstr "主页"
+
+#: src/pager.vala:287
+msgid "Playlists"
+msgstr "播放列表"
+
+#: src/pager.vala:312
+#, c-format
+msgid "Can't read pages file. Message: %s"
+msgstr "无法读取页面文件。消息:%s"
+
+#: src/pager.vala:332
+#, c-format
+msgid "Can't create pages file. Message: %s"
+msgstr "无法创建页面文件。消息:%s"
+
+#: src/utils.vala:70
+msgid "Not implemented yet"
+msgstr "尚未实现"
+
+#: src/utils.vala:77
+msgid "Need authorization"
+msgstr "需要认证"
+
+#: src/utils.vala:81
+msgid "Need Bookmate subscription"
+msgstr "需要 Bookmate 订阅"
+
+#: src/utils.vala:177 src/utils.vala:193
+msgid "Link copied to clipboard"
+msgstr "链接已复制到剪贴板"
+
+#: src/utils.vala:242
+#, c-format
+msgid "Duration: %s h. %s min."
+msgstr "时长:%s 时 %s 分"
+
+#: src/utils.vala:244
+#, c-format
+msgid "Duration: %s min."
+msgstr "时长:%s 分"
+
+#: src/utils.vala:358
+msgid "today"
+msgstr "今天"
+
+#: src/utils.vala:360
+msgid "yesterday"
+msgstr "昨天"
+
+#: src/widgets/buttons/just/dislike-button.vala:38
+msgid "Remove dislike"
+msgstr "移除讨厌"
+
+#: src/widgets/buttons/just/dislike-button.vala:41
+msgid "Set dislike"
+msgstr "设为讨厌"
+
+#: src/widgets/buttons/just/like-button.vala:42
+msgid "Remove like"
+msgstr "移除喜爱"
+
+#: src/widgets/buttons/just/like-button.vala:49
+msgid "Set like"
+msgstr "设为喜爱"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:38
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:41
+msgid "Pause"
+msgstr "暂停"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:45
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:48
+msgid "Play"
+msgstr "播放"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:49
+#, c-format
+msgid "Playlist '%s'"
+msgstr "播放列表“%s”"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:54
+#: src/widgets/buttons/menu/playlist-options-button.vala:67
+msgid "My Vibe by playlist"
+msgstr "基于播放列表的推荐"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:55
+#: src/widgets/buttons/menu/playlist-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:81
+#: src/widgets/buttons/menu/track-options-button.vala:106
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:36
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:47
+#: src/widgets/buttons/menu/track-queue-options-button.vala:70
+#: src/widgets/buttons/menu/track-queue-options-button.vala:100
+msgid "Add to queue"
+msgstr "添加到队列"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:56
+#: src/widgets/buttons/menu/playlist-options-button.vala:78
+#: src/widgets/buttons/menu/track-options-button.vala:84
+#: src/widgets/buttons/menu/track-options-button.vala:109
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:40
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:51
+#: src/widgets/buttons/menu/track-queue-options-button.vala:74
+#: src/widgets/buttons/menu/track-queue-options-button.vala:104
+msgid "Share"
+msgstr "分享"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:27
+msgid "Primary menu"
+msgstr "主菜单"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:33
+msgid "Parse URL from clipboard"
+msgstr "从剪贴板解析 URL"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:34
+msgid "Preferences"
+msgstr "首选项"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:35
+msgid "Keyboard Shortcuts"
+msgstr "键盘快捷键"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:36
+msgid "About Cassette"
+msgstr "关于 Cassette"
+
+#: src/widgets/buttons/menu/track-options-button.vala:78
+#: src/widgets/buttons/menu/track-options-button.vala:95
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:33
+#: src/widgets/buttons/menu/track-queue-options-button.vala:67
+#: src/widgets/buttons/menu/track-queue-options-button.vala:88
+msgid "My Vibe by track"
+msgstr "基于单曲的推荐"
+
+#: src/widgets/buttons/menu/track-options-button.vala:79
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:34
+#: src/widgets/buttons/menu/track-queue-options-button.vala:68
+msgid "Show info"
+msgstr "显示信息"
+
+#: src/widgets/buttons/menu/track-options-button.vala:80
+#: src/widgets/buttons/menu/track-options-button.vala:105
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:35
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:46
+#: src/widgets/buttons/menu/track-queue-options-button.vala:69
+#: src/widgets/buttons/menu/track-queue-options-button.vala:99
+msgid "Play next"
+msgstr "播放下一首"
+
+#: src/widgets/buttons/menu/track-options-button.vala:82
+#: src/widgets/buttons/menu/track-options-button.vala:107
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:37
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:48
+#: src/widgets/buttons/menu/track-queue-options-button.vala:71
+#: src/widgets/buttons/menu/track-queue-options-button.vala:101
+msgid "Add to playlist"
+msgstr "添加到播放列表"
+
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:38
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:49
+msgid "Remove from playlist"
+msgstr "从播放列表移除"
+
+#: src/widgets/buttons/menu/track-queue-options-button.vala:72
+#: src/widgets/buttons/menu/track-queue-options-button.vala:102
+msgid "Remove from queue"
+msgstr "从播放队列移除"
+
+#: src/widgets/buttons/menu/volume-button.vala:122
+msgid "Volume control"
+msgstr "音量控制"
+
+#: src/widgets/buttons/menu/volume-button.vala:262
+msgid "Unmute"
+msgstr "取消静音"
+
+#: src/widgets/buttons/menu/volume-button.vala:262
+msgid "Mute"
+msgstr "静音"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:45
+#: src/widgets/save-stack.vala:53 src/widgets/views/abstract-cachiable.vala:173
+msgid "Album"
+msgstr "专辑"
+
+#. Translators: n track from n tracks saved
+#: src/widgets/cache-indicator/job-info-badge.vala:78
+#, c-format
+msgid "%d / %d saved%s"
+msgid_plural "%d / %d saved%s"
+msgstr[0] "%d / %d 已保存 %s"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:85
+#, c-format
+msgid "%d track saving now"
+msgid_plural "%d tracks saving now"
+msgstr[0] "正在保存 %d 首曲目"
+
+#: src/widgets/info-marks.vala:42
+#, c-format
+msgid "Track was replaced. Original version: %s, %s"
+msgstr "曲目已被替换。原始版本:%s,%s"
+
+#: src/widgets/playlist-micro.vala:158 src/widgets/views/playlist.vala:242
+#, c-format
+msgid "Owner: %s"
+msgstr "所有者:%s"
+
+#: src/widgets/playlist-row.vala:86
+#, c-format
+msgid "Track count: %s"
+msgstr "曲目计数:%s"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:89
+#: src/widgets/preferences/preferences-dialog.vala:135
+msgid "Delete cache files?"
+msgstr "删除缓存文件吗?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:90
+msgid "Move saved files?"
+msgstr "移动保存的文件吗?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:91
+#: src/widgets/preferences/preferences-dialog.vala:136
+msgid ""
+"All cache will be deleted. This doesn't affect on saved playlists or albums"
+msgstr "所有缓存将被删除。此操作不会影响已保存的播放列表或专辑"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:92
+msgid ""
+"All saved playlists and albums will be moved to cache files. This could take "
+"a while."
+msgstr "所有保存的播放列表和专辑将被移至缓存文件。此操作会花费一点时间。"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:130
+msgid "Deleting…"
+msgstr "正在删除…"
+
+#: src/widgets/save-stack.vala:55
+msgid "Image"
+msgstr "图像"
+
+#: src/widgets/save-stack.vala:59
+msgid "Track"
+msgstr "曲目"
+
+#: src/widgets/save-stack.vala:76
+#, c-format
+msgid "%s saving…"
+msgstr "正在保存 %s…"
+
+#: src/widgets/save-stack.vala:77
+#, c-format
+msgid "%s cached"
+msgstr "%s 已缓存"
+
+#: src/widgets/save-stack.vala:78
+#, c-format
+msgid "%s saved"
+msgstr "%s 已保存"
+
+#: src/widgets/sidebar/childs/player-queue.vala:67
+#, c-format
+msgid "Playlist \"%s\""
+msgstr "播放列表“%s”"
+
+#: src/widgets/sidebar/childs/player-queue.vala:71
+#, c-format
+msgid "Album \"%s\""
+msgstr "专辑“%s”"
+
+#: src/widgets/sidebar/childs/player-queue.vala:75
+#, c-format
+msgid "By search results \"%s\""
+msgstr "按搜索结果“%s”"
+
+#: src/widgets/sidebar/childs/player-queue.vala:79
+msgid "Track list"
+msgstr "曲目列表"
+
+#: src/widgets/sidebar/childs/track-info.vala:69
+msgid "Your music track"
+msgstr "您的音乐曲目"
+
+#: src/widgets/sidebar/childs/track-info.vala:85
+msgid "Music track"
+msgstr "音乐曲目"
+
+#: src/widgets/sidebar/childs/wave-settings.vala:40
+msgid "Wave settings"
+msgstr "波形设置"
+
+#: src/widgets/track-rows/base.vala:80 src/widgets/track-rows/default.vala:101
+msgid "Track is not available"
+msgstr "曲目不可用"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:79
+#, c-format
+msgid "%s '%s' saved successfully"
+msgstr "%s“%s”已成功保存"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:90
+#, c-format
+msgid "%s '%s' saving was stopped, due to network error"
+msgstr "%s“%s”已停止保存,网络出现错误"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:100
+#, c-format
+msgid "%s '%s' saving was aborted"
+msgstr "%s“%s”已中止保存"
+
+#. Translators: %s - content type (e.g. "Playlist")
+#: src/widgets/views/abstract-cachiable.vala:192
+#, c-format
+msgid "%s saving has started"
+msgstr "已开始保存%s"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:230
+#, c-format
+msgid "%s '%s' was moved from data to cache"
+msgstr "%s“%s”已从数据移至缓存"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:240
+#, c-format
+msgid "%s removing has started. Please do not close the app"
+msgstr "已开始移除%s。请不要关闭应用"
+
+#: src/widgets/views/cant-show.vala:38
+#, c-format
+msgid "Error %d"
+msgstr "错误 %d"
+
+#: src/widgets/views/cant-show.vala:42
+msgid "Can't load page"
+msgstr "无法加载页面"
+
+#: src/widgets/views/cant-show.vala:45
+msgid "Can't find desired content"
+msgstr "无法找到想要的内容"
+
+#: src/widgets/views/playlist.vala:85
+msgid "Delete playlist?"
+msgstr "删除播放列表吗?"
+
+#: src/widgets/views/playlist.vala:86
+#, c-format
+msgid "Playlist '%s' will be permanently deleted."
+msgstr "播放列表“%s”将被永久删除。"
+
+#: src/widgets/views/playlist.vala:105
+#, c-format
+msgid "Playlist '%s' was deleted"
+msgstr "播放列表“%s”已删除"
+
+#. Translators: %s is female person
+#: src/widgets/views/playlist.vala:248
+#, c-format
+msgctxt "female person"
+msgid "%s updated playlist %s"
+msgstr "%s 已更新播放列表 %s"
+
+#. Translators: %s is male person
+#: src/widgets/views/playlist.vala:252
+#, c-format
+msgctxt "male person"
+msgid "%s updated playlist %s"
+msgstr "%s 已更新播放列表 %s"
+
+#: src/widgets/views/playlist.vala:282
+#, c-format
+msgid "Can't change visibility of '%s'"
+msgstr "无法更改“%s”的可见性"
+
+#: src/widgets/views/playlist.vala:288
+#, c-format
+msgid "Playlist '%s' is public now"
+msgstr "播放列表“%s”现在是公开的"
+
+#: src/widgets/views/playlist.vala:291
+#, c-format
+msgid "Playlist '%s' is private now"
+msgstr "播放列表“%s”现在是私人的"
+
+#: src/window.vala:236
+#, c-format
+msgid "Window info message: %s"
+msgstr "窗口信息消息:%s"
diff --git a/src/about.vala b/src/about.vala
new file mode 100644
index 0000000..456c4b4
--- /dev/null
+++ b/src/about.vala
@@ -0,0 +1,117 @@
+/* Copyright 2023-2024 Vladimir Vaskov
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+namespace Cassette {
+
+ public Adw.AboutDialog build_about_dialog () {
+ const string ME = "Vladimir Vaskov https://gitlab.gnome.org/Rirusha";
+ const string TELEGRAM_CHAT = "https://t.me/CassetteGNOME_Discussion";
+ const string TELEGRAM_CHANNEL = "https://t.me/CassetteGNOME_Devlog";
+ const string TINKOFF_SUPPORT_LINK = "https://www.tinkoff.ru/cf/21GCxLuFuE9";
+ const string BOOSTY_SUPPORT_LINK = "https://boosty.to/rirusha/donate";
+
+ string[] developers = {
+ ME,
+ "KseBooka https://github.com/KseBooka"
+ };
+
+ string[] designers = {
+ ME
+ };
+
+ string[] artists = {
+ ME,
+ "Arseniy Nechkin ",
+ "NaumovSN",
+ };
+
+ string[] documenters = {
+ ME,
+ "Armatik https://github.com/Armatik",
+ "Fiersik https://github.com/fiersik",
+ "Mikazil https://github.com/Mikazil",
+ };
+
+ var about = new Adw.AboutDialog () {
+ application_name = Config.APP_NAME,
+ application_icon = Config.APP_ID_DYN,
+ developer_name = "Vladimir Vaskov",
+ version = Config.VERSION,
+ developers = developers,
+ designers = designers,
+ artists = artists,
+ documenters = documenters,
+ // Translators: NAME /n NAME
+ translator_credits = _("translator-credits"),
+ license_type = Gtk.License.GPL_3_0,
+ copyright = "© 2023-2024 Vladimir Vaskov",
+ support_url = TELEGRAM_CHAT,
+ issue_url = Config.BUGTRACKER,
+ release_notes_version = Config.VERSION
+ };
+
+ about.add_link (_("Telegram channel"), TELEGRAM_CHANNEL);
+ about.add_link (_("Financial support (Tinkoff)"), TINKOFF_SUPPORT_LINK);
+ about.add_link (_("Financial support (Boosty)"), BOOSTY_SUPPORT_LINK);
+
+ // Please keep alphabetical
+ about.add_acknowledgement_section (_("Sponsors"), {
+ "Alex Gluck",
+ "Amper Shiz",
+ "Anton P.",
+ "AveryanAlex",
+ "Avr_Iv",
+ "belovmv",
+ "dant4ick",
+ "Dmitry M.",
+ "Do6pblu_Jyk",
+ "eugene_t",
+ "Fiersik",
+ "Fissium",
+ "gen1s",
+ "InDevOne",
+ "IQQator",
+ "Ivan A.",
+ "katze_942",
+ "khaustovdn",
+ "krylov_alexandr",
+ "kvadrozorro",
+ "Mikazil E.",
+ "Mikazil",
+ "Mikhail Postnikov",
+ "Nikolai M.",
+ "Oleg Shchavelev",
+ "Pavel T.",
+ "Petr Chelpanov",
+ "Roman Aysin",
+ "Semen Fomchenkov",
+ "Sergey G.",
+ "Sergey P.",
+ "Sergey S.",
+ "Shakhrutdin Z.",
+ "Spp595",
+ "Tamahome",
+ "Toxblh",
+ "Vasily Biryukov",
+ "werlock",
+ "Zellrus",
+ });
+
+ return about;
+ }
+}
diff --git a/src/application.vala b/src/application.vala
index 5984f37..e88b185 100644
--- a/src/application.vala
+++ b/src/application.vala
@@ -1,6 +1,4 @@
-/* application.vala
- *
- * Copyright 2023 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,12 +11,12 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
-using CassetteClient;
+using Cassette.Client;
namespace Cassette {
@@ -26,11 +24,13 @@ namespace Cassette {
static Authenticator authenticator;
public static Application application;
- public static CassetteClient.Cachier.Cachier cachier;
- public static CassetteClient.Cachier.Storager storager;
- public static CassetteClient.Threader threader;
- public static CassetteClient.YaMTalker yam_talker;
- public static CassetteClient.Player.Player player;
+ public static Cassette.Client.Cachier.Cachier cachier;
+ public static Cassette.Client.Cachier.Storager storager;
+ public static Cassette.Client.Threader threader;
+ public static Cassette.Client.YaMTalker yam_talker;
+ public static Cassette.Client.Player.Player player;
+
+ public static Settings settings;
public enum ApplicationState {
BEGIN,
@@ -39,9 +39,31 @@ namespace Cassette {
OFFLINE
}
- // Класс приложения
public class Application : Adw.Application {
+ const ActionEntry[] ACTION_ENTRIES = {
+ { "quit", quit },
+ { "log-out", on_log_out_action },
+ { "force-log-out", on_force_log_out_action },
+ { "play-pause", on_play_pause_action },
+ { "next", on_next_action },
+ { "prev", on_prev_action },
+ { "prev-force", on_prev_force_action },
+ { "change-shuffle", on_change_shuffle_action },
+ { "change-repeat", on_change_repeat_action },
+ { "share-current-track", on_share_current_track_action},
+ { "parse-url", on_parse_url_action },
+ { "open-account", on_open_account_action },
+ { "open-plus", on_open_plus_action },
+ { "get-plus", on_get_plus_action },
+ { "mute", on_mute_action },
+ };
+
+ const OptionEntry[] OPTION_ENTRIES = {
+ { "version", 'v', 0, OptionArg.NONE, null, N_("Print version information and exit"), null },
+ { null }
+ };
+
ApplicationState _application_state;
public ApplicationState application_state {
get {
@@ -53,60 +75,56 @@ namespace Cassette {
}
var old_state = _application_state;
-
_application_state = value;
- // Don't write "Connection restored" after auth
- if (old_state != ApplicationState.BEGIN) {
- application_state_changed (_application_state);
- }
+ application_state_changed (_application_state, old_state);
}
}
- public bool is_mobile { get; private set; default = false; }
+ public signal void application_state_changed (
+ ApplicationState new_state,
+ ApplicationState old_state
+ );
- const string APP_NAME = "Cassette";
- const string RIRUSHA = "Rirusha ";
- const string TELEGRAM_CHAT = "https://t.me/CassetteGNOME_Discussion";
- const string TELEGRAM_CHANNEL = "https://t.me/CassetteGNOME_Devlog";
- const string ISSUE_LINK = "https://github.com/Rirusha/Cassette/issues/new";
+ public Window? main_window { get; private set; default = null; }
- public signal void application_state_changed (ApplicationState new_state);
-
- public MainWindow main_window = null;
+ uint now_playing_t = 0;
public bool is_devel {
get {
- return Config.POSTFIX == ".Devel";
+ return Config.IS_DEVEL;
}
}
public Application () {
Object (
- application_id: Config.APP_ID,
- resource_base_path: "/com/github/Rirusha/Cassette/"
+ application_id: Config.APP_ID_DYN,
+ resource_base_path: "/space/rirusha/Cassette/",
+ flags: ApplicationFlags.DEFAULT_FLAGS | ApplicationFlags.HANDLES_OPEN
);
}
construct {
application = this;
- CassetteClient.init ("io.github.Rirusha.Cassette", is_devel);
+ settings = new Settings ("space.rirusha.Cassette.application");
- CassetteClient.Mpris.mpris.quit_triggered.connect (() => {
+ Cassette.Client.init (is_devel);
+
+ Cassette.Client.Mpris.mpris.quit_triggered.connect (() => {
quit ();
});
- CassetteClient.Mpris.mpris.raise_triggered.connect (() => {
+ Cassette.Client.Mpris.mpris.raise_triggered.connect (() => {
main_window.present ();
});
// Shortcuts
- cachier = CassetteClient.cachier;
- storager = CassetteClient.storager;
- threader = CassetteClient.threader;
+ cachier = Cassette.Client.cachier;
+ storager = Cassette.Client.storager;
+ threader = Cassette.Client.threader;
authenticator = new Authenticator ();
- yam_talker = CassetteClient.yam_talker;
- player = CassetteClient.player;
+ yam_talker = Cassette.Client.yam_talker;
+ player = Cassette.Client.player;
yam_talker.connection_established.connect (() => {
application_state = ApplicationState.ONLINE;
@@ -115,41 +133,84 @@ namespace Cassette {
application_state = ApplicationState.OFFLINE;
});
- _application_state = (ApplicationState) storager.settings.get_enum ("application-state");
+ player.current_track_finish_loading.connect (show_now_playing_notif);
- storager.settings.bind ("application-state", this, "application-state", SettingsBindFlags.DEFAULT);
+ _application_state = (ApplicationState) settings.get_enum ("application-state");
- ActionEntry[] action_entries = {
- { "about", on_about_action },
- { "preferences", on_preferences_action },
- { "quit", quit },
- { "log-out", on_log_out },
- { "play-pause", on_play_pause },
- { "next", on_next },
- { "prev", on_prev },
- { "change-shuffle", on_shuffle },
- { "change-repeat", on_repeat },
- { "share-current-track", on_share_current_track}
- };
- add_action_entries (action_entries, this);
+ settings.bind ("application-state", this, "application-state", SettingsBindFlags.DEFAULT);
+
+ application.application_state_changed.connect ((new_state, old_state) => {
+ switch (new_state) {
+ case ApplicationState.ONLINE:
+ if (old_state == ApplicationState.OFFLINE) {
+ show_message (_("Connection restored"));
+ }
+ main_window?.set_online ();
+ break;
+
+ case ApplicationState.OFFLINE:
+ show_message (_("Connection problems"));
+ main_window?.set_offline ();
+ break;
+
+ default:
+ break;
+ }
+ });
+
+ add_main_option_entries (OPTION_ENTRIES);
+ set_option_context_parameter_string ("[YANDEX-MUSIC-URL]");
+
+ add_action_entries (ACTION_ENTRIES, this);
set_accels_for_action ("app.quit", { "q" });
set_accels_for_action ("app.play-pause", { "space" });
- set_accels_for_action ("app.prev", { "a" });
- set_accels_for_action ("app.next", { "d" });
+ set_accels_for_action ("app.prev", { "Left" });
+ set_accels_for_action ("app.next", { "Right" });
set_accels_for_action ("app.change-shuffle", { "s" });
set_accels_for_action ("app.change-repeat", { "r" });
set_accels_for_action ("app.share-current-track", { "c" });
+ set_accels_for_action ("app.parse-url", { "v" });
+ set_accels_for_action ("app.mute", { "m" });
+ }
+
+ protected override int handle_local_options (VariantDict options) {
+ if (options.contains ("version")) {
+ print ("%s %s\n", Config.APP_NAME, Config.VERSION);
+ return 0;
+ }
+
+ return -1;
+ }
+
+ protected override void open (File[] files, string hint) {
+ activate ();
+
+ if (application_state != ApplicationState.BEGIN && application_state != ApplicationState.LOCAL) {
+ parse_on_window_loaded.begin (files[0].get_uri ());
+ }
+ }
+
+ async void parse_on_window_loaded (string uri) {
+ ulong con_id;
+
+ if (!main_window.is_ready) {
+ con_id = main_window.notify["is-ready"].connect (() => {
+ Idle.add (parse_on_window_loaded.callback);
+ });
+
+ yield;
+
+ SignalHandler.disconnect (main_window, con_id);
+ }
+
+ parse_uri (uri);
}
public override void activate () {
base.activate ();
- if (active_window == null) {
- if (storager.settings.get_boolean ("force-mobile")) {
- is_mobile = true;
- }
-
- main_window = new MainWindow (this);
+ if (main_window == null) {
+ main_window = new Window (this);
authenticator.success.connect (main_window.load_default_views);
authenticator.local.connect (main_window.load_local_views);
@@ -158,23 +219,10 @@ namespace Cassette {
_application_state = ApplicationState.ONLINE;
}
- // main_window.show.connect (() => {
- // // Detection device "mobility"
- // // TODO: that also can work on notebooks with touch...
- // if (storager.settings.get_boolean ("force-mobile")) {
- // is_mobile = true;
-
- // } else {
- // var display = Gdk.Display.get_default ();
- // var seat = display?.get_default_seat ();
-
- // foreach (var device in seat?.get_devices (Gdk.SeatCapabilities.TOUCH)) {
- // is_mobile = true;
-
- // storager.settings.set_double ("volume", 100.0);
- // }
- // }
- // });
+ main_window.close_request.connect (() => {
+ main_window = null;
+ return false;
+ });
main_window.present ();
@@ -189,65 +237,66 @@ namespace Cassette {
}
}
- public void show_message (string message, bool is_notify = false) {
- main_window.show_message (message);
-
- if (is_notify) {
- var ntf = new Notification (APP_NAME);
- ntf.set_body (message);
- send_notification (null, ntf);
+ public void show_message (string message) {
+ if (main_window != null) {
+ if (main_window.is_active) {
+ main_window.show_toast (message);
+ return;
+ }
}
+
+ var ntf = new Notification (Config.APP_NAME);
+ ntf.set_body (message);
+ send_notification (null, ntf);
}
- void on_about_action () {
- string[] developers = {
- RIRUSHA
- };
- string[] designers = {
- RIRUSHA
- };
- string[] artists = {
- RIRUSHA,
- _("Arseniy Nechkin ")
- };
- string[] documenters = {
+ public void show_now_playing_notif (YaMAPI.Track track_info) {
+ if (!settings.get_boolean ("show-playing-track-notif")) {
+ return;
+ }
- };
+ if (main_window != null) {
+ if (main_window.is_active) {
+ return;
+ }
+ }
- var about = new Adw.AboutWindow () {
- transient_for = active_window,
- application_name = APP_NAME,
- application_icon = Config.APP_ID,
- developer_name = "Rirusha",
- version = Config.VERSION,
- developers = developers,
- designers = designers,
- artists = artists,
- documenters = documenters,
- // Translators: NAME /n NAME
- translator_credits = _("translator-credits"),
- license_type = Gtk.License.GPL_3_0,
- copyright = "© 2023 Rirusha",
- support_url = TELEGRAM_CHAT,
- issue_url = ISSUE_LINK,
- release_notes_version = Config.VERSION
- };
+ var ntf = new Notification (Config.APP_NAME);
- about.add_link (_("Telegram channel"), TELEGRAM_CHANNEL);
- about.add_link (_("Financial support"), "https://www.tinkoff.ru/cf/21GCxLuFuE9");
+ ntf.set_body ("%s%s - %s".printf (
+ track_info.title,
+ track_info.version != null ? @" $(track_info.version)" : "",
+ track_info.get_artists_names ()
+ ));
- about.add_acknowledgement_section ("Donaters", {
- "katze_942", "gen1s", "Semen Fomchenkov", "Oleg Shchavelev", "Fissium"
+ ntf.set_title (_("Playing now"));
+
+ ntf.add_button (_("Previous"), "app.prev-force");
+ ntf.add_button (_("Next"), "app.next");
+
+ ntf.set_icon (new ThemedIcon ("%s-symbolic".printf (Config.APP_ID_DYN)));
+
+ if (now_playing_t != 0) {
+ Source.remove (now_playing_t);
+ }
+
+ send_notification ("now-playing", ntf);
+
+ now_playing_t = Timeout.add_seconds_once (10, () => {
+ withdraw_notification ("now-playing");
+ now_playing_t = 0;
});
-
- about.present ();
}
- void on_log_out () {
+ void on_log_out_action () {
authenticator.log_out ();
}
- void on_play_pause () {
+ void on_force_log_out_action () {
+ authenticator.force_log_out ();
+ }
+
+ void on_play_pause_action () {
var text_entry = main_window.focus_widget as Gtk.Text;
if (text_entry != null) {
// Исправление ситуации, когда пробел нельзя вписать, так как клавиша забрана play-pause
@@ -257,42 +306,152 @@ namespace Cassette {
}
}
- void on_shuffle () {
+ void on_change_shuffle_action () {
roll_shuffle_mode ();
}
- void on_repeat () {
+ void on_change_repeat_action () {
roll_repeat_mode ();
}
- void on_next () {
- if (!player.is_loading) {
+ void on_next_action () {
+ if (player.can_go_next) {
player.next ();
}
}
- void on_prev () {
- if (!player.is_loading) {
+ void on_prev_action () {
+ if (player.can_go_prev) {
player.prev ();
}
}
- void on_preferences_action () {
- var pref_win = new PreferencesWindow () {
- transient_for = main_window,
- modal = true
- };
-
- pref_win.present ();
- pref_win.set_focus (null);
+ void on_prev_force_action () {
+ if (player.can_go_prev) {
+ player.prev (true);
+ }
}
- void on_share_current_track () {
- var current_track = player.get_current_track ();
+ public void show_no_plus_dialog () {
+ var dialog = new NoPlusDialog () {
+ log_out_button_visible = application_state != ApplicationState.BEGIN
+ };
+
+ dialog.closed.connect (() => {
+ if (application_state == ApplicationState.BEGIN) {
+ application.activate_action ("force-log-out", null);
+
+ } else {
+ application.activate_action ("quit", null);
+ }
+ });
+
+ dialog.present (main_window);
+ }
+
+ void on_share_current_track_action () {
+ var current_track = player.mode.get_current_track_info ();
if (current_track?.is_ugc == false) {
track_share (current_track);
+ } else {
+ show_message (_("Current track can not be copied to the clipboard"));
}
}
+
+ void parse_uri (string uri) {
+ string clear_uri = "";
+
+ if (uri.has_prefix ("https://music.yandex.ru/")) {
+ clear_uri = uri.replace ("https://music.yandex.ru/", "");
+
+ } else if (uri.has_prefix ("yandexmusic://")) {
+ clear_uri = uri.replace ("yandexmusic://", "");
+
+ } else {
+ Logger.warning (_("Can't parse clipboard content"));
+ return;
+ }
+
+ string[] parts = clear_uri.split ("/");
+
+ if (parts.length < 2) {
+ Logger.warning (_("Can't parse clipboard content"));
+ return;
+ }
+
+ // users 737063213
+ if (parts[0] == "users") {
+ string user_id = parts[1];
+
+ // playlists ~
+ if (parts[2] == "playlists") {
+ if (parts.length == 3) {
+ show_message (_("Users view not implemented yet"));
+ return;
+
+ // playlists 3
+ } else {
+ string kind = parts[3];
+
+ main_window?.current_view.add_view (new PlaylistView (user_id, kind));
+ }
+ }
+
+ // album 4545465
+ } else if (parts[0] == "album") {
+ // string album_id = parts[1];
+
+ if (parts.length == 2) {
+ show_message (_("Albums view not implemented yet"));
+
+ // album 87894564 track 54654
+ } else {
+ string track_id;
+
+ if ("?" in parts[3]) {
+ track_id = parts[3].split ("?")[0];
+ } else {
+ track_id = parts[3];
+ }
+
+ show_track_by_id.begin (track_id);
+
+ show_message (_("Albums view not implemented yet"));
+ }
+ }
+ }
+
+ void on_parse_url_action () {
+ activate ();
+
+ Gdk.Display? display = Gdk.Display.get_default ();
+ Gdk.Clipboard clipboard = display.get_clipboard ();
+
+ clipboard.read_text_async.begin (null, (obj, res) => {
+ try {
+ parse_uri (clipboard.read_text_async.end (res));
+
+ } catch (Error e) {
+ show_message (_("Can't parse clipboard content"));
+ }
+ });
+ }
+
+ void on_open_account_action () {
+ new Gtk.UriLauncher ("https://id.yandex.ru/").launch.begin (null, null);
+ }
+
+ void on_open_plus_action () {
+ new Gtk.UriLauncher ("https://plus.yandex.ru/").launch.begin (null, null);
+ }
+
+ void on_get_plus_action () {
+ new Gtk.UriLauncher ("https://plus.yandex.ru/getplus/").launch.begin (null, null);
+ }
+
+ void on_mute_action () {
+ player.mute = !player.mute;
+ }
}
}
diff --git a/src/authenticator.vala b/src/authenticator.vala
index 2045379..435a8a8 100644
--- a/src/authenticator.vala
+++ b/src/authenticator.vala
@@ -1,6 +1,4 @@
-/* authenticator.vala
- *
- * Copyright 2023 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,13 +11,13 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
-using CassetteClient;
+using Cassette.Client;
namespace Cassette {
@@ -45,8 +43,7 @@ namespace Cassette {
}
public void log_out () {
- var dialog = new Adw.MessageDialog (
- application.main_window,
+ var dialog = new Adw.AlertDialog (
_("Log out?"),
_("You will need to log in again to use the app")
);
@@ -61,15 +58,21 @@ namespace Cassette {
dialog.response.connect ((dialog, response) => {
if (response == "logout") {
- move_cache ();
- application.application_state = ApplicationState.BEGIN;
+ force_log_out ();
}
});
- dialog.present ();
+ dialog.present (application.main_window);
}
- void move_cache () {
+ public void force_log_out () {
+ move_user_cache.begin (() => {
+ application.application_state = ApplicationState.BEGIN;
+ application.quit ();
+ });
+ }
+
+ async void move_user_cache () {
var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 16) {
margin_top = 16,
margin_bottom = 16,
@@ -99,8 +102,7 @@ namespace Cassette {
loading_win.present ();
spinner.start ();
- // TODO: Let user choose save content ot not
- storager.clear_user.begin (true, application.quit);
+ yield storager.clear_user (true, false);
}
public void log_in () {
@@ -113,14 +115,21 @@ namespace Cassette {
public async void init_client_async () {
bool should_auth = false;
+ bool cant_use = false;
threader.add (() => {
try {
yam_talker.init_if_not ();
+
} catch (BadStatusCodeError e) {
Logger.warning ("Bad status code while trying init client. Error message: %s".printf (e.message));
should_auth = true;
+
+ } catch (CantUseError e) {
+ Logger.warning ("User hasn't Plus Subscription. Error message: %s".printf (e.message));
+
+ cant_use = true;
}
Idle.add (init_client_async.callback);
@@ -128,8 +137,14 @@ namespace Cassette {
yield;
+ if (cant_use) {
+ application.show_no_plus_dialog ();
+ return;
+ }
+
if (should_auth) {
start_auth ();
+
} else {
success ();
}
@@ -141,16 +156,14 @@ namespace Cassette {
storager.remove_file (storager.cookies_file);
}
- var begin_window = new BeginWindow () {
- transient_for = application.main_window
- };
+ var begin_window = new BeginDialog ();
begin_window.begin_view.local_choosed.connect (() => {
local ();
});
begin_window.begin_view.online_complete.connect (init_client_async);
- begin_window.present ();
+ begin_window.present (application.main_window);
}
}
}
diff --git a/src/client/api/difference_builder.vala b/src/client/api/difference-builder.vala
similarity index 95%
rename from src/client/api/difference_builder.vala
rename to src/client/api/difference-builder.vala
index cfb9ce4..c5b7a82 100644
--- a/src/client/api/difference_builder.vala
+++ b/src/client/api/difference-builder.vala
@@ -1,6 +1,4 @@
-/* difference_builder.vala
- *
- * Copyright 2023 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,14 +11,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
using Gee;
-namespace CassetteClient.YaMAPI {
+namespace Cassette.Client.YaMAPI {
public class InsertOperation: Object {
diff --git a/src/client/api/objects/account/about.vala b/src/client/api/objects/account/about.vala
new file mode 100644
index 0000000..3a56e47
--- /dev/null
+++ b/src/client/api/objects/account/about.vala
@@ -0,0 +1,132 @@
+/* Copyright 2023-2024 Vladimir Vaskov
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+
+namespace Cassette.Client.YaMAPI.Account {
+
+ namespace AvatarSize {
+ const string ISLANDS_SMALL = "islands-small";
+ const string ISLANDS_34 = "islands-34";
+ const string ISLANDS_MIDDLE = "islands-middle";
+ const string ISLANDS_50 = "islands-50";
+ const string ISLANDS_RETINA_SMALL = "islands-retina-small";
+ const string ISLANDS_68 = "islands-68";
+ const string ISLANDS_75 = "islands-75";
+ const string ISLANDS_RETINA_MIDDLE = "islands-retina-middle";
+ const string ISLANDS_RETINA_50 = "islands-retina-50";
+ const string ISLANDS_200 = "islands-200";
+ }
+
+ /**
+ * Датакласс с информацией об аккаунте
+ */
+ public class About : YaMObject, HasCover, HasID {
+
+ public string oid {
+ owned get {
+ return uid;
+ }
+ }
+
+ /**
+ * Id пользователя
+ */
+ public string uid { get; set; }
+
+ /**
+ * Имеет ли пользователь активную подписку Я.Плюс
+ */
+ public bool has_plus { get; set; default = false; }
+
+ /**
+ * Логин пользователя
+ */
+ public string login { get; set; default = ""; }
+
+ /**
+ * Id аватара пользователя
+ */
+ public string? avatar_id { get; set; }
+
+ /**
+ *
+ */
+ public string public_id { get; set; }
+
+ /**
+ * Публичное имя пользователя
+ */
+ public string public_name { get; set; default = ""; }
+
+ /**
+ * Является ли аккаунт детским
+ */
+ public bool is_child { get; set; }
+
+ public static string num_size_to_avatar_size (int size) {
+ switch (size) {
+ case 28:
+ return AvatarSize.ISLANDS_SMALL;
+ case 34:
+ return AvatarSize.ISLANDS_34;
+ case 42:
+ return AvatarSize.ISLANDS_MIDDLE;
+ case 50:
+ return AvatarSize.ISLANDS_50;
+ case 56:
+ return AvatarSize.ISLANDS_RETINA_SMALL;
+ case 68:
+ return AvatarSize.ISLANDS_68;
+ case 75:
+ return AvatarSize.ISLANDS_75;
+ case 84:
+ return AvatarSize.ISLANDS_RETINA_MIDDLE;
+ case 100:
+ return AvatarSize.ISLANDS_RETINA_50;
+ case 200:
+ return AvatarSize.ISLANDS_200;
+ default:
+ assert_not_reached ();
+ }
+ }
+
+ public string? get_avatar_uri (int size = 200) {
+ if (avatar_id == null) {
+ return null;
+ }
+
+ var avatar_size = num_size_to_avatar_size (size);
+
+ return "https://avatars.yandex.net/get-yapic/%s/%s".printf (
+ avatar_id,
+ avatar_size
+ );
+ }
+
+ public Gee.ArrayList get_cover_items_by_size (int size) {
+ var uris = new Gee.ArrayList ();
+
+ string avatar_uri = get_avatar_uri (size);
+ if (avatar_uri != null) {
+ uris.add (avatar_uri);
+ }
+
+ return uris;
+ }
+ }
+}
diff --git a/src/client/api/objects/account_info/account.vala b/src/client/api/objects/account_info/account.vala
deleted file mode 100644
index 5959b06..0000000
--- a/src/client/api/objects/account_info/account.vala
+++ /dev/null
@@ -1,49 +0,0 @@
-/* account.vala
- *
- * Copyright 2023 Rirusha
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
-
-using Gee;
-
-namespace CassetteClient.YaMAPI {
- public class Account : YaMObject {
-
- public string uid { get; set; }
- public string? login { get; set; }
- public int region { get; set; }
- public string? full_name { get; set; }
- public string? second_name { get; set; }
- public string? first_name { get; set; }
- public string? display_name { get; set; }
- public string? birthday { get; set; }
- public bool service_available { get; set; }
- public ArrayList passport_phones { get; set; default = new ArrayList (); }
- public bool child { get; set; }
-
- public Account () {
- Object ();
- }
-
- public string get_user_name () {
- if (display_name != null) {
- return display_name;
- }
- return full_name;
- }
- }
-}
diff --git a/src/client/api/objects/account_info/account_info.vala b/src/client/api/objects/account_info/account_info.vala
deleted file mode 100644
index d9461f6..0000000
--- a/src/client/api/objects/account_info/account_info.vala
+++ /dev/null
@@ -1,59 +0,0 @@
-/* account_info.vala
- *
- * Copyright 2023 Rirusha
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Geneqral Public License
- * along with this program. If not, see .
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
-
-using Gee;
-
-namespace CassetteClient.YaMAPI {
-
- public class AccountInfo : YaMObject, HasID, HasCover {
-
- public string? oid {
- owned get {
- return account.uid;
- }
- }
-
- public Account account { get; set; default = new Account (); }
- public Permissions permissions { get; set; }
- public bool subeditor { get; set; }
- public int subeditor_level { get; set; }
- public bool pretrial_active { get; set; }
- public MasterHub masterhub { get; set; }
- public Plus plus { get; set; default = new Plus (); }
- public ArrayList has_options { get; set; default = new ArrayList (); }
- public string? default_email { get; set; }
- public AvatarInfo avatar_info { get; set; }
-
- public AccountInfo () {
- Object ();
- }
-
- public Gee.ArrayList get_cover_items_by_size (int size) {
- var uris = new Gee.ArrayList ();
-
- string avatar_uri = avatar_info.get_avatar_uri (size);
- if (avatar_info != null) {
- uris.add (avatar_uri);
- }
-
- return uris;
- }
- }
-}
diff --git a/src/client/api/objects/account_info/avatar_info.vala b/src/client/api/objects/account_info/avatar_info.vala
deleted file mode 100644
index ea4e509..0000000
--- a/src/client/api/objects/account_info/avatar_info.vala
+++ /dev/null
@@ -1,57 +0,0 @@
-/* account_info.vala
- *
- * Copyright 2023 Rirusha
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
-
-namespace CassetteClient.YaMAPI {
- public enum AvatarSize {
- ISLANDS_SMALL = 28,
- ISLANDS_34 = 34,
- ISLANDS_MIDDLE = 42,
- ISLANDS_50 = 50,
- ISLANDS_RETINA_SMALL = 56,
- ISLANDS_68 = 68,
- ISLANDS_75 = 75,
- ISLANDS_RETINA_MIDDLE = 84,
- ISLANDS_RETINA_50 = 100,
- ISLANDS_200 = 200
- }
-
- public class AvatarInfo : YaMObject {
-
- public string? default_avatar_id { get; set; }
- public bool is_avatar_empty { get; set; }
-
- public AvatarInfo () {
- Object ();
- }
-
- public string? get_avatar_uri (int size = 200) {
- if (is_avatar_empty) {
- return null;
- }
-
- var asize = (AvatarSize) size;
-
- // CASSETTE_CLIENT_YA_MAPI_AVATAR_SIZE_ISLANDS_200 -> islands-200
- string size_str = snake2kebab (asize.to_string ()[36:].down ());
-
- return @"https://avatars.yandex.net/get-yapic/$default_avatar_id/$size_str";
- }
- }
-}
diff --git a/src/client/api/objects/account_info/plus.vala b/src/client/api/objects/account_info/plus.vala
deleted file mode 100644
index 5678012..0000000
--- a/src/client/api/objects/account_info/plus.vala
+++ /dev/null
@@ -1,31 +0,0 @@
-/* plus.vala
- *
- * Copyright 2023 Rirusha
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
-
- namespace CassetteClient.YaMAPI {
- public class Plus : YaMObject {
-
- public bool has_plus { get; set; default = false; }
- public bool is_tutorial_completed { get; set; }
-
- public Plus () {
- Object ();
- }
- }
-}
diff --git a/src/client/api/objects/additional_info/lyrics_major.vala b/src/client/api/objects/additional-info/lyrics-major.vala
similarity index 84%
rename from src/client/api/objects/additional_info/lyrics_major.vala
rename to src/client/api/objects/additional-info/lyrics-major.vala
index 8ae5113..9baccb6 100644
--- a/src/client/api/objects/additional_info/lyrics_major.vala
+++ b/src/client/api/objects/additional-info/lyrics-major.vala
@@ -1,6 +1,4 @@
-/* lyrics_major.vala
- *
- * Copyright 2023 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,12 +11,12 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
-namespace CassetteClient.YaMAPI {
+namespace Cassette.Client.YaMAPI {
public class LyricsMajor : YaMObject {
public string name { get; set; }
diff --git a/src/client/api/objects/additional_info/lyrics.vala b/src/client/api/objects/additional-info/lyrics.vala
similarity index 89%
rename from src/client/api/objects/additional_info/lyrics.vala
rename to src/client/api/objects/additional-info/lyrics.vala
index 92765f2..a20a668 100644
--- a/src/client/api/objects/additional_info/lyrics.vala
+++ b/src/client/api/objects/additional-info/lyrics.vala
@@ -1,6 +1,4 @@
-/* lyrics.vala
- *
- * Copyright 2023 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,14 +11,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
using Gee;
-namespace CassetteClient.YaMAPI {
+namespace Cassette.Client.YaMAPI {
public class Lyrics : YaMObject {
public string download_url { get; set; }
diff --git a/src/client/api/objects/additional_info/similar_tracks.vala b/src/client/api/objects/additional-info/similar-tracks.vala
similarity index 64%
rename from src/client/api/objects/additional_info/similar_tracks.vala
rename to src/client/api/objects/additional-info/similar-tracks.vala
index 83c7b76..8d03e6a 100644
--- a/src/client/api/objects/additional_info/similar_tracks.vala
+++ b/src/client/api/objects/additional-info/similar-tracks.vala
@@ -1,6 +1,4 @@
-/* similar_tracks.vala
- *
- * Copyright 2023 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,19 +11,19 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
using Gee;
-namespace CassetteClient.YaMAPI {
+namespace Cassette.Client.YaMAPI {
public class SimilarTracks : YaMObject, HasID, HasTrackList {
- public string? oid {
+ public string oid {
owned get {
- return null;
+ return "";
}
}
@@ -36,11 +34,20 @@ namespace CassetteClient.YaMAPI {
Object ();
}
- public ArrayList