From 10a09d733c7400283f0439500ce7412ead17fd31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Binos?= Date: Wed, 11 Jun 2025 20:37:06 +0200 Subject: [PATCH 01/12] Translated using Weblate (French) Currently translated at 100.0% (173 of 173 strings) Translation: ytify/web Translate-URL: https://hosted.weblate.org/projects/ytify/web/fr/ --- src/locales/fr.json | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/locales/fr.json b/src/locales/fr.json index a521028ef..79003a6be 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -65,11 +65,11 @@ "list_imported": "$ a été importé dans vos collections.", "list_set_title": "Définir le titre", "list_clear_all": "Tout effacer", - "list_remove": "Supprimer des éléments", + "list_remove": "Basculer Supprimer", "list_delete": "Supprimer la collection", "list_rename": "Renommer la Collection", "list_share": "Partager la Collection", - "list_radio": "Radio", + "list_radio": "Démarrer la radio", "list_sort": "Trier manuellement", "list_info": "Les items de vos listes de lecture, de vos postes et de vos collections s'affichent ici", "list_prompt_delete": "Êtes-vous sûr de vouloir supprimer la collection $ ?", @@ -107,7 +107,7 @@ "settings_always_proxy_streams": "Toujours proxy les flux", "settings_stable_volume": "Préférer un volume stable", "settings_hls": "Diffusion HTTP en direct", - "settings_library": "", + "settings_library": "Bibliothèque", "settings_set_as_default_tab": "Définir comme onglet par défaut", "settings_library_sync": "Synchronisation cloud", "settings_store_discoveries": "Stocker les découvertes", @@ -166,5 +166,12 @@ "settings_watchmode": "Mode vidéo", "upcoming_filter_ytm": "Filtrer YTM", "upcoming_filter_lt10": "Filtrer < 10:00", - "settings_pwa_watch": "Regarder" + "settings_pwa_watch": "Regarder", + "settings_reload": "Recharger la page pour appliquer les modifications", + "settings_enforce_piped": "Appliquer le canal de lecture", + "library_imported": "La bibliothèque a été importée avec succès", + "list_sort_title": "Trier par Titre A↔Z", + "list_sort_author": "Trier par Auteur A↔Z", + "settings_audio_quality": "Qualité Audio", + "settings_prefetch": "Prélecture de la file d'attente" } From a47c2bfe5d902cccbe9c6b224487534b57cbbe02 Mon Sep 17 00:00:00 2001 From: Muhammed Kayar Date: Sun, 29 Jun 2025 13:00:01 +0200 Subject: [PATCH 02/12] Added translation using Weblate (Turkish) --- src/locales/tr.json | 175 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 src/locales/tr.json diff --git a/src/locales/tr.json b/src/locales/tr.json new file mode 100644 index 000000000..3593f1ae3 --- /dev/null +++ b/src/locales/tr.json @@ -0,0 +1,175 @@ +{ + "nav_search": "", + "nav_library": "", + "nav_settings": "", + "nav_upcoming": "", + "player_audiostreams_setup": "", + "player_audiostreams_insert": "", + "player_livestreams_hls": "", + "player_audiostreams_null": "", + "player_now_playing": "", + "player_channel": "", + "player_volume": "", + "player_like": "", + "player_loop": "", + "player_more": "", + "player_play_button": "", + "player_play_previous": "", + "player_seek_backward": "", + "player_seek_forward": "", + "player_play_next": "", + "upcoming_clear": "", + "upcoming_shuffle": "", + "upcoming_remove": "", + "upcoming_filter_lt10": "", + "upcoming_filter_ytm": "", + "upcoming_enqueue_related": "", + "upcoming_allow_duplicates": "", + "upcoming_info": "", + "upcoming_change": "", + "fetchlist_url_null": "", + "fetchlist_error": "", + "fetchlist_nonexistent": "", + "search_placeholder": "", + "search_filter_all": "", + "search_filter_videos": "", + "search_filter_channels": "", + "search_filter_playlists": "", + "search_filter_music_songs": "", + "search_filter_music_artists": "", + "search_filter_music_videos": "", + "search_filter_music_albums": "", + "search_filter_music_playlists": "", + "search_filter_sort_by": "", + "search_filter_date": "", + "search_filter_views": "", + "library_discover": "", + "library_history": "", + "library_favorites": "", + "library_listen_later": "", + "library_featured": "", + "library_collections": "", + "library_playlists": "", + "library_albums": "", + "library_artists": "", + "library_channels": "", + "library_feed": "", + "library_for_you": "", + "library_import": "", + "library_export": "", + "library_clean": "", + "library_clean_prompt": "", + "library_import_prompt": "", + "library_imported": "", + "list_play": "", + "list_enqueue": "", + "list_import": "", + "list_imported": "", + "list_set_title": "", + "list_clear_all": "", + "list_remove": "", + "list_delete": "", + "list_rename": "", + "list_share": "", + "list_radio": "", + "list_sort": "", + "list_sort_title": "", + "list_sort_author": "", + "list_info": "", + "list_prompt_delete": "", + "list_prompt_clear": "", + "list_prompt_rename": "", + "actions_menu_play_next": "", + "actions_menu_enqueue": "", + "actions_menu_start_radio": "", + "actions_menu_download": "", + "actions_menu_watch_on": "", + "actions_menu_view_artist": "", + "actions_menu_view_lyrics": "", + "actions_menu_view_channel": "", + "actions_menu_debug_info": "", + "collection_selector_add_to": "", + "collection_selector_create_new": "", + "collection_selector_favorites": "", + "collection_selector_listen_later": "", + "settings_custom_instance": "", + "settings_enter_piped_api": "", + "settings_enter_invidious_api": "", + "settings_language": "", + "settings_links_host": "", + "settings_download_format": "", + "settings_pwa_share_action": "", + "settings_pwa_play": "", + "settings_pwa_watch": "", + "settings_pwa_download": "", + "settings_pwa_always_ask": "", + "settings_search": "", + "settings_set_songs_as_default_filter": "", + "settings_display_suggestions": "", + "settings_playback": "", + "settings_audio_quality": "", + "settings_prefetch": "", + "settings_codec_preference": "", + "settings_enforce_piped": "", + "settings_always_proxy_streams": "", + "settings_stable_volume": "", + "settings_hls": "", + "settings_watchmode": "", + "settings_library": "", + "settings_set_as_default_tab": "", + "settings_library_sync": "", + "settings_store_discoveries": "", + "settings_clear_discoveries": "", + "settings_store_history": "", + "settings_clear_history": "", + "settings_import_from_piped": "", + "settings_interface": "", + "settings_load_images": "", + "settings_roundness": "", + "settings_roundness_none": "", + "settings_roundness_lighter": "", + "settings_roundness_light": "", + "settings_roundness_heavy": "", + "settings_roundness_heavier": "", + "settings_use_custom_color": "", + "settings_custom_color_prompt": "", + "settings_theming_scheme": "", + "settings_theming_scheme_dynamic": "", + "settings_theming_scheme_system": "", + "settings_theming_scheme_light": "", + "settings_theming_scheme_dark": "", + "settings_theming_scheme_hc": "", + "settings_theming_scheme_hc_system": "", + "settings_theming_scheme_white": "", + "settings_theming_scheme_black": "", + "settings_fullscreen": "", + "settings_parental_controls": "", + "settings_pin_toggle": "", + "settings_pin_message": "", + "settings_pin_prompt": "", + "settings_pin_incorrect": "", + "settings_feedback_placeholder": "", + "settings_feedback_submit": "", + "settings_changelog": "", + "settings_clear_cache": "", + "settings_restore": "", + "settings_export": "", + "settings_import": "", + "settings_reload": "", + "piped_enter_auth": "", + "piped_enter_username": "", + "piped_enter_password": "", + "piped_success_auth": "", + "piped_failed_auth": "", + "piped_success_imported": "", + "piped_failed_imported": "", + "piped_success_fetched": "", + "piped_failed_find": "", + "piped_failed_login": "", + "piped_failed_token": "", + "piped_success_logged": "", + "updater_changelog_full": "", + "updater_update": "", + "updater_later": "", + "pwa_share_prompt": "" +} From e4296b46c5c9284ca649f87c57a28a3da02eda61 Mon Sep 17 00:00:00 2001 From: Muhammed Kayar Date: Sun, 29 Jun 2025 13:01:09 +0200 Subject: [PATCH 03/12] Translated using Weblate (Turkish) Currently translated at 39.3% (68 of 173 strings) Translation: ytify/web Translate-URL: https://hosted.weblate.org/projects/ytify/web/tr/ --- src/locales/tr.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/locales/tr.json b/src/locales/tr.json index 3593f1ae3..5549d8190 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -1,9 +1,9 @@ { - "nav_search": "", - "nav_library": "", - "nav_settings": "", - "nav_upcoming": "", - "player_audiostreams_setup": "", + "nav_search": "Ara", + "nav_library": "Kütüphane", + "nav_settings": "Ayarlar", + "nav_upcoming": "Yakında", + "player_audiostreams_setup": "AudioStreams'i Kur", "player_audiostreams_insert": "", "player_livestreams_hls": "", "player_audiostreams_null": "", From 79b2a95b4bc2a1e116f3ece02fc296a2acc4c61f Mon Sep 17 00:00:00 2001 From: Muhammed Kayar Date: Sun, 29 Jun 2025 13:12:54 +0200 Subject: [PATCH 04/12] Translated using Weblate (Turkish) Currently translated at 39.3% (68 of 173 strings) Translation: ytify/web Translate-URL: https://hosted.weblate.org/projects/ytify/web/tr/ --- src/locales/tr.json | 128 ++++++++++++++++++++++---------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/src/locales/tr.json b/src/locales/tr.json index 5549d8190..3cdb01c84 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -3,70 +3,70 @@ "nav_library": "Kütüphane", "nav_settings": "Ayarlar", "nav_upcoming": "Yakında", - "player_audiostreams_setup": "AudioStreams'i Kur", - "player_audiostreams_insert": "", - "player_livestreams_hls": "", - "player_audiostreams_null": "", - "player_now_playing": "", - "player_channel": "", - "player_volume": "", - "player_like": "", - "player_loop": "", - "player_more": "", - "player_play_button": "", - "player_play_previous": "", - "player_seek_backward": "", - "player_seek_forward": "", - "player_play_next": "", - "upcoming_clear": "", - "upcoming_shuffle": "", - "upcoming_remove": "", - "upcoming_filter_lt10": "", - "upcoming_filter_ytm": "", - "upcoming_enqueue_related": "", - "upcoming_allow_duplicates": "", - "upcoming_info": "", - "upcoming_change": "", - "fetchlist_url_null": "", - "fetchlist_error": "", - "fetchlist_nonexistent": "", - "search_placeholder": "", - "search_filter_all": "", - "search_filter_videos": "", - "search_filter_channels": "", - "search_filter_playlists": "", - "search_filter_music_songs": "", - "search_filter_music_artists": "", - "search_filter_music_videos": "", - "search_filter_music_albums": "", - "search_filter_music_playlists": "", - "search_filter_sort_by": "", - "search_filter_date": "", - "search_filter_views": "", - "library_discover": "", - "library_history": "", - "library_favorites": "", - "library_listen_later": "", - "library_featured": "", - "library_collections": "", - "library_playlists": "", - "library_albums": "", - "library_artists": "", - "library_channels": "", - "library_feed": "", - "library_for_you": "", - "library_import": "", - "library_export": "", - "library_clean": "", - "library_clean_prompt": "", - "library_import_prompt": "", - "library_imported": "", - "list_play": "", - "list_enqueue": "", - "list_import": "", - "list_imported": "", - "list_set_title": "", - "list_clear_all": "", + "player_audiostreams_setup": "AudioStreams'i Kur…", + "player_audiostreams_insert": "Ses kaynağı oynatıcıya ekleniyor…", + "player_livestreams_hls": "Canlı Yayınları dinlemek için HLS'yi açın!", + "player_audiostreams_null": "Ses Akışı Bulunamadı", + "player_now_playing": "Şimdi Çalınıyor", + "player_channel": "Kanal", + "player_volume": "Ses", + "player_like": "Beğen", + "player_loop": "Tekrarla", + "player_more": "Daha Fazla", + "player_play_button": "Oynat", + "player_play_previous": "Öncekini oynat", + "player_seek_backward": "Geride ara", + "player_seek_forward": "İleride ara", + "player_play_next": "Sonrakini Çal", + "upcoming_clear": "Kuyruğu Temizle", + "upcoming_shuffle": "Karıştır", + "upcoming_remove": "Kaldır", + "upcoming_filter_lt10": "Filtrele < 10:00", + "upcoming_filter_ytm": "YTM'ye göre Filtrele", + "upcoming_enqueue_related": "İlgili Akışlar", + "upcoming_allow_duplicates": "Kopyalara İzin Ver", + "upcoming_info": "Yaklaşan akışlar burada gösterilir", + "upcoming_change": "Değişiklikler bir sonraki akıştan itibaren geçerli olacak", + "fetchlist_url_null": "Kanal URL'si sağlanmadı", + "fetchlist_error": "PlaylistData alınamadı", + "fetchlist_nonexistent": "Hata aldık: “Çalma listesi mevcut değil.”", + "search_placeholder": "YT URL'sini arayın veya yazın [CTRL+K]", + "search_filter_all": "Tümü", + "search_filter_videos": "Videolar", + "search_filter_channels": "Kanallar", + "search_filter_playlists": "Oynatma Listeleri", + "search_filter_music_songs": "Şarkılar", + "search_filter_music_artists": "Sanatçılar", + "search_filter_music_videos": "Videolar", + "search_filter_music_albums": "Albümler", + "search_filter_music_playlists": "Oynatma Listeleri", + "search_filter_sort_by": "Sırala", + "search_filter_date": "Süre", + "search_filter_views": "Görüntülemeler", + "library_discover": "Keşfet", + "library_history": "Geçmiş", + "library_favorites": "Favoriler", + "library_listen_later": "Sonra Dinle", + "library_featured": "Öne Çıkanlar", + "library_collections": "Koleksiyonlar", + "library_playlists": "Oynatma Listeleri", + "library_albums": "Albümler", + "library_artists": "Sanatçılar", + "library_channels": "Kanallar", + "library_feed": "Abonelik Beslemesi", + "library_for_you": "Senin İçin", + "library_import": "İçe Aktar", + "library_export": "Dışa Aktar", + "library_clean": "Kütüphaneyi Temizle", + "library_clean_prompt": "$ öğesini kütüphaneden silmek istediğinize emin misiniz?", + "library_import_prompt": "Bu, mevcut kütüphanenizi içe aktarılan kütüphane ile birleştirecektir, devam edilsin mi?", + "library_imported": "Kütüphane başarıyla içe aktarıldı", + "list_play": "Tümünü Oynat", + "list_enqueue": "Tümünü Kaydet", + "list_import": "Koleksiyon Olarak İçe Aktar", + "list_imported": "$ koleksiyonlarınıza aktarılmıştır.", + "list_set_title": "Başlık Belirtin", + "list_clear_all": "Tümünü temizle", "list_remove": "", "list_delete": "", "list_rename": "", From 84e2061467767e7f03d05d36e0cfe91eea817249 Mon Sep 17 00:00:00 2001 From: Yurt Page Date: Sat, 5 Jul 2025 11:04:33 +0200 Subject: [PATCH 05/12] Translated using Weblate (Russian) Currently translated at 100.0% (173 of 173 strings) Translation: ytify/web Translate-URL: https://hosted.weblate.org/projects/ytify/web/ru/ --- src/locales/ru.json | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/locales/ru.json b/src/locales/ru.json index 607e16154..b74b718ef 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -59,18 +59,18 @@ "library_clean": "Очистить библиотеку", "library_clean_prompt": "Вы уверены, что хотите удалить $ элементов из библиотеки?", "library_import_prompt": "Это объединит вашу текущую библиотеку с импортированной. Продолжить?", - "list_play": "Играть", - "list_enqueue": "Добавить в очередь", - "list_import": "Импортировать", + "list_play": "Играть все", + "list_enqueue": "Добавить все в очередь", + "list_import": "Импортировать как коллекцию", "list_imported": "$ был импортирован в ваши коллекции.", "list_set_title": "Установить название", "list_clear_all": "Очистить всё", - "list_remove": "Удалить", + "list_remove": "Переключить удаление", "list_delete": "Удалить коллекцию", - "list_rename": "Переименовать", - "list_share": "Поделиться", - "list_radio": "Радио", - "list_sort": "Сортировать", + "list_rename": "Переименовать коллекцию", + "list_share": "Поделиться коллекцией", + "list_radio": "Начать радио", + "list_sort": "Сортировать вручную", "list_info": "Здесь отображаются плейлисты, каналы или элементы вашей коллекции", "list_prompt_delete": "Вы уверены, что хотите удалить коллекцию $?", "list_prompt_clear": "Вы уверены, что хотите очистить $?", @@ -83,13 +83,13 @@ "actions_menu_view_artist": "Посмотреть исполнителя", "actions_menu_view_lyrics": "Посмотреть текст песни", "actions_menu_view_channel": "Посмотреть канал", - "actions_menu_debug_info": "Отладочная информация", - "collection_selector_add_to": "Добавить в", + "actions_menu_debug_info": "Смотреть подробности", + "collection_selector_add_to": "Добавить в коллекцию", "collection_selector_create_new": "Создать новую коллекцию", "collection_selector_favorites": "Избранное", "collection_selector_listen_later": "послушайте это позже", "settings_custom_instance": "Использовать пользовательский экземпляр", - "settings_enter_piped_api": "Введите URL API экземпляра Piped:", + "settings_enter_piped_api": "Введите URL-адрес API сервера Piped:", "settings_enter_invidious_api": "Введите URL API Invidious:", "settings_language": "Язык", "settings_links_host": "Сервер ссылок", @@ -147,23 +147,31 @@ "settings_restore": "Восстановить настройки", "settings_export": "Экспортировать настройки", "settings_import": "Импортировать настройки", - "piped_enter_auth": "Введите URL API экземпляра аутентификации Piped:", + "piped_enter_auth": "Введите URL-адрес API сервера аутентификации Piped:", "piped_enter_username": "Введите имя пользователя:", "piped_enter_password": "Пароль", - "piped_success_auth": "Вы успешно вышли из своей учетной записи Piped.", + "piped_success_auth": "Вы успешно вышли из своей учётной записи Piped.", "piped_failed_auth": "Не удалось выйти успешно", - "piped_success_imported": "Плейлисты успешно импортированы из вашей учетной записи Piped в ytify как коллекции", + "piped_success_imported": "Плейлисты успешно импортированы из вашей учётной записи Piped в ytify как коллекции", "piped_failed_imported": "Не удалось успешно импортировать все плейлисты. Ошибка: $", - "piped_success_fetched": "Плейлисты успешно получены с учетной записи.", + "piped_success_fetched": "Плейлисты успешно получены с учётной записи.", "piped_failed_find": "Не удалось найти плейлисты. Ошибка: $", "piped_failed_login": "Не удалось войти в систему. Ошибка: $", "piped_failed_token": "Не найден токен аутентификации! Процесс входа прерван.", - "piped_success_logged": "Вы успешно вошли в свою учетную запись.", + "piped_success_logged": "Вы успешно вошли в свою учётную запись.", "updater_changelog_full": "Прочитать все предыдущие изменения", "updater_update": "Обновить", "updater_later": "Позже", "pwa_share_prompt": "Нажмите «ОК» для воспроизведения, нажмите «Отмена» для загрузки", "settings_watchmode": "Видеорежим", "upcoming_filter_lt10": "Фильтр < 10:00", - "upcoming_filter_ytm": "Фильтр YTM" + "upcoming_filter_ytm": "Фильтр YTM", + "library_imported": "Библиотека успешно импортирована", + "list_sort_title": "Сортировать по названию А↔Я", + "list_sort_author": "Сортировать по автору А↔Я", + "settings_pwa_watch": "Смотреть", + "settings_audio_quality": "Качество звука", + "settings_prefetch": "Предскачивание очереди", + "settings_enforce_piped": "Приниудительно Piped для проигрывания", + "settings_reload": "Перегрузить страницу для применения изменений" } From eed4b2a431ea2cd17e3af2051ac40af65cbf4a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=95=E3=81=A8=E3=81=84=E3=82=82satosi?= Date: Tue, 5 Aug 2025 04:00:19 +0200 Subject: [PATCH 06/12] Added translation using Weblate (Japanese) --- src/locales/ja.json | 175 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 src/locales/ja.json diff --git a/src/locales/ja.json b/src/locales/ja.json new file mode 100644 index 000000000..3593f1ae3 --- /dev/null +++ b/src/locales/ja.json @@ -0,0 +1,175 @@ +{ + "nav_search": "", + "nav_library": "", + "nav_settings": "", + "nav_upcoming": "", + "player_audiostreams_setup": "", + "player_audiostreams_insert": "", + "player_livestreams_hls": "", + "player_audiostreams_null": "", + "player_now_playing": "", + "player_channel": "", + "player_volume": "", + "player_like": "", + "player_loop": "", + "player_more": "", + "player_play_button": "", + "player_play_previous": "", + "player_seek_backward": "", + "player_seek_forward": "", + "player_play_next": "", + "upcoming_clear": "", + "upcoming_shuffle": "", + "upcoming_remove": "", + "upcoming_filter_lt10": "", + "upcoming_filter_ytm": "", + "upcoming_enqueue_related": "", + "upcoming_allow_duplicates": "", + "upcoming_info": "", + "upcoming_change": "", + "fetchlist_url_null": "", + "fetchlist_error": "", + "fetchlist_nonexistent": "", + "search_placeholder": "", + "search_filter_all": "", + "search_filter_videos": "", + "search_filter_channels": "", + "search_filter_playlists": "", + "search_filter_music_songs": "", + "search_filter_music_artists": "", + "search_filter_music_videos": "", + "search_filter_music_albums": "", + "search_filter_music_playlists": "", + "search_filter_sort_by": "", + "search_filter_date": "", + "search_filter_views": "", + "library_discover": "", + "library_history": "", + "library_favorites": "", + "library_listen_later": "", + "library_featured": "", + "library_collections": "", + "library_playlists": "", + "library_albums": "", + "library_artists": "", + "library_channels": "", + "library_feed": "", + "library_for_you": "", + "library_import": "", + "library_export": "", + "library_clean": "", + "library_clean_prompt": "", + "library_import_prompt": "", + "library_imported": "", + "list_play": "", + "list_enqueue": "", + "list_import": "", + "list_imported": "", + "list_set_title": "", + "list_clear_all": "", + "list_remove": "", + "list_delete": "", + "list_rename": "", + "list_share": "", + "list_radio": "", + "list_sort": "", + "list_sort_title": "", + "list_sort_author": "", + "list_info": "", + "list_prompt_delete": "", + "list_prompt_clear": "", + "list_prompt_rename": "", + "actions_menu_play_next": "", + "actions_menu_enqueue": "", + "actions_menu_start_radio": "", + "actions_menu_download": "", + "actions_menu_watch_on": "", + "actions_menu_view_artist": "", + "actions_menu_view_lyrics": "", + "actions_menu_view_channel": "", + "actions_menu_debug_info": "", + "collection_selector_add_to": "", + "collection_selector_create_new": "", + "collection_selector_favorites": "", + "collection_selector_listen_later": "", + "settings_custom_instance": "", + "settings_enter_piped_api": "", + "settings_enter_invidious_api": "", + "settings_language": "", + "settings_links_host": "", + "settings_download_format": "", + "settings_pwa_share_action": "", + "settings_pwa_play": "", + "settings_pwa_watch": "", + "settings_pwa_download": "", + "settings_pwa_always_ask": "", + "settings_search": "", + "settings_set_songs_as_default_filter": "", + "settings_display_suggestions": "", + "settings_playback": "", + "settings_audio_quality": "", + "settings_prefetch": "", + "settings_codec_preference": "", + "settings_enforce_piped": "", + "settings_always_proxy_streams": "", + "settings_stable_volume": "", + "settings_hls": "", + "settings_watchmode": "", + "settings_library": "", + "settings_set_as_default_tab": "", + "settings_library_sync": "", + "settings_store_discoveries": "", + "settings_clear_discoveries": "", + "settings_store_history": "", + "settings_clear_history": "", + "settings_import_from_piped": "", + "settings_interface": "", + "settings_load_images": "", + "settings_roundness": "", + "settings_roundness_none": "", + "settings_roundness_lighter": "", + "settings_roundness_light": "", + "settings_roundness_heavy": "", + "settings_roundness_heavier": "", + "settings_use_custom_color": "", + "settings_custom_color_prompt": "", + "settings_theming_scheme": "", + "settings_theming_scheme_dynamic": "", + "settings_theming_scheme_system": "", + "settings_theming_scheme_light": "", + "settings_theming_scheme_dark": "", + "settings_theming_scheme_hc": "", + "settings_theming_scheme_hc_system": "", + "settings_theming_scheme_white": "", + "settings_theming_scheme_black": "", + "settings_fullscreen": "", + "settings_parental_controls": "", + "settings_pin_toggle": "", + "settings_pin_message": "", + "settings_pin_prompt": "", + "settings_pin_incorrect": "", + "settings_feedback_placeholder": "", + "settings_feedback_submit": "", + "settings_changelog": "", + "settings_clear_cache": "", + "settings_restore": "", + "settings_export": "", + "settings_import": "", + "settings_reload": "", + "piped_enter_auth": "", + "piped_enter_username": "", + "piped_enter_password": "", + "piped_success_auth": "", + "piped_failed_auth": "", + "piped_success_imported": "", + "piped_failed_imported": "", + "piped_success_fetched": "", + "piped_failed_find": "", + "piped_failed_login": "", + "piped_failed_token": "", + "piped_success_logged": "", + "updater_changelog_full": "", + "updater_update": "", + "updater_later": "", + "pwa_share_prompt": "" +} From cb79f000517884282c66ef0d7a773e62648b1726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=95=E3=81=A8=E3=81=84=E3=82=82satosi?= Date: Tue, 5 Aug 2025 05:47:32 +0200 Subject: [PATCH 07/12] Translated using Weblate (Japanese) Currently translated at 100.0% (174 of 174 strings) Translation: ytify/web Translate-URL: https://hosted.weblate.org/projects/ytify/web/ja/ --- src/locales/ja.json | 347 ++++++++++++++++++++++---------------------- 1 file changed, 174 insertions(+), 173 deletions(-) diff --git a/src/locales/ja.json b/src/locales/ja.json index 3593f1ae3..8d6450c9b 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1,175 +1,176 @@ { - "nav_search": "", - "nav_library": "", - "nav_settings": "", - "nav_upcoming": "", - "player_audiostreams_setup": "", - "player_audiostreams_insert": "", - "player_livestreams_hls": "", - "player_audiostreams_null": "", - "player_now_playing": "", - "player_channel": "", - "player_volume": "", - "player_like": "", - "player_loop": "", - "player_more": "", - "player_play_button": "", - "player_play_previous": "", - "player_seek_backward": "", - "player_seek_forward": "", - "player_play_next": "", - "upcoming_clear": "", - "upcoming_shuffle": "", - "upcoming_remove": "", - "upcoming_filter_lt10": "", - "upcoming_filter_ytm": "", - "upcoming_enqueue_related": "", - "upcoming_allow_duplicates": "", - "upcoming_info": "", - "upcoming_change": "", - "fetchlist_url_null": "", - "fetchlist_error": "", - "fetchlist_nonexistent": "", - "search_placeholder": "", - "search_filter_all": "", - "search_filter_videos": "", - "search_filter_channels": "", - "search_filter_playlists": "", - "search_filter_music_songs": "", - "search_filter_music_artists": "", - "search_filter_music_videos": "", - "search_filter_music_albums": "", - "search_filter_music_playlists": "", - "search_filter_sort_by": "", - "search_filter_date": "", - "search_filter_views": "", - "library_discover": "", - "library_history": "", - "library_favorites": "", - "library_listen_later": "", - "library_featured": "", - "library_collections": "", - "library_playlists": "", - "library_albums": "", - "library_artists": "", - "library_channels": "", - "library_feed": "", - "library_for_you": "", - "library_import": "", - "library_export": "", - "library_clean": "", - "library_clean_prompt": "", - "library_import_prompt": "", - "library_imported": "", - "list_play": "", - "list_enqueue": "", - "list_import": "", - "list_imported": "", - "list_set_title": "", - "list_clear_all": "", - "list_remove": "", - "list_delete": "", - "list_rename": "", - "list_share": "", - "list_radio": "", - "list_sort": "", - "list_sort_title": "", - "list_sort_author": "", - "list_info": "", - "list_prompt_delete": "", - "list_prompt_clear": "", - "list_prompt_rename": "", - "actions_menu_play_next": "", - "actions_menu_enqueue": "", - "actions_menu_start_radio": "", - "actions_menu_download": "", - "actions_menu_watch_on": "", - "actions_menu_view_artist": "", - "actions_menu_view_lyrics": "", - "actions_menu_view_channel": "", - "actions_menu_debug_info": "", - "collection_selector_add_to": "", - "collection_selector_create_new": "", - "collection_selector_favorites": "", - "collection_selector_listen_later": "", - "settings_custom_instance": "", - "settings_enter_piped_api": "", - "settings_enter_invidious_api": "", - "settings_language": "", - "settings_links_host": "", - "settings_download_format": "", - "settings_pwa_share_action": "", - "settings_pwa_play": "", - "settings_pwa_watch": "", - "settings_pwa_download": "", - "settings_pwa_always_ask": "", - "settings_search": "", - "settings_set_songs_as_default_filter": "", - "settings_display_suggestions": "", - "settings_playback": "", - "settings_audio_quality": "", - "settings_prefetch": "", - "settings_codec_preference": "", - "settings_enforce_piped": "", - "settings_always_proxy_streams": "", - "settings_stable_volume": "", - "settings_hls": "", - "settings_watchmode": "", - "settings_library": "", - "settings_set_as_default_tab": "", - "settings_library_sync": "", - "settings_store_discoveries": "", - "settings_clear_discoveries": "", - "settings_store_history": "", - "settings_clear_history": "", - "settings_import_from_piped": "", - "settings_interface": "", - "settings_load_images": "", - "settings_roundness": "", - "settings_roundness_none": "", - "settings_roundness_lighter": "", - "settings_roundness_light": "", - "settings_roundness_heavy": "", - "settings_roundness_heavier": "", - "settings_use_custom_color": "", - "settings_custom_color_prompt": "", - "settings_theming_scheme": "", - "settings_theming_scheme_dynamic": "", - "settings_theming_scheme_system": "", - "settings_theming_scheme_light": "", - "settings_theming_scheme_dark": "", - "settings_theming_scheme_hc": "", - "settings_theming_scheme_hc_system": "", - "settings_theming_scheme_white": "", - "settings_theming_scheme_black": "", - "settings_fullscreen": "", - "settings_parental_controls": "", - "settings_pin_toggle": "", - "settings_pin_message": "", - "settings_pin_prompt": "", - "settings_pin_incorrect": "", - "settings_feedback_placeholder": "", - "settings_feedback_submit": "", - "settings_changelog": "", - "settings_clear_cache": "", - "settings_restore": "", - "settings_export": "", - "settings_import": "", - "settings_reload": "", - "piped_enter_auth": "", - "piped_enter_username": "", - "piped_enter_password": "", - "piped_success_auth": "", - "piped_failed_auth": "", - "piped_success_imported": "", - "piped_failed_imported": "", - "piped_success_fetched": "", - "piped_failed_find": "", - "piped_failed_login": "", - "piped_failed_token": "", - "piped_success_logged": "", - "updater_changelog_full": "", - "updater_update": "", - "updater_later": "", - "pwa_share_prompt": "" + "nav_search": "検索", + "nav_library": "ライブラリ", + "nav_settings": "設定", + "nav_upcoming": "次に再生", + "player_audiostreams_setup": "オーディオストリームを設定中…", + "player_audiostreams_insert": "オーディオソースを読み込み中…", + "player_livestreams_hls": "HLSを有効にしてライブ配信を聴こう!", + "player_audiostreams_null": "オーディオストリームが見つかりませんでした", + "player_now_playing": "再生中", + "player_channel": "チャンネル", + "player_volume": "音量", + "player_like": "お気に入り", + "player_loop": "ループ", + "player_more": "その他", + "player_play_button": "再生", + "player_play_previous": "前の曲", + "player_seek_backward": "15秒戻る", + "player_seek_forward": "15秒送る", + "player_play_next": "次の曲", + "upcoming_clear": "キューをクリア", + "upcoming_shuffle": "シャッフル", + "upcoming_remove": "削除", + "upcoming_filter_lt10": "10分未満でフィルター", + "upcoming_filter_ytm": "YouTube Musicでフィルター", + "upcoming_enqueue_related": "似た曲を追加", + "upcoming_allow_duplicates": "重複を許可", + "upcoming_info": "次に再生される曲はここに表示されます", + "upcoming_change": "変更は次の曲から適用されます", + "fetchlist_url_null": "チャンネルのURLが見つかりませんでした", + "fetchlist_error": "プレイリストのデータが取得できませんでした", + "fetchlist_nonexistent": "プレイリストが存在しません", + "search_placeholder": "CTRL+Kで検索するか、YouTubeのURLを入力", + "search_filter_all": "全て", + "search_filter_videos": "動画", + "search_filter_channels": "チャンネル", + "search_filter_playlists": "プレイリスト", + "search_filter_music_songs": "曲", + "search_filter_music_artists": "アーティスト", + "search_filter_music_videos": "動画", + "search_filter_music_albums": "アルバム", + "search_filter_music_playlists": "プレイリスト", + "search_filter_sort_by": "並べ替え", + "search_filter_date": "日時で並べ替え", + "search_filter_views": "再生数で並べ替え", + "library_discover": "探索", + "library_history": "履歴", + "library_favorites": "お気に入り", + "library_listen_later": "後で聴く", + "library_featured": "特集", + "library_collections": "コレクション", + "library_playlists": "プレイリスト", + "library_albums": "アルバム", + "library_artists": "アーティスト", + "library_channels": "チャンネル", + "library_feed": "登録チャンネル", + "library_for_you": "あなたにおすすめ", + "library_import": "インポート", + "library_export": "エクスポート", + "library_clean": "ライブラリを初期化", + "library_clean_prompt": "本当に $ items 件のアイテムをライブラリから削除しますか?", + "library_import_prompt": "これにより、現在のライブラリにインポートされたライブラリが統合されます。続けますか?", + "library_imported": "ライブラリが正常にインポートされました", + "list_play": "再生", + "list_enqueue": "全てキューに追加", + "list_import": "コレクションとしてインポート", + "list_imported": "$ がコレクションにインポートされました。", + "list_set_title": "タイトルを設定", + "list_clear_all": "全て削除", + "list_remove": "選択して削除", + "list_delete": "コレクションを削除", + "list_rename": "名前を変更", + "list_share": "共有", + "list_radio": "Radioを開始", + "list_sort": "手動で並べ替え", + "list_sort_title": "曲名順に並べ替え", + "list_sort_author": "アーティスト名順に並べ替え", + "list_info": "プレイリスト、チャンネル、コレクションはここに表示されます", + "list_prompt_delete": "本当にコレクション $ を削除しますか?", + "list_prompt_clear": "本当に $ の内容をクリアしますか?", + "list_prompt_rename": "新しいタイトルを入力", + "actions_menu_play_next": "次の曲", + "actions_menu_enqueue": "キューに追加", + "actions_menu_start_radio": "Radioを開始", + "actions_menu_download": "ダウンロード", + "actions_menu_watch_on": "$ で再生", + "actions_menu_view_artist": "アーティストを表示", + "actions_menu_view_lyrics": "歌詞を表示", + "actions_menu_view_channel": "チャンネルを見る", + "actions_menu_debug_info": "詳細を表示", + "collection_selector_add_to": "コレクションに追加", + "collection_selector_create_new": "新しいコレクションを作成", + "collection_selector_favorites": "お気に入り", + "collection_selector_listen_later": "後で聴く", + "settings_custom_instance": "カスタムインスタンスを使用", + "settings_enter_piped_api": "Piped APIのURLを入力:", + "settings_enter_invidious_api": "Invidious APIのURLを入力:", + "settings_language": "言語", + "settings_links_host": "ホストのリンク", + "settings_download_format": "ダウンロードのフォーマット", + "settings_pwa_share_action": "PWAシェア アクション", + "settings_pwa_play": "再生", + "settings_pwa_watch": "視聴", + "settings_pwa_download": "ダウンロード", + "settings_pwa_always_ask": "常に尋ねる", + "settings_search": "検索", + "settings_set_songs_as_default_filter": "曲をデフォルトのフィルターに設定", + "settings_display_suggestions": "おすすめを表示", + "settings_playback": "再生", + "settings_audio_quality": "音質", + "settings_prefetch": "キューの事前読み込み", + "settings_codec_preference": "コーデック設定", + "settings_enforce_piped": "再生に強制的にPipedを使用", + "settings_always_proxy_streams": "常に再生をプロキシする", + "settings_stable_volume": "­ボリュームを一定に保つ", + "settings_hls": "HTTP Live Streaming (HLS)", + "settings_watchmode": "視聴モード", + "settings_library": "ライブラリ", + "settings_set_as_default_tab": "デフォルトのタブに設定", + "settings_library_sync": "クラウド同期", + "settings_store_discoveries": "探索を保存", + "settings_clear_discoveries": "この操作は $ 件の探索を削除します。続けますか?", + "settings_store_history": "履歴を保存", + "settings_clear_history": "この操作は $ 件の履歴を削除します。続けますか?", + "settings_import_from_piped": "プレイリストをPipedからインポート", + "settings_interface": "表示", + "settings_load_images": "画像の読み込み", + "settings_roundness": "UIの丸み", + "settings_roundness_none": "無し", + "settings_roundness_lighter": "低", + "settings_roundness_light": "中", + "settings_roundness_heavy": "高", + "settings_roundness_heavier": "最高", + "settings_use_custom_color": "色を変更", + "settings_custom_color_prompt": "設定する色のRGBコードをR,G,Bの形式で入力して下さい", + "settings_theming_scheme": "テーマ", + "settings_theming_scheme_dynamic": "ダイナミック", + "settings_theming_scheme_system": "システム設定", + "settings_theming_scheme_light": "ライト", + "settings_theming_scheme_dark": "ダーク", + "settings_theming_scheme_hc": "高コントラスト", + "settings_theming_scheme_hc_system": "システム設定", + "settings_theming_scheme_white": "ライト", + "settings_theming_scheme_black": "ダーク", + "settings_fullscreen": "フルスクリーン", + "settings_parental_controls": "保護者設定", + "settings_pin_toggle": "設定", + "settings_pin_message": "保護者設定を有効化するにはPINが必要です。入力が完了するとアプリが再読み込みされ、パーツマネージャーが統合されます。", + "settings_pin_prompt": "PINを入力", + "settings_pin_incorrect": "PINが間違っています!", + "settings_feedback_placeholder": "匿名でフィードバック(バグ、機能のリクエスト)を送信:", + "settings_feedback_submit": "フィードバックを送信", + "settings_changelog": "変更ログ", + "settings_clear_cache": "キャッシュをクリア", + "settings_restore": "設定を復元", + "settings_export": "設定をエクスポート", + "settings_import": "設定をインポート", + "settings_reload": "ページを更新して設定を適応", + "piped_enter_auth": "Piped認証インスタンスAPIのURLを入力:", + "piped_enter_username": "ユーザー名を入力:", + "piped_enter_password": "パスワード", + "piped_success_auth": "Pipedアカウントからログアウトしました。", + "piped_failed_auth": "ログアウトに失敗しました", + "piped_success_imported": "Pipedアカウントのプレイリストをytifyコレクションとしてインポートしました", + "piped_failed_imported": "プレイリストのインポート失敗しました。エラー: $", + "piped_success_fetched": "プレイリストの取得に成功しました。", + "piped_failed_find": "プレイリストの取得に失敗しました。エラー: $", + "piped_failed_login": "ログインに失敗しました。エラー:", + "piped_failed_token": "認証トークンが見つかりません。ログイン処理が中断されました。", + "piped_success_logged": "ログインに成功しました。", + "updater_changelog_full": "前の変更を読む", + "updater_update": "更新", + "updater_later": "後で更新", + "pwa_share_prompt": "OKを押して再生、キャンセルを押してダウンロード", + "settings_jiosaavn": "JioSaavnを優先的に再生に使用" } From 5dbd86c01e08b884d5fb4d5095e072ccdfb12f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Binos?= Date: Tue, 5 Aug 2025 21:31:10 +0200 Subject: [PATCH 08/12] Translated using Weblate (French) Currently translated at 100.0% (174 of 174 strings) Translation: ytify/web Translate-URL: https://hosted.weblate.org/projects/ytify/web/fr/ --- src/locales/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/locales/fr.json b/src/locales/fr.json index 79003a6be..056a0f3fd 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -173,5 +173,6 @@ "list_sort_title": "Trier par Titre A↔Z", "list_sort_author": "Trier par Auteur A↔Z", "settings_audio_quality": "Qualité Audio", - "settings_prefetch": "Prélecture de la file d'attente" + "settings_prefetch": "Prélecture de la file d'attente", + "settings_jiosaavn": "Préférez JioSaavn pour la musique" } From 9bb70ff7a778791e8361b58472e77697a371889b Mon Sep 17 00:00:00 2001 From: Animesh <69345507+n-ce@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:34:49 +0530 Subject: [PATCH 09/12] Remove Link Previews --- netlify/edge-functions/linkPreview.ts | 75 --------------------------- 1 file changed, 75 deletions(-) delete mode 100644 netlify/edge-functions/linkPreview.ts diff --git a/netlify/edge-functions/linkPreview.ts b/netlify/edge-functions/linkPreview.ts deleted file mode 100644 index 037aaa7a8..000000000 --- a/netlify/edge-functions/linkPreview.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { Context, Config } from '@netlify/edge-functions'; - -export default async (request: Request, context: Context) => { - - const url = new URL(request.url); - const id = url.searchParams.get('s') || ''; - - if (id.length < 11) return; - - const response = await context.next(); - const page = await response.text(); - const keys = process.env.rkeys!.split(','); - - shuffle(keys); - - const data = await fetcher(keys, id); - - if (!data) return; - const music = data.channelTitle.endsWith(' - Topic') ? 'https://wsrv.nl?w=180&h=180&fit=cover&url=' : ''; - const thumbnail = `${music}https://i.ytimg.com/vi_webp/${id}/mqdefault.webp`; - const newPage = page - .replace('48-160kbps Opus YouTube Audio Streaming Web App.', data.channelTitle.replace(' - Topic', '')) - .replace('"ytify"', `"${data.title}"`) - .replace('ytify.pp.ua', `ytify.pp.ua?s=${id}`) - .replaceAll('/ytify_thumbnail_min.webp', thumbnail); - - return new Response(newPage, response); -}; - -export const config: Config = { - path: '/*', - excludedPath: '/list' -}; - -const host = 'yt-api.p.rapidapi.com'; -export const fetcher = (keys: string[], id: string): Promise<{ - title: string, - channelTitle: string, - channelId: string, - lengthSeconds: number, - isLiveContent: boolean, - adaptiveFormats: { - mimeType: string, - url: string, - bitrate: number, - contentLength: string - }[] -}> => fetch(`https://${host}/dl?id=${id}`, { - headers: { - 'X-RapidAPI-Key': keys.shift(), - 'X-RapidAPI-Host': host - } -}) - .then(res => res.json()) - .then(data => { - if (data && 'adaptiveFormats' in data && data.adaptiveFormats.length) - return data; - else throw new Error(data.message); - }) - .catch(() => fetcher(keys, id)); - - - -export function shuffle(array: string[]) { - let currentIndex = array.length; - - while (currentIndex != 0) { - - const randomIndex = Math.floor(Math.random() * currentIndex); - currentIndex--; - - [array[currentIndex], array[randomIndex]] = [ - array[randomIndex], array[currentIndex]]; - } -} From 51d225fa04ffabaa3d50cd4ee68b40f50e26d40d Mon Sep 17 00:00:00 2001 From: Animesh <69345507+n-ce@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:44:03 +0530 Subject: [PATCH 10/12] Allow listenLater custom collection level benefits --- src/lib/libraryUtils.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lib/libraryUtils.ts b/src/lib/libraryUtils.ts index 18445ba40..447879f28 100644 --- a/src/lib/libraryUtils.ts +++ b/src/lib/libraryUtils.ts @@ -130,13 +130,17 @@ export async function fetchCollection( listBtnsContainer.className = listContainer.classList.contains('reverse') ? 'reserved' : (shared ? 'shared' : 'collection'); - if (listBtnsContainer.classList.contains('favorites')) { - if (id !== 'favorites') - listBtnsContainer.classList.remove('favorites'); + function exceptions(idx: string) { + if (listBtnsContainer.classList.contains(idx)) { + if (id !== idx) + listBtnsContainer.classList.remove(idx); + } + else if (id === idx) + listBtnsContainer.classList.add(idx); } - else if (id === 'favorites') - listBtnsContainer.classList.add('favorites'); - + exceptions('favorites'); + exceptions('listenLater'); + if (location.pathname !== '/list') goTo('/list'); From f1895e72c671222d5e096a3fc42a60d7243ac2f2 Mon Sep 17 00:00:00 2001 From: Animesh <69345507+n-ce@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:44:43 +0530 Subject: [PATCH 11/12] Update list.css --- src/stylesheets/list.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/stylesheets/list.css b/src/stylesheets/list.css index 0cd9c0049..337ebd115 100644 --- a/src/stylesheets/list.css +++ b/src/stylesheets/list.css @@ -59,7 +59,8 @@ } } - &.favorites { + &.favorites, + &.listenLater { li { display: block !important; } @@ -116,4 +117,4 @@ font-family: inherit; } } -} \ No newline at end of file +} From df4143f183b9a4d565ef5a30e62907a59c95222c Mon Sep 17 00:00:00 2001 From: Animesh <69345507+n-ce@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:53:16 +0530 Subject: [PATCH 12/12] Update libraryUtils.ts --- src/lib/libraryUtils.ts | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/lib/libraryUtils.ts b/src/lib/libraryUtils.ts index 447879f28..a26a3ddb5 100644 --- a/src/lib/libraryUtils.ts +++ b/src/lib/libraryUtils.ts @@ -130,16 +130,9 @@ export async function fetchCollection( listBtnsContainer.className = listContainer.classList.contains('reverse') ? 'reserved' : (shared ? 'shared' : 'collection'); - function exceptions(idx: string) { - if (listBtnsContainer.classList.contains(idx)) { - if (id !== idx) - listBtnsContainer.classList.remove(idx); - } - else if (id === idx) - listBtnsContainer.classList.add(idx); - } - exceptions('favorites'); - exceptions('listenLater'); + ['favorites', 'listenLater'].forEach(cls => { + listBtnsContainer.classList.toggle(cls, id === cls); + }); if (location.pathname !== '/list') goTo('/list');