From f2e8e15dcdbe2684463de673a59efe7e5f0eb418 Mon Sep 17 00:00:00 2001 From: 4gray Date: Sat, 15 Nov 2025 18:17:40 +0100 Subject: [PATCH] feat(i18n): add German translations for sorting, EPG and playlist Add new German translation keys for sorting options used across the UI (SORT_BY, SORT_BY_DATE, SORT_BY_RATING, SORT_BY_NAME, SORT_PLAYLISTS, SORT_OPTIONS). Introduce EPG title and success message (EPG.TITLE, EPG.FETCH_SUCCESS). Expand playlist-related messages: export success/error, refresh Xtream dialog and messages (REFRESH_XTREAM, REFRESH_XTREAM_DIALOG), remove dialog success, playlist update/error messages, auto-refresh flags, and a safer CORS note for URL upload (URL_UPLOAD.CORS_NOTE). Add STREAM_FORMAT label under settings. Also improve existing German copy for GLOBAL_FAVORITES_DESCRIPTION and minor reordering of IMPORTED_AS_TEXT to keep related keys together. These changes localize newly added UI features (sorting, playlist import/ export, Xtream refresh, EPG feedback) and provide clearer user-facing messages and safety guidance. --- apps/web/src/assets/i18n/de.json | 68 +++++++++++++++++++++---- apps/web/src/assets/i18n/ru.json | 85 +++++++++++++++++++++++++++----- 2 files changed, 133 insertions(+), 20 deletions(-) diff --git a/apps/web/src/assets/i18n/de.json b/apps/web/src/assets/i18n/de.json index ca2f0622f..961242124 100644 --- a/apps/web/src/assets/i18n/de.json +++ b/apps/web/src/assets/i18n/de.json @@ -12,9 +12,14 @@ "UNNAMED_CHANNEL": "Sender ohne Namen", "UPLOAD_OR_SELECT_OTHER_PLAYLIST": "Neue Playlist hochladen oder eine andere aussuchen", "USE_STAR_TO_FAVORITE": "Nutzen Sie das Star-Icon um Sender als Favoriten zu markieren", - "FAVORITES_UPDATED": "Favoriten wurden aktualisiert!" + "FAVORITES_UPDATED": "Favoriten wurden aktualisiert!", + "SORT_BY": "Sortieren nach", + "SORT_BY_DATE": "Nach Datum sortieren (Neueste zuerst)", + "SORT_BY_RATING": "Nach Bewertung sortieren", + "SORT_BY_NAME": "Nach Name sortieren (A-Z)" }, "EPG": { + "TITLE": "Elektronischer Programmführer", "EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Versuchen Sie bitte die TV-Guide Einstellungen zu ändern.", "EPG_NOT_AVAILABLE_CHANNEL_TITLE": "Ups, leider ist das TV-Programm nicht verfügbar.", "EPG_NOT_AVAILABLE_DATE": "Ups, leider ist das TV-Programm für das ausgewählte Datum nicht verfügbar", @@ -26,6 +31,7 @@ "FETCH_EPG": "EPG-Daten werden geladen...", "ERROR": "Ooops, EPG konnte nicht geladen werden", "DOWNLOAD_SUCCESS": "EPG wurde erfolgreich geladen.", + "FETCH_SUCCESS": "EPG wurde erfolgreich abgerufen", "PROGRAM_DIALOG": { "PROGRAM_DETAILS": "Details zum TV-Programm", "TITLE": "Titel", @@ -74,19 +80,32 @@ "PASSWORD": "Passwort", "SERVER_URL": "Server-URL", "USERNAME": "Nutzername", - "MAC_ADDRESS": "MAC-Adresse" + "MAC_ADDRESS": "MAC-Adresse", + "PLAYLIST_EXPORT_SUCCESS": "Playlist wurde erfolgreich exportiert.", + "PLAYLIST_EXPORT_ERROR": "Fehler: Playlist-Export fehlgeschlagen." }, "UPDATED": "Aktualisiert am", "REFRESH": "Aktualisieren", + "REFRESH_XTREAM": "Xtream-Playlist vom Server aktualisieren", + "REFRESH_XTREAM_DIALOG": { + "TITLE": "Xtream-Playlist aktualisieren", + "MESSAGE": "Dadurch werden lokal zwischengespeicherte Kategorien und Streams gelöscht und alles vom Remote-Server erneut importiert. Ihre Favoriten und kürzlich angesehenen Elemente bleiben erhalten. Möchten Sie wirklich fortfahren?", + "STARTED": "Aktualisierung gestartet. Navigation zur Playlist...", + "ERROR": "Playlist-Aktualisierung fehlgeschlagen. Bitte versuchen Sie es erneut." + }, "REMOVE_DIALOG": { "MESSAGE": "Sind Sie sicher, dass Sie diese Wiedergabeliste vollständig löschen möchten", - "TITLE": "Wiedergabeliste entfernen" + "TITLE": "Wiedergabeliste entfernen", + "SUCCESS": "Playlist wurde erfolgreich entfernt" }, "GLOBAL_FAVORITES": "Globale Favoriten", - "GLOBAL_FAVORITES_DESCRIPTION": "Auto-generated playlist with aggregated favorites from all playlists", + "GLOBAL_FAVORITES_DESCRIPTION": "Automatisch generierte Playlist mit aggregierten Favoriten aus allen Playlists", "MY_PLAYLISTS": "Meine Playlisten", "MY_PLAYLISTS_SUBTITLE": "Alle verfügbaren Playlisten", "PLAYLIST_UPDATE_SUCCESS": "Erfolg! Die Playlist wurde erfolgreich aktualisiert.", + "PLAYLIST_UPDATE_ERROR": "Fehler beim Aktualisieren der Playlist-Details.", + "AUTO_REFRESH_UPDATE_SUCCESS": "Erfolg! Die Playlists wurden erfolgreich aktualisiert", + "AUTO_REFRESH_ENABLED": "Auto-Refresh aktiviert", "STALKER_PORTAL": "Stalker-Portal", "XTREAM_PLAYLIST": "Xtream-Playlist" }, @@ -100,7 +119,8 @@ }, "URL_UPLOAD": { "ADD_PLAYLIST": "Playlist hinzufügen", - "PLAYLIST_URL": "URL der Playlist" + "PLAYLIST_URL": "URL der Playlist", + "CORS_NOTE": "Hinweis: Um CORS-Probleme zu vermeiden, verwendet die Anwendung an dieser Stelle einen öffentlichen CORS-Proxy-Dienst. Wenn Sie eine Playlist mit sensiblen Daten hochladen möchten, ist es sicherer, sie aus einer Datei zu importieren." }, "TEXT_IMPORT": { "LABEL": "Füge m3u(8)-Wiedergabeliste hier als Text ein", @@ -123,8 +143,16 @@ "URL_VALIDATION_ERROR": "Sollte eine gültige URL mit Protokoll sein (z. B. http://example.com/c oder https://example.com/stalker_portal/c)" }, "FILTER_BY_TYPE": "Nach Typ filtern", - "IMPORTED_AS_TEXT": "Als Text importiert", "FILTER_BY_NAME": "Nach Namen filtern", + "SORT_PLAYLISTS": "Playlisten sortieren", + "SORT_BY": "Sortieren nach", + "SORT_OPTIONS": { + "NAME_ASC": "Name (A-Z)", + "NAME_DESC": "Name (Z-A)", + "NEWEST": "Hinzugefügt (Neueste zuerst)", + "OLDEST": "Hinzugefügt (Älteste zuerst)" + }, + "IMPORTED_AS_TEXT": "Als Text importiert", "PARSING_ERROR": "Fehler: Parsen fehlgeschlagen, keine gültige Playlist:" }, "LANGUAGES": { @@ -161,9 +189,11 @@ "VERSION": "Version", "VIDEO_PLAYER_LABEL": "Video player", "VIDEO_PLAYER_PLACEHOLDER": "Option auswählen", + "STREAM_FORMAT": "Stream-Format", "SETTINGS_SAVED": "Einstellungen wurden erfolgreich gespeichert!", "THEME": "Farbdesign", "SHOW_CAPTIONS": "Untertitel anzeigen", + "STREAM_FORMAT_DESCRIPTION": "Standard-Streamformat auswählen (Xtream)", "REMOVE_ALL": "Playlist entfernen", "REMOVE_ALL_BUTTON": "Entfernen", "REMOVE_DIALOG": { @@ -190,7 +220,14 @@ "VLC_PLAYER_PATH": "VLC-Playerpfad", "IMPORT_EXPORT_DATA_DESCRIPTION": "Exportieren oder importieren Sie Wiedergabelisten im JSON-Format, das in der Anwendung verwendet wird.", "EPG_NOTE_URL_TEXT": "Überprüfen Sie es hier", - "MPV_PLAYER_PATH_LABEL": "MPV-Pfad" + "MPV_PLAYER_PATH_LABEL": "MPV-Pfad", + "MPV_PLAYER_PATH_DESCRIPTION": "Legen Sie den Pfad zum MPV-Player in Ihrem System fest. Es wird der bereitgestellte Pfad zu einer MPV-Binärdatei anstelle des in $PATH gefundenen verwendet.", + "MPV_REUSE_INSTANCE_LABEL": "MPV-Instanz wiederverwenden", + "MPV_REUSE_INSTANCE_DESCRIPTION": "Wenn aktiviert, wird dasselbe MPV-Fenster zum Abspielen verschiedener Streams wiederverwendet. Wenn deaktiviert, wird jeder Stream in einem neuen MPV-Fenster geöffnet.", + "REMOTE_CONTROL": "Fernbedienung", + "REMOTE_CONTROL_DESCRIPTION": "Fernsteuerung der Anwendung aktivieren.", + "REMOTE_CONTROL_PORT": "Fernsteuerungs-Port", + "REMOTE_CONTROL_PORT_DESCRIPTION": "Port für die Fernsteuerung der Anwendung. Standardmäßig wird Port 3000 verwendet." }, "THEMES": { "DARK_THEME": "Dunkel", @@ -291,6 +328,10 @@ "TITLE": "Leere Kategorie", "DESCRIPTION": "Diese Kategorie hat keinen Inhalt. Bitte wählen Sie eine andere Kategorie aus oder ändern Sie den Inhaltstyp" }, + "NO_CATEGORY_SELECTED": { + "TITLE": "Keine Kategorie ausgewählt", + "DESCRIPTION": "Bitte wählen Sie eine Kategorie aus, um den Inhalt anzuzeigen" + }, "UNAUTHORIZED": { "TITLE": "Nicht autorisiert", "DESCRIPTION": "Bitte überprüfen Sie die Anmeldeinformationen in den Playlist-Einstellungen oder entfernen Sie sie." @@ -307,6 +348,7 @@ }, "STREAM_URL_COPIED": "Stream-URL in die Zwischenablage kopiert", "EMPTY_LIST_VIEW": { + "TITLE": "Keine Ergebnisse gefunden", "NO_SEARCH_RESULTS": "Nichts gefunden. Versuchen Sie, Ihre Suchanfrage zu ändern" }, "REMOVED_FROM_FAVORITES": "Aus den Favoriten entfernt", @@ -316,12 +358,20 @@ }, "ABOUT": { "TITLE": "Über IPTVnator", - "VERSION": "Ausführung", + "DESCRIPTION": "Plattformübergreifende IPTV-Player-Anwendung mit mehreren Funktionen wie Unterstützung von M3U- und M3U8-Wiedergabelisten, Favoriten, TV-Guide, TV-Archiv/Catchup und mehr.", + "VERSION": "Version", "TWITTER_TOOLTIP": "Auf Twitter teilen", "GITHUB_TOOLTIP": "ITPVnator-Repository auf GitHub", "BUY_ME_A_COFFEE_TOOLTIP": "Buy me a coffee" }, "REFRESH": "Aktualisieren", "UPDATE_AVAILABLE": "Update verfügbar", - "INFORMATION": "Information" + "INFORMATION": "Information", + "REMOTE_CONTROL": { + "TITLE": "Fernbedienung", + "UP_CHANNEL": "Sender aufwärts", + "DOWN_CHANNEL": "Sender abwärts", + "HEADER": "IPTVNator Fernbedienung", + "FOOTER": "IPTVNator Fernbedienung" + } } \ No newline at end of file diff --git a/apps/web/src/assets/i18n/ru.json b/apps/web/src/assets/i18n/ru.json index b69f2fccb..a8a8a8a14 100644 --- a/apps/web/src/assets/i18n/ru.json +++ b/apps/web/src/assets/i18n/ru.json @@ -41,19 +41,32 @@ "PASSWORD": "Пароль", "SERVER_URL": "URL-адрес сервера", "USERNAME": "Имя пользователя", - "MAC_ADDRESS": "MAC-адрес" + "MAC_ADDRESS": "MAC-адрес", + "PLAYLIST_EXPORT_SUCCESS": "Плейлист был успешно экспортирован.", + "PLAYLIST_EXPORT_ERROR": "Ошибка: не удалось экспортировать плейлист." }, "UPDATED": "Обновлен", "REFRESH": "Обновить плейлист", + "REFRESH_XTREAM": "Обновить Xtream плейлист с сервера", + "REFRESH_XTREAM_DIALOG": { + "TITLE": "Обновить Xtream плейлист", + "MESSAGE": "Это удалит локально кэшированные категории и потоки и повторно импортирует все с удаленного сервера. Ваши избранные и недавно просмотренные элементы будут сохранены. Вы уверены, что хотите продолжить?", + "STARTED": "Обновление начато. Переход к плейлисту...", + "ERROR": "Не удалось обновить плейлист. Пожалуйста, попробуйте снова." + }, "REMOVE_DIALOG": { "MESSAGE": "Вы уверены, что хотите удалить этот плейлист?", - "TITLE": "Удалить плейлист" + "TITLE": "Удалить плейлист", + "SUCCESS": "Плейлист был успешно удален" }, "GLOBAL_FAVORITES": "Все фавориты", "GLOBAL_FAVORITES_DESCRIPTION": "Автоматически сгенерированный плейлист, включающий в себя фавориты из всех плейлистов", "MY_PLAYLISTS": "Мои плейлисты", "MY_PLAYLISTS_SUBTITLE": "Все имеющиеся плейлисты", "PLAYLIST_UPDATE_SUCCESS": "Плейлист был успешно обновлен!", + "PLAYLIST_UPDATE_ERROR": "Ошибка при обновлении деталей плейлиста.", + "AUTO_REFRESH_UPDATE_SUCCESS": "Успешно! Плейлисты были успешно обновлены", + "AUTO_REFRESH_ENABLED": "Автообновление включено", "STALKER_PORTAL": "Stalker портал", "XTREAM_PLAYLIST": "Xtream плейлист" }, @@ -65,7 +78,8 @@ }, "URL_UPLOAD": { "PLAYLIST_URL": "Ссылка на плейлист (*.m3u или *.m3u8)", - "ADD_PLAYLIST": "Добавить плейлист" + "ADD_PLAYLIST": "Добавить плейлист", + "CORS_NOTE": "Примечание: Чтобы избежать проблем с CORS, приложение использует публичный CORS-прокси сервис. Если вы хотите загрузить плейлист с конфиденциальными данными, безопаснее импортировать его из файла." }, "TEXT_IMPORT": { "LABEL": "Вставьте плейлист формата m3u(8) в данное поле", @@ -88,8 +102,16 @@ "URL_VALIDATION_ERROR": "Должен быть действительный URL-адрес с протоколом (например, http://example.com/c или https://example.com/stalker_portal/c)." }, "FILTER_BY_TYPE": "Фильтровать по типу", - "IMPORTED_AS_TEXT": "Импортировано как текст", "FILTER_BY_NAME": "Фильтровать по имени", + "SORT_PLAYLISTS": "Сортировать плейлисты", + "SORT_BY": "Сортировать по", + "SORT_OPTIONS": { + "NAME_ASC": "Имени (А-Я)", + "NAME_DESC": "Имени (Я-А)", + "NEWEST": "Дате добавления (сначала новые)", + "OLDEST": "Дате добавления (сначала старые)" + }, + "IMPORTED_AS_TEXT": "Импортировано как текст", "PARSING_ERROR": "Ошибка парсинга, недействительный плейлист:" }, "SETTINGS": { @@ -106,6 +128,7 @@ "BACK_TO_HOME": "Назад", "NEW_VERSION_AVAILABLE": "Доступна новая версия приложения", "LATEST_VERSION": "Вы используете последнюю версию приложения", + "STREAM_FORMAT": "Формат потока", "LANGUAGE": "Язык", "SETTINGS_SAVED": "Новые настройки были успешно сохранены!", "THEME": "Тема оформления", @@ -113,6 +136,7 @@ "ADD_EPG_SOURCE": "Добавить источник EPG", "EPG_URL_ERROR": "Введенное значение не является URL-адресом.", "VIDEO_PLAYER_DESCRIPTION": "Выбрать стандартный видео плеер", + "STREAM_FORMAT_DESCRIPTION": "Выбрать формат потока по умолчанию (Xtream)", "LANGUAGE_DESCRIPTION": "Выбрать язык приложения", "THEME_DESCRIPTION": "Выбрать визуальную тему оформления", "SHOW_CAPTIONS_DESCRIPTION": "Показать или скрыть субтитры по умолчанию.", @@ -120,7 +144,7 @@ "EPG_NOTE": "На данный момент EPG доступен только в нативной версии IPTVnator.", "EPG_NOTE_URL_TEXT": "Подробнее здесь", "IMPORT_EXPORT_DATA": "Импорт/экспорт плейлистов", - "IMPORT_EXPORT_DATA_DESCRIPTION": "Export or import playlists in the JSON format used within the application.", + "IMPORT_EXPORT_DATA_DESCRIPTION": "Экспорт или импорт плейлистов в формате JSON, используемом в приложении.", "IMPORT_DATA": "Импорт", "EXPORT_DATA": "Экспорт", "REMOVE_ALL": "Удалить плейлист", @@ -134,9 +158,16 @@ "PLAYLISTS_REMOVED": "Все плейлисты были удалены.", "VLC_PLAYER_PATH_LABEL": "Путь к VLC плееру", "VLC_PLAYER_PATH": "Путь к VLC плееру", + "VLC_PLAYER_PATH_DESCRIPTION": "Установите путь к проигрывателю VLC в вашей системе. \nОн будет использовать предоставленный путь к binary файлу VLC вместо пути по умолчанию.", "MPV_PLAYER_PATH_LABEL": "Путь к mpv плееру", "MPV_PLAYER_PATH": "Путь к mpv плееру", - "VLC_PLAYER_PATH_DESCRIPTION": "Установите путь к проигрывателю VLC в вашей системе. \nОн будет использовать предоставленный путь к binary файлу VLC вместо пути по умолчанию." + "MPV_PLAYER_PATH_DESCRIPTION": "Установите путь к проигрывателю MPV в вашей системе. Он будет использовать предоставленный путь к бинарному файлу MPV вместо найденного в $PATH.", + "MPV_REUSE_INSTANCE_LABEL": "Переиспользовать экземпляр MPV", + "MPV_REUSE_INSTANCE_DESCRIPTION": "Когда включено, одно и то же окно MPV будет использоваться для воспроизведения разных потоков. Когда отключено, каждый поток открывается в новом окне MPV.", + "REMOTE_CONTROL": "Дистанционное управление", + "REMOTE_CONTROL_DESCRIPTION": "Включить дистанционное управление приложением.", + "REMOTE_CONTROL_PORT": "Порт дистанционного управления", + "REMOTE_CONTROL_PORT_DESCRIPTION": "Порт, используемый для дистанционного управления приложением. По умолчанию используется порт 3000." }, "THEMES": { "DARK_THEME": "Тёмная тема", @@ -153,15 +184,20 @@ "NO_FAVORITES": "Избранных каналов пока нет", "USE_STAR_TO_FAVORITE": "Используйте иконку звезды, чтобы добавлять каналы в избранное", "REMOVE_FAVORITE": "Удалить из списка фаворитов", - "FAVORITES_UPDATED": "Список фаворитов был обновлен!" + "FAVORITES_UPDATED": "Список фаворитов был обновлен!", + "SORT_BY": "Сортировать по", + "SORT_BY_DATE": "Сортировать по дате добавления (сначала новые)", + "SORT_BY_RATING": "Сортировать по рейтингу", + "SORT_BY_NAME": "Сортировать по имени (А-Я)" }, "TOP_MENU": { "OPEN_CHANNELS_LIST": "Открыть список каналов", "TOGGLE_FAVORITE_FLAG": "Избранный", "OPEN_EPG_LIST": "Открыть программу (EPG)", - "OPEN_MULTI_EPG": "Open Multi-EPG view" + "OPEN_MULTI_EPG": "Открыть Multi-EPG вид" }, "EPG": { + "TITLE": "Электронный программный гид", "NEXT_DAY": "Следующий день", "PREVIOUS_DAY": "Предыдущий день", "LIVE_NOW": "Сейчас", @@ -173,6 +209,7 @@ "FETCH_EPG": "Загружаю программу ТВ-передач (EPG)...", "ERROR": "Ой, не удалось загрузить программу каналов (EPG)", "DOWNLOAD_SUCCESS": "Программа каналов (EPG) была успешно загружена.", + "FETCH_SUCCESS": "Программа каналов (EPG) была успешно получена", "PROGRAM_DIALOG": { "PROGRAM_DETAILS": "Подробности передачи", "TITLE": "Название", @@ -217,7 +254,7 @@ }, "ABOUT": { "TITLE": "О приложении", - "DESCRIPTION": "Cross-platform IPTV player application with multiple features, such as support of m3u and m3u8 playlists, favorites, TV guide, TV archive/catchup and more.", + "DESCRIPTION": "Кроссплатформенное приложение IPTV-плеера с множеством функций, таких как поддержка плейлистов m3u и m3u8, избранное, телегид, ТВ-архив/catchup и многое другое.", "VERSION": "Версия", "GITHUB_TOOLTIP": "Репозиторий приложения на GitHub", "BUY_ME_A_COFFEE_TOOLTIP": "Поддержать разработчика", @@ -293,7 +330,12 @@ "DESCRIPTION": "Пожалуйста, проверьте учетные данные в настройках плейлиста или удалите их." }, "NOT_FOUND": { - "TITLE": "Портал не найден" + "TITLE": "Портал не найден", + "DESCRIPTION": "Пожалуйста, проверьте учетные данные и URL портала в настройках плейлиста или удалите его." + }, + "NO_CATEGORY_SELECTED": { + "TITLE": "Категория не выбрана", + "DESCRIPTION": "Пожалуйста, выберите категорию для просмотра содержимого" }, "UNKNOWN_ERROR": { "TITLE": "Что-то пошло не так", @@ -303,12 +345,33 @@ }, "STREAM_URL_COPIED": "URL-адрес потока был скопирован в буфер обмена.", "EMPTY_LIST_VIEW": { + "TITLE": "Результаты не найдены", "NO_SEARCH_RESULTS": "Ничего не найдено, попробуйте изменить поисковый запрос" }, + "SIDEBAR": { + "MAIN": "Главная", + "MOVIES": "Фильмы", + "LIVE_TV": "Прямой эфир", + "SERIES": "Сериалы", + "LIBRARY": "Библиотека", + "SEARCH": "Поиск", + "RECENT": "Недавние", + "FAVORITES": "Избранное", + "HOME": "Домой", + "PLAYLIST_INFO": "Информация о плейлисте", + "ACCOUNT_INFO": "Информация об аккаунте" + }, "REMOVED_FROM_FAVORITES": "Удалено из избранного", "ADDED_TO_FAVORITES": "Добавлено в избранное", "SELECT_CATEGORY": "Выберите категорию", "PAGE": "Страница" }, - "INFORMATION": "Инфо" + "INFORMATION": "Инфо", + "REMOTE_CONTROL": { + "TITLE": "Дистанционное управление", + "UP_CHANNEL": "Канал вверх", + "DOWN_CHANNEL": "Канал вниз", + "HEADER": "IPTVNator Дистанционное управление", + "FOOTER": "IPTVNator Дистанционное управление" + } } \ No newline at end of file