From 4437d2c2cde799c7d6be03881878184b0ef8d41b Mon Sep 17 00:00:00 2001 From: 4gray Date: Sat, 6 Dec 2025 21:42:59 +0100 Subject: [PATCH] feat(i18n): add new translations strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add new English keys for remote control URL and QR code to support remote-control features in the settings UI. Extend French locale with many missing and corrected translations: add "Playlists" root entry, Xtream/Stalker import labels, UI copy improvements (e.g. "Chaînes", grammar fixes), new playlist export/copy messages, search/auto-refresh labels, and removal success message. Fix several typos and phrasing in French strings (IPTV, chaînes, ajouter(e), requièrent). These changes enable new remote-control functionality and improve UX for French users by completing and correcting the translations. --- apps/web/src/assets/i18n/ar.json | 10 +- apps/web/src/assets/i18n/en.json | 3 + apps/web/src/assets/i18n/es.json | 4 +- apps/web/src/assets/i18n/fr.json | 316 ++++++++++++++++++----------- apps/web/src/assets/i18n/pt.json | 19 +- apps/web/src/assets/i18n/zhtw.json | 171 ++++++++++++---- 6 files changed, 365 insertions(+), 158 deletions(-) diff --git a/apps/web/src/assets/i18n/ar.json b/apps/web/src/assets/i18n/ar.json index 18540fa7c..b490e3d2e 100644 --- a/apps/web/src/assets/i18n/ar.json +++ b/apps/web/src/assets/i18n/ar.json @@ -15,6 +15,14 @@ "PLAYLISTS": { "NO_PLAYLISTS": "لم تُضف أي قوائم تشغيل", "ADD_FIRST": "يرجى إضافة أول قائمة تشغيل", + "WELCOME_TITLE": "مرحبًا بك في IPTVnator", + "WELCOME_DESCRIPTION": "ابدأ رحلة البث بإضافة قائمة التشغيل الأولى. اتصل بخدمة IPTV المفضلة لديك واستمتع بالتلفزيون المباشر والأفلام والمسلسلات.", + "ADD_YOUR_FIRST": "أضف قائمة التشغيل الأولى", + "FEATURE_M3U": "ملفات M3U/M3U8", + "FEATURE_XTREAM": "Xtream Codes", + "FEATURE_STALKER": "بوابة Stalker", + "NO_RESULTS_TITLE": "لم يتم العثور على قوائم تشغيل", + "NO_RESULTS_DESCRIPTION": "لا توجد قوائم تشغيل تطابق بحثك. حاول تعديل مصطلحات البحث أو امسح الفلتر لرؤية جميع القوائم.", "ADDED_VIA_URL": "تمت الإضافة عبر رابط URL. الرابط:", "ADDED_VIA_FILE": "تمت الإضافة عبر تحميل ملف", "XTREAM_PLAYLIST": "قائمة تشغيل Xtream", @@ -154,7 +162,7 @@ "REMOTE_CONTROL": "التحكم عن بعد", "REMOTE_CONTROL_DESCRIPTION": "تمكين التحكم عن بعد للتطبيق.", "REMOTE_CONTROL_PORT": "منفذ التحكم عن بعد", - "REMOTE_CONTROL_PORT_DESCRIPTION": "المنفذ المستخدم للتحكم عن بعد (الافتراضي: 3000)." + "REMOTE_CONTROL_PORT_DESCRIPTION": "المنفذ المستخدم للتحكم عن بعد (الافتراضي: 8765)." }, "THEMES": { "DARK_THEME": "السمة الداكنة", diff --git a/apps/web/src/assets/i18n/en.json b/apps/web/src/assets/i18n/en.json index 00c72f761..8747181b2 100644 --- a/apps/web/src/assets/i18n/en.json +++ b/apps/web/src/assets/i18n/en.json @@ -178,6 +178,9 @@ "REMOTE_CONTROL_DESCRIPTION": "Enable remote control of the application.", "REMOTE_CONTROL_PORT": "Remote control port", "REMOTE_CONTROL_PORT_DESCRIPTION": "Port used for remote control of the application. Port 8765 is used by default.", + "REMOTE_CONTROL_URL": "Remote control URL", + "REMOTE_CONTROL_URL_DESCRIPTION": "Access the remote control from another device on the same network.", + "SHOW_QR_CODE": "Show QR code", "PORT_REQUIRED": "Port is required", "PORT_MIN": "Port must be at least 1", "PORT_MAX": "Port must be at most 65535", diff --git a/apps/web/src/assets/i18n/es.json b/apps/web/src/assets/i18n/es.json index a73be39b5..dbcc26413 100644 --- a/apps/web/src/assets/i18n/es.json +++ b/apps/web/src/assets/i18n/es.json @@ -53,11 +53,11 @@ }, "UPDATED": "Actualizado", "REFRESH": "Actualizar lista", - "GLOBAL_FAVORITES": "Global favorites", + "GLOBAL_FAVORITES": "Favoritos globales", "GLOBAL_FAVORITES_DESCRIPTION": "Lista autogenerada con los favoritos agregados de todas las listas", "MY_PLAYLISTS": "Mis listas", "PLAYLIST_UPDATE_SUCCESS": "¡Éxito! La lista de reproducción se actualizó correctamente.", - "STALKER_PORTAL": "" + "STALKER_PORTAL": "Stalker Portal" }, "FILE_UPLOAD": { "DRAG_DROP": "Arrastre & suelte archivos aquí", diff --git a/apps/web/src/assets/i18n/fr.json b/apps/web/src/assets/i18n/fr.json index 79d9798b1..a214aed5e 100644 --- a/apps/web/src/assets/i18n/fr.json +++ b/apps/web/src/assets/i18n/fr.json @@ -1,5 +1,6 @@ { "CLOSE": "Fermer", + "PLAYLISTS": "Listes de lecture", "HOME": { "TITLE": "IPTVnator", "SUBTITLE": "Choisissez une liste de lecture, ou ajoutez en une nouvelle via un transfert de fichier ou via une URL", @@ -8,10 +9,11 @@ "FILE_UPLOAD": "Ajouter un fichier", "URL_UPLOAD": "Ajouter une URL", "TEXT_IMPORT": "Importer sous forme de texte", - "STALKER_PORTAL_IMPORT": "Ajouter un portail de traqueur" + "XTREME_IMPORT": "Ajouter Xtreme Code", + "STALKER_PORTAL_IMPORT": "Ajouter un portail Stalker" }, "PLAYLISTS": { - "NO_PLAYLISTS": "Aucune liste de lecture n'a été ajouté", + "NO_PLAYLISTS": "Aucune liste de lecture n'a été ajoutée", "ADD_FIRST": "Veuillez ajouter votre première liste de lecture depuis un autre onglet", "WELCOME_TITLE": "Bienvenue sur IPTVnator", "WELCOME_DESCRIPTION": "Commencez votre voyage de streaming en ajoutant votre première liste de lecture. Connectez-vous à votre service IPTV préféré et profitez de la télévision en direct, des films et des séries.", @@ -23,16 +25,20 @@ "NO_RESULTS_DESCRIPTION": "Aucune liste ne correspond à votre recherche. Essayez d'ajuster vos termes de recherche ou effacez le filtre pour voir toutes les listes.", "ADDED_VIA_URL": "Ajouté par URL. URL :", "ADDED_VIA_FILE": "Ajouté par transfert de fichier", - "CHANNELS": "Chaines", + "XTREAM_PLAYLIST": "Liste Xtream", + "STALKER_PORTAL": "Portail Stalker", + "CHANNELS": "Chaînes", "ADDED": "Ajouté", "SHOW_DETAILS": "Afficher les détails de la liste de lecture", "REMOVE": "Retirer la liste de lecture", + "SEARCH_PLAYLISTS": "Rechercher des listes par titre", + "AUTO_REFRESH_ENABLED": "Actualisation automatique activée", "INFO_DIALOG": { "PLAYLIST_DETAILS": "Détails de la liste de lecture", "TITLE": "Titre", "FROM_URL": "Ajouté par URL", "IMPORT_DATE": "Date d'importation", - "CHANNELS": "Nombre de chaines", + "CHANNELS": "Nombre de chaînes", "CLOSE": "Fermer", "SAVE": "Enregistrer", "USER_AGENT": "Agent utilisateur", @@ -41,22 +47,38 @@ "UPDATE_FAILED": "Échec de la dernière mise à jour de liste de lecture", "AUTO_UPDATE": "Mise à jour automatique", "AUTO_UPDATE_DESCRIPTION": "Si la fonction de mise à jour automatique est activée, la liste de lecture sera mise à jour automatiquement à chaque fois que l'app est lancée.", - "CUSTOM_USER_AGENT": "Certains fournisseurs d'IPTC requiert un agent utilisateur spécifique afin de lire leur liste de lecture.", - "PASSWORD": "Mot de passe", + "CUSTOM_USER_AGENT": "Certains fournisseurs d'IPTV requièrent un agent utilisateur spécifique afin de lire leur liste de lecture.", + "EXPORT_PLAYLIST": "Exporter la liste de lecture en m3u", "SERVER_URL": "URL du serveur", "USERNAME": "Nom d'utilisateur", - "MAC_ADDRESS": "Adresse Mac" + "PASSWORD": "Mot de passe", + "MAC_ADDRESS": "Adresse Mac", + "PLAYLIST_EXPORT_SUCCESS": "La liste de lecture a été exportée avec succès.", + "PLAYLIST_EXPORT_ERROR": "Erreur : Échec de l'exportation de la liste de lecture.", + "COPY_URL": "Copier l'URL dans le presse-papiers", + "URL_COPIED": "URL copiée dans le presse-papiers" }, "REMOVE_DIALOG": { "TITLE": "Retirer la liste de lecture", - "MESSAGE": "Êtes-vous certain de vouloir complètement retirer cette liste de lecture ?" + "MESSAGE": "Êtes-vous certain de vouloir complètement retirer cette liste de lecture ?", + "SUCCESS": "La liste de lecture a été supprimée avec succès" }, "UPDATED": "Mis à jour", "REFRESH": "Mettre à jour la liste de lecture", - "GLOBAL_FAVORITES": "Global favorites", - "GLOBAL_FAVORITES_DESCRIPTION": "Auto-generated playlist with aggregated favorites from all playlists", - "MY_PLAYLISTS": "My playlists", - "PLAYLIST_UPDATE_SUCCESS": "Succès! La playlist a été mise à jour avec succès." + "REFRESH_XTREAM": "Actualiser la liste Xtream depuis le serveur", + "REFRESH_XTREAM_DIALOG": { + "TITLE": "Actualiser la liste Xtream", + "MESSAGE": "Cela supprimera les catégories et flux mis en cache localement et réimportera tout depuis le serveur distant. Vos favoris et éléments récemment consultés seront conservés. Voulez-vous continuer ?", + "STARTED": "Actualisation démarrée. Navigation vers la liste de lecture...", + "ERROR": "Échec de l'actualisation de la liste de lecture. Veuillez réessayer." + }, + "GLOBAL_FAVORITES": "Favoris globaux", + "GLOBAL_FAVORITES_DESCRIPTION": "Liste de lecture générée automatiquement avec les favoris agrégés de toutes les listes", + "MY_PLAYLISTS": "Mes listes de lecture", + "MY_PLAYLISTS_SUBTITLE": "toutes les listes disponibles", + "PLAYLIST_UPDATE_SUCCESS": "Succès ! La liste de lecture a été mise à jour avec succès.", + "PLAYLIST_UPDATE_ERROR": "Erreur lors de la mise à jour des détails de la liste.", + "AUTO_REFRESH_UPDATE_SUCCESS": "Succès ! Les listes de lecture ont été mises à jour avec succès" }, "FILE_UPLOAD": { "DRAG_DROP": "Glissez un fichier ici", @@ -66,32 +88,47 @@ }, "URL_UPLOAD": { "PLAYLIST_URL": "URL de la liste de lecture (m3u, m3u8)", - "ADD_PLAYLIST": "Ajouter la liste de lecture" + "ADD_PLAYLIST": "Ajouter la liste de lecture", + "CORS_NOTE": "Remarque : Pour éviter les problèmes CORS, l'application utilise un service proxy CORS public. Si vous souhaitez télécharger une liste avec des données sensibles, il est plus sûr de l'importer depuis un fichier." }, "TEXT_IMPORT": { - "LABEL": "Insert m3u(8) playlist as text", - "BUTTON_LABEL": "Import" + "LABEL": "Insérer la liste m3u(8) sous forme de texte", + "BUTTON_LABEL": "Importer" + }, + "XTREAM_PLAYLIST": { + "TITLE": "Titre de la liste", + "SERVER_URL": "URL du serveur", + "USERNAME": "Nom d'utilisateur", + "PASSWORD": "Mot de passe", + "ADD": "Ajouter", + "TEST_CREDENTIALS": "Tester les identifiants", + "URL_VALIDATION_ERROR": "Doit être une URL valide avec un protocole (par exemple http://example.com ou https://example.com:4324)" }, "STALKER_PORTAL": { - "ADD": "Ajouter", "TITLE": "Titre", - "SERVER_URL": "URL du serveur", "MAC_ADDRESS": "Adresse Mac", - "URL_VALIDATION_ERROR": "Doit être une URL valide avec un protocole (par exemple http://example.com/c ou https://example.com/stalker_portal/c)" + "SERVER_URL": "URL du serveur", + "URL_VALIDATION_ERROR": "Doit être une URL valide avec un protocole (par exemple http://example.com/c ou https://example.com/stalker_portal/c)", + "ADD": "Ajouter" }, - "FILTER_BY_TYPE": "Filtrer par type", - "IMPORTED_AS_TEXT": "Importé sous forme de texte", "FILTER_BY_NAME": "Filtrer par nom", - "PARSING_ERROR": "Erreur : échec de l'analyse, liste de lecture non valide :", - "XTREAM_PLAYLIST": { - "URL_VALIDATION_ERROR": "Doit être une URL valide avec un protocole (par exemple http://example.com ou https://example.com:4324)" - } + "FILTER_BY_TYPE": "Filtrer par type", + "SORT_PLAYLISTS": "Trier les listes", + "SORT_BY": "Trier par", + "SORT_OPTIONS": { + "NAME_ASC": "Nom (A-Z)", + "NAME_DESC": "Nom (Z-A)", + "NEWEST": "Date d'ajout (Plus récent)", + "OLDEST": "Date d'ajout (Plus ancien)" + }, + "IMPORTED_AS_TEXT": "Importé sous forme de texte", + "PARSING_ERROR": "Erreur : échec de l'analyse, liste de lecture non valide :" }, "SETTINGS": { "TITLE": "Paramètres", "SUBTITLE": "Modifiez la configuration de l'application", "DESCRIPTION": "Changez les options de la liste ci-dessous et enregistrez vos modifications.", - "EPG_URL_LABEL": "URL du EPG (*.xml ou *.xml.gz)", + "EPG_URL_LABEL": "URL du EPG (*.xml ou *.xml.gz)", "EPG_URL_PLACEHOLDER": "Saisir une URL", "REFRESH_EPG": "Mise à jour de l'EPG", "VIDEO_PLAYER_LABEL": "Lecteur vidéo", @@ -101,81 +138,96 @@ "BACK_TO_HOME": "Retourner à l'accueil", "NEW_VERSION_AVAILABLE": "Une nouvelle version est disponible", "LATEST_VERSION": "Vous utilisez la dernière version", + "STREAM_FORMAT": "Format du flux", "LANGUAGE": "Langue", "SETTINGS_SAVED": "La configuration a été enregistrée avec succès.", "THEME": "Thème", "SHOW_CAPTIONS": "Afficher les sous-titres", - "REMOVE_ALL": "Supprimer la liste de lecture", - "REMOVE_ALL_BUTTON": "Retirer", - "REMOVE_DIALOG": { - "TITLE": "Supprimer toutes les playlists", - "MESSAGE": "Etes-vous sûr de vouloir supprimer toutes les playlists de l'application ?" - }, - "LANGUAGE_DESCRIPTION": "Sélectionnez la langue de l'application", - "PLAYLISTS_REMOVED": "Toutes les listes de lecture ont été supprimées.", - "VERSION_DESCRIPTION": "Version actuelle de l'application", - "MPV_PLAYER_PATH": "chemin du lecteur mpv", - "SHOW_CAPTIONS_DESCRIPTION": "Afficher ou masquer les sous-titres par défaut", - "IMPORT_DATA": "Importer", "ADD_EPG_SOURCE": "Ajouter une source EPG", - "IMPORT_ERROR": "Erreur d'importation, veuillez essayer avec un autre fichier.", "EPG_URL_ERROR": "La valeur n'est pas une URL valide", - "EXPORT_DATA": "Exporter", "VIDEO_PLAYER_DESCRIPTION": "Sélectionnez le lecteur vidéo par défaut", - "IMPORT_EXPORT_DATA": "Importer/exporter des listes de lecture", - "VLC_PLAYER_PATH_LABEL": "Chemin VLC", - "VLC_PLAYER_PATH_DESCRIPTION": "Définissez le chemin d'accès au lecteur VLC dans votre système. \nIl utilisera le chemin fourni vers un binaire VLC au lieu du chemin par défaut de notre système.", + "STREAM_FORMAT_DESCRIPTION": "Sélectionnez le format de flux par défaut (xtream)", + "LANGUAGE_DESCRIPTION": "Sélectionnez la langue de l'application", "THEME_DESCRIPTION": "Sélectionnez le thème visuel de l'application", - "EPG_NOTE": "Actuellement, l'EPG n'est disponible que dans la version électronique d'IPTVnator.", - "VLC_PLAYER_PATH": "Chemin du lecteur VLC", - "IMPORT_EXPORT_DATA_DESCRIPTION": "Exportez ou importez des playlists au format JSON utilisé dans l'application.", + "SHOW_CAPTIONS_DESCRIPTION": "Afficher ou masquer les sous-titres par défaut", + "VERSION_DESCRIPTION": "Version actuelle de l'application", + "EPG_NOTE": "Actuellement, l'EPG n'est disponible que dans la version Electron d'IPTVnator.", "EPG_NOTE_URL_TEXT": "Vérifiez-le ici", - "MPV_PLAYER_PATH_LABEL": "chemin MPV" + "IMPORT_EXPORT_DATA": "Importer/exporter des listes de lecture", + "IMPORT_EXPORT_DATA_DESCRIPTION": "Exportez ou importez des listes au format JSON utilisé dans l'application.", + "IMPORT_DATA": "Importer", + "EXPORT_DATA": "Exporter", + "REMOVE_ALL": "Supprimer les listes de lecture", + "REMOVE_ALL_BUTTON": "Supprimer", + "REMOVE_ALL_DESCRIPTION": "Cela supprimera toutes les listes de lecture existantes de l'application.", + "REMOVE_DIALOG": { + "TITLE": "Supprimer toutes les listes", + "MESSAGE": "Êtes-vous sûr de vouloir supprimer toutes les listes de l'application ?" + }, + "IMPORT_ERROR": "Erreur d'importation, veuillez essayer avec un autre fichier.", + "PLAYLISTS_REMOVED": "Toutes les listes de lecture ont été supprimées.", + "MPV_PLAYER_PATH_LABEL": "Chemin mpv", + "MPV_PLAYER_PATH_DESCRIPTION": "Définissez le chemin d'accès au lecteur mpv dans votre système. Il utilisera le chemin fourni vers un binaire mpv au lieu de celui trouvé dans $PATH.", + "MPV_PLAYER_PATH": "Chemin du lecteur mpv", + "VLC_PLAYER_PATH_LABEL": "Chemin VLC", + "VLC_PLAYER_PATH_DESCRIPTION": "Définissez le chemin d'accès au lecteur VLC dans votre système. Il utilisera le chemin fourni vers un binaire VLC au lieu du chemin par défaut.", + "VLC_PLAYER_PATH": "Chemin du lecteur VLC", + "REMOTE_CONTROL": "Télécommande", + "REMOTE_CONTROL_DESCRIPTION": "Activer la télécommande de l'application.", + "REMOTE_CONTROL_PORT": "Port de télécommande", + "REMOTE_CONTROL_PORT_DESCRIPTION": "Port utilisé pour la télécommande de l'application. Le port 8765 est utilisé par défaut." }, "THEMES": { "DARK_THEME": "Thème foncé", "LIGHT_THEME": "Thème clair" }, "CHANNELS": { - "SEARCH_CHANNEL": "Rechercher une chaine", + "SEARCH_CHANNEL": "Rechercher une chaîne", "UPLOAD_OR_SELECT_OTHER_PLAYLIST": "Transférer ou choisir une autre liste de lecture", - "ALL_CHANNELS": "Chaines", + "ALL_CHANNELS": "Toutes les chaînes", "GROUPS": "Groupes", "UNGROUPED": "Non-groupé", - "UNNAMED_CHANNEL": "Chaine sans non", + "UNNAMED_CHANNEL": "Chaîne sans nom", "FAVORITES": "Favoris", "NO_FAVORITES": "Aucun favoris", - "USE_STAR_TO_FAVORITE": "Veuillez utiliser l'icône 'étoile' pour ajouter une chaine aux favoris.", + "USE_STAR_TO_FAVORITE": "Veuillez utiliser l'icône 'étoile' pour ajouter une chaîne aux favoris.", "REMOVE_FAVORITE": "Retirer des favoris", - "FAVORITES_UPDATED": "Les favoris ont été mis à jour !" + "FAVORITES_UPDATED": "Les favoris ont été mis à jour !", + "SORT_BY": "Trier par", + "SORT_BY_DATE": "Trier par date d'ajout (Plus récent)", + "SORT_BY_RATING": "Trier par note", + "SORT_BY_NAME": "Trier par nom (A-Z)" }, "TOP_MENU": { - "OPEN_CHANNELS_LIST": "Ouvrir la liste des chaines", - "TOGGLE_FAVORITE_FLAG": "Basculer le status de favoris", - "OPEN_EPG_LIST": "Ouvrir la liste du EPG", - "OPEN_MULTI_EPG": "Open Multi-EPG view" + "OPEN_CHANNELS_LIST": "Ouvrir la liste des chaînes", + "TOGGLE_FAVORITE_FLAG": "Basculer le statut de favoris", + "OPEN_EPG_LIST": "Ouvrir la liste EPG", + "OPEN_MULTI_EPG": "Ouvrir la vue Multi-EPG", + "SHOW_INFO": "Afficher les infos du programme (Appuyez sur I)" }, "EPG": { + "TITLE": "Guide électronique des programmes", "NEXT_DAY": "Jour suivant", "PREVIOUS_DAY": "Jour précédent", "LIVE_NOW": "En direct", "LIVE_STREAM": "Diffusion en direct", - "TIMESHIFT_AVAILABLE": "Contrôle du direct, appuyez pour lire", - "EPG_NOT_AVAILABLE_DATE": "Échec: L'EPG n'est pas disponible pour la date choisie", - "EPG_NOT_AVAILABLE_CHANNEL_TITLE": "Échec: L'EPG n'est pas disponible pour cette chaine", - "EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Veuillez ajouter/modifier l'URL de la liste EPG dans les réglages de l'app.", + "TIMESHIFT_AVAILABLE": "Contrôle du direct disponible, cliquez pour lire", + "EPG_NOT_AVAILABLE_DATE": "L'EPG n'est pas disponible pour la date sélectionnée", + "EPG_NOT_AVAILABLE_CHANNEL_TITLE": "L'EPG n'est pas disponible pour cette chaîne.", + "EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Veuillez ajouter/modifier l'URL de la liste EPG dans les réglages de l'application.", "FETCH_EPG": "Récupération des données EPG...", - "ERROR": "Échec: L'EPG n'a pas pu être récupéré", - "DOWNLOAD_SUCCESS": "L'EPG a été récupéré avec succès", + "ERROR": "L'EPG n'a pas pu être chargé.", + "DOWNLOAD_SUCCESS": "L'EPG a été téléchargé avec succès.", "PROGRAM_DIALOG": { "PROGRAM_DETAILS": "Détails du programme TV", "TITLE": "Titre", "CATEGORY": "Catégorie", - "PARENTAL_RATING_SYSTEM": "Paramètres du contrôle parental", + "PARENTAL_RATING_SYSTEM": "Système de classification du contenu télévisé", "DESCRIPTION": "Description", "LANGUAGE": "Langue", - "SHOW_PROGRAM_DETAILS": "Afficher les détails du programme TV" - } + "SHOW_PROGRAM_DETAILS": "Afficher les détails de ce programme" + }, + "FETCH_SUCCESS": "L'EPG a été récupéré avec succès" }, "LANGUAGES": { "ARABIC": "العربية", @@ -199,77 +251,109 @@ "YES": "Oui", "NO": "Non", "MENU": { - "OPEN": "Open menu", - "SUPPORT_ARIA": "Support IPTVnator on GitHub", - "SETTINGS": "Settings", - "SETTINGS_ARIA": "Open settings", - "BUG_REPORT": "Report a bug", - "WHAT_IS_NEW": "What is new", - "ABOUT": "About", - "ABOUT_ARIA": "About the application", - "SUPPORT_PROJECT": "Projet de soutien" + "OPEN": "Ouvrir le menu", + "SUPPORT_ARIA": "Soutenir IPTVnator sur GitHub", + "SETTINGS": "Paramètres", + "SETTINGS_ARIA": "Ouvrir les paramètres", + "BUG_REPORT": "Signaler un bug", + "WHAT_IS_NEW": "Nouveautés", + "ABOUT": "À propos", + "ABOUT_ARIA": "À propos de l'application", + "SUPPORT_PROJECT": "Soutenir le projet" }, + "ABOUT": { + "TITLE": "À propos d'IPTVnator", + "DESCRIPTION": "Application lecteur IPTV multiplateforme avec de nombreuses fonctionnalités, comme la prise en charge des listes m3u et m3u8, les favoris, le guide TV, les archives TV/rattrapage et plus encore.", + "VERSION": "Version", + "GITHUB_TOOLTIP": "Dépôt IPTVnator sur GitHub", + "BUY_ME_A_COFFEE_TOOLTIP": "Offrez-moi un café", + "TWITTER_TOOLTIP": "Partager sur Twitter" + }, + "UPDATE_AVAILABLE": "Mise à jour disponible", + "REFRESH": "Actualiser", "XTREAM": { - "RELEASE_DATE": "Date de sortie", - "ACTORS": "Acteurs", - "PLAY": "Jouer", - "GENRE": "Genre", - "DURATION": "Durée", - "COUNTRY": "Pays", + "PLAY": "Lire", "NAME": "Nom", - "DIRECTOR": "Directeur", - "CAST": "Casting", - "RATING": "Notation", - "AGE": "Âge", - "EPISODE": "Épisode", - "YEAR": "Année", - "YOUTUBE_TRAILER": "Bande-annonce YouTube", + "RELEASE_DATE": "Date de sortie", + "GENRE": "Genre", + "COUNTRY": "Pays", + "ACTORS": "Acteurs", + "DIRECTOR": "Réalisateur", + "DURATION": "Durée", + "CAST": "Distribution", + "EPISODE_RUN_TIME": "Durée de l'épisode", + "RATING": "Note", + "IMDB_RATING": "Note IMDB", + "KINOPOISK_RATING": "Note Kinopoisk", "DESCRIPTION": "Description", - "KINOPOISK_RATING": "Évaluation du Kinopoisk", - "IMDB_RATING": "Évaluation IMDB", - "EPISODE_RUN_TIME": "Durée de l'épisode" + "YEAR": "Année", + "AGE": "Âge", + "YOUTUBE_TRAILER": "Bande-annonce YouTube", + "EPISODE": "Épisode" }, "PORTALS": { - "ALL_CATEGORIES": "Toutes catégories", - "ADD_TO_FAVORITES": "Ajouter aux Favoris", - "REMOVE_FROM_FAVORITES": "Retirer des favoris", + "ALL_CATEGORIES": "Toutes les catégories", "MY_FAVORITES": "Mes favoris", - "COPY_STREAM_URL": "Copier l'URL du flux", + "ADD_TO_FAVORITES": "Ajouter aux favoris", + "REMOVE_FROM_FAVORITES": "Retirer des favoris", + "REMOVED_FROM_FAVORITES": "Retiré des favoris", + "ADDED_TO_FAVORITES": "Ajouté aux favoris", + "SIDEBAR": { + "MAIN": "Principal", + "MOVIES": "Films", + "LIVE_TV": "TV en direct", + "SERIES": "Séries", + "LIBRARY": "Bibliothèque", + "SEARCH": "Rechercher", + "RECENT": "Récent", + "FAVORITES": "Favoris", + "HOME": "Accueil", + "PLAYLIST_INFO": "Infos de la liste", + "ACCOUNT_INFO": "Infos du compte" + }, "ERROR_VIEW": { - "DELETE": "Supprimer", "ACCOUNT_EXPIRED": { "TITLE": "Compte expiré", - "DESCRIPTION": "Ce compte a expiré. \nVeuillez vérifier les informations d'identification dans les paramètres de la playlist ou les supprimer." + "DESCRIPTION": "Ce compte a expiré. Veuillez vérifier les identifiants dans les paramètres de la liste ou la supprimer." + }, + "UNAUTHORIZED": { + "TITLE": "Non autorisé", + "DESCRIPTION": "Veuillez vérifier les identifiants dans les paramètres de la liste ou la supprimer." + }, + "NOT_FOUND": { + "TITLE": "Portail non trouvé", + "DESCRIPTION": "Veuillez vérifier les identifiants et l'URL du portail dans les paramètres de la liste ou la supprimer." }, - "HOME": "Maison", "EMPTY_CATEGORY": { "TITLE": "Catégorie vide", "DESCRIPTION": "Cette catégorie n'a pas de contenu, veuillez sélectionner une autre catégorie ou modifier le type de contenu" }, - "UNAUTHORIZED": { - "TITLE": "Non autorisé", - "DESCRIPTION": "Veuillez vérifier les informations d'identification dans les paramètres de la playlist ou les supprimer." - }, "UNKNOWN_ERROR": { - "TITLE": "Quelque chose s'est mal passé", + "TITLE": "Une erreur s'est produite", "DESCRIPTION": "Erreur inconnue, veuillez réessayer plus tard" }, - "PLAYLIST_SETTINGS": "Paramètres de la liste de lecture" + "NO_CATEGORY_SELECTED": { + "TITLE": "Aucune catégorie sélectionnée", + "DESCRIPTION": "Veuillez sélectionner une catégorie pour voir le contenu" + }, + "PLAYLIST_SETTINGS": "Paramètres de la liste", + "HOME": "Accueil", + "DELETE": "Supprimer" + }, + "EMPTY_LIST_VIEW": { + "TITLE": "Aucun résultat trouvé", + "NO_SEARCH_RESULTS": "Rien trouvé, essayez de modifier votre recherche" }, "STREAM_URL_COPIED": "URL du flux copiée dans le presse-papiers", - "EMPTY_LIST_VIEW": { - "NO_SEARCH_RESULTS": "Rien trouvé, essayez de modifier votre demande de recherche" - }, - "REMOVED_FROM_FAVORITES": "Supprimé des favoris", - "ADDED_TO_FAVORITES": "Ajouté aux favoris" + "COPY_STREAM_URL": "Copier l'URL du flux", + "SELECT_CATEGORY": "Sélectionner une catégorie" }, - "ABOUT": { - "TITLE": "À propos d'IPTVnator", - "VERSION": "Version", - "TWITTER_TOOLTIP": "Partager sur Twitter", - "GITHUB_TOOLTIP": "Dépôt ITPVnator sur GitHub", - "BUY_ME_A_COFFEE_TOOLTIP": "Buy me a coffee" - }, - "REFRESH": "Rafraîchir", - "UPDATE_AVAILABLE": "Mise à jour disponible" + "INFORMATION": "Information", + "REMOTE_CONTROL": { + "TITLE": "Télécommande", + "UP_CHANNEL": "Chaîne précédente", + "DOWN_CHANNEL": "Chaîne suivante", + "HEADER": "Télécommande IPTVNator", + "FOOTER": "Télécommande IPTVNator" + } } diff --git a/apps/web/src/assets/i18n/pt.json b/apps/web/src/assets/i18n/pt.json index 8b4b6c049..5e270c96d 100644 --- a/apps/web/src/assets/i18n/pt.json +++ b/apps/web/src/assets/i18n/pt.json @@ -15,6 +15,14 @@ "PLAYLISTS": { "NO_PLAYLISTS": "Nenhuma playlist foi adicionada", "ADD_FIRST": "Por favor, adicione sua primeira playlist", + "WELCOME_TITLE": "Bem-vindo ao IPTVnator", + "WELCOME_DESCRIPTION": "Comece sua jornada de streaming adicionando sua primeira playlist. Conecte-se ao seu serviço de IPTV preferido e aproveite TV ao vivo, filmes e séries.", + "ADD_YOUR_FIRST": "Adicionar sua primeira playlist", + "FEATURE_M3U": "Arquivos M3U/M3U8", + "FEATURE_XTREAM": "Xtream Codes", + "FEATURE_STALKER": "Portal Stalker", + "NO_RESULTS_TITLE": "Nenhuma playlist encontrada", + "NO_RESULTS_DESCRIPTION": "Nenhuma playlist corresponde à sua pesquisa. Tente ajustar os termos de pesquisa ou limpe o filtro para ver todas as playlists.", "ADDED_VIA_URL": "Adicionado via upload de URL. URL:", "ADDED_VIA_FILE": "Adicionado via upload de arquivo", "XTREAM_PLAYLIST": "Playlist Xtream", @@ -24,6 +32,7 @@ "SHOW_DETAILS": "Mostrar detalhes da playlist", "REMOVE": "Remover playlist", "SEARCH_PLAYLISTS": "Pesquisar playlists por título", + "AUTO_REFRESH_ENABLED": "Atualização automática ativada", "INFO_DIALOG": { "PLAYLIST_DETAILS": "Detalhes da playlist", "TITLE": "Título", @@ -54,6 +63,14 @@ }, "UPDATED": "Atualizado", "REFRESH": "Atualizar playlist", + "REFRESH_XTREAM": "Atualizar playlist Xtream do servidor", + "REFRESH_XTREAM_DIALOG": { + "TITLE": "Atualizar playlist Xtream", + "MESSAGE": "Isso excluirá as categorias e streams armazenados localmente e reimportará tudo do servidor remoto. Seus favoritos e itens visualizados recentemente serão preservados. Deseja continuar?", + "STARTED": "Atualização iniciada. Navegando para a playlist...", + "ERROR": "Falha ao atualizar a playlist. Tente novamente." + }, + "AUTO_REFRESH_UPDATE_SUCCESS": "Sucesso! As playlists foram atualizadas com sucesso", "GLOBAL_FAVORITES": "Favoritos globais", "GLOBAL_FAVORITES_DESCRIPTION": "Playlist gerada automaticamente com favoritos agregados de todas as playlists", "MY_PLAYLISTS": "Minhas playlists", @@ -156,7 +173,7 @@ "REMOTE_CONTROL": "Controle remoto", "REMOTE_CONTROL_DESCRIPTION": "Ativar controle remoto do aplicativo.", "REMOTE_CONTROL_PORT": "Porta de controle remoto", - "REMOTE_CONTROL_PORT_DESCRIPTION": "Porta usada para controle remoto do aplicativo. A porta 3000 é usada por padrão." + "REMOTE_CONTROL_PORT_DESCRIPTION": "Porta usada para controle remoto do aplicativo. A porta 8765 é usada por padrão." }, "THEMES": { "DARK_THEME": "Tema escuro", diff --git a/apps/web/src/assets/i18n/zhtw.json b/apps/web/src/assets/i18n/zhtw.json index 183636c9e..d0cfc61b6 100644 --- a/apps/web/src/assets/i18n/zhtw.json +++ b/apps/web/src/assets/i18n/zhtw.json @@ -1,5 +1,6 @@ { "CLOSE": "關閉", + "PLAYLISTS": "播放清單", "HOME": { "TITLE": "IPTVnator", "SUBTITLE": "請從列表中選擇一個播放清單,或透過檔案上傳或網址新增新播放清單", @@ -8,11 +9,22 @@ "FILE_UPLOAD": "透過檔案上傳新增", "URL_UPLOAD": "透過網址新增", "TEXT_IMPORT": "以文字匯入", - "STALKER_PORTAL_IMPORT": "Add Stalker Portal" + "XTREME_IMPORT": "新增 Xtreme Code", + "STALKER_PORTAL_IMPORT": "新增 Stalker Portal" }, "PLAYLISTS": { "NO_PLAYLISTS": "尚未新增播放清單", "ADD_FIRST": "請從其他分頁新增您的第一個播放清單", + "WELCOME_TITLE": "歡迎使用 IPTVnator", + "WELCOME_DESCRIPTION": "透過新增您的第一個播放清單開始串流之旅。連接您喜愛的 IPTV 服務,享受直播電視、電影和影集。", + "ADD_YOUR_FIRST": "新增您的第一個播放清單", + "FEATURE_M3U": "M3U/M3U8 檔案", + "FEATURE_XTREAM": "Xtream Codes", + "FEATURE_STALKER": "Stalker Portal", + "NO_RESULTS_TITLE": "找不到播放清單", + "NO_RESULTS_DESCRIPTION": "沒有符合您搜尋條件的播放清單。請嘗試調整搜尋詞或清除篩選條件以查看所有播放清單。", + "XTREAM_PLAYLIST": "Xtream 播放清單", + "STALKER_PORTAL": "Stalker Portal", "ADDED_VIA_URL": "透過網址上傳。網址:", "ADDED_VIA_FILE": "透過檔案上傳", "CHANNELS": "頻道", @@ -35,22 +47,36 @@ "AUTO_UPDATE_DESCRIPTION": "如果啟動自動重新整理功能,則每次啟動應用程式時都將自動更新播放清單。", "CUSTOM_USER_AGENT": "部分 IPTV 服務提供者需要特定的 User-Agent 才能播放他們的播放清單。", "EXPORT_PLAYLIST": "以 m3u 格式匯出播放清單", - "PASSWORD": "Password", - "SERVER_URL": "Server URL", - "USERNAME": "Username", - "MAC_ADDRESS": "Mac Address" + "PASSWORD": "密碼", + "SERVER_URL": "伺服器網址", + "USERNAME": "使用者名稱", + "MAC_ADDRESS": "Mac 位址", + "PLAYLIST_EXPORT_SUCCESS": "播放清單已成功匯出。", + "PLAYLIST_EXPORT_ERROR": "錯誤:播放清單匯出失敗。" }, "REMOVE_DIALOG": { "TITLE": "移除播放清單", - "MESSAGE": "您確定要完全刪除此播放清單嗎?" + "MESSAGE": "您確定要完全刪除此播放清單嗎?", + "SUCCESS": "播放清單已成功移除" }, "UPDATED": "已更新", "REFRESH": "重新整理播放清單", + "AUTO_REFRESH_ENABLED": "已啟用自動重新整理", + "REFRESH_XTREAM": "從遠端重新整理 Xtream 播放清單", + "REFRESH_XTREAM_DIALOG": { + "TITLE": "重新整理 Xtream 播放清單", + "MESSAGE": "這將刪除本機快取的類別和串流,並從遠端伺服器重新匯入所有內容。您的最愛和最近觀看的項目將會保留。確定要繼續嗎?", + "STARTED": "已開始重新整理。正在導向播放清單...", + "ERROR": "重新整理播放清單失敗。請重試。" + }, "GLOBAL_FAVORITES": "全域我的最愛", "GLOBAL_FAVORITES_DESCRIPTION": "從所有播放清單中自動產生的匯總我的最愛清單", "MY_PLAYLISTS": "我的播放清單", "MY_PLAYLISTS_SUBTITLE": "所有可用清單", - "PLAYLIST_UPDATE_SUCCESS": "成功!播放清單已成功更新。" + "PLAYLIST_UPDATE_SUCCESS": "成功!播放清單已成功更新。", + "PLAYLIST_UPDATE_ERROR": "更新播放清單詳細資訊時發生錯誤。", + "AUTO_REFRESH_UPDATE_SUCCESS": "成功!播放清單已成功更新", + "SEARCH_PLAYLISTS": "依標題搜尋播放清單" }, "FILE_UPLOAD": { "DRAG_DROP": "在此處拖放檔案", @@ -68,8 +94,20 @@ "BUTTON_LABEL": "匯入" }, "STALKER_PORTAL": { - "ADD": "Add", - "TITLE": "Title" + "ADD": "新增", + "TITLE": "標題", + "MAC_ADDRESS": "Mac 位址", + "SERVER_URL": "伺服器網址", + "URL_VALIDATION_ERROR": "必須是有效的網址並包含協定(例如 http://example.com/c 或 https://example.com/stalker_portal/c)" + }, + "XTREAM_PLAYLIST": { + "TITLE": "播放清單標題", + "SERVER_URL": "伺服器網址", + "USERNAME": "使用者名稱", + "PASSWORD": "密碼", + "ADD": "新增", + "TEST_CREDENTIALS": "測試憑證", + "URL_VALIDATION_ERROR": "必須是有效的網址並包含協定(例如 http://example.com 或 https://example.com:4324)" } }, "SETTINGS": { @@ -112,10 +150,16 @@ }, "IMPORT_ERROR": "匯入錯誤,請嘗試另外一個檔案。", "PLAYLISTS_REMOVED": "所有播放清單已移除。", - "VLC_PLAYER_PATH_LABEL": "VLC path", - "VLC_PLAYER_PATH_DESCRIPTION": "Set path to VLC player in your system. It will use the provided path to a VLC binary instead of the default path for our system.", - "VLC_PLAYER_PATH": "VLC player path", - "MPV_PLAYER_PATH_LABEL": "mpv path" + "MPV_PLAYER_PATH_LABEL": "mpv 路徑", + "MPV_PLAYER_PATH_DESCRIPTION": "設定您系統中 mpv 播放器的路徑。將使用提供的 mpv 二進位檔路徑,而非 $PATH 中的預設路徑。", + "MPV_PLAYER_PATH": "mpv 播放器路徑", + "VLC_PLAYER_PATH_LABEL": "VLC 路徑", + "VLC_PLAYER_PATH_DESCRIPTION": "設定您系統中 VLC 播放器的路徑。將使用提供的 VLC 二進位檔路徑,而非系統預設路徑。", + "VLC_PLAYER_PATH": "VLC 播放器路徑", + "REMOTE_CONTROL": "遠端控制", + "REMOTE_CONTROL_DESCRIPTION": "啟用應用程式遠端控制功能。", + "REMOTE_CONTROL_PORT": "遠端控制連接埠", + "REMOTE_CONTROL_PORT_DESCRIPTION": "用於遠端控制應用程式的連接埠。預設使用連接埠 8765。" }, "THEMES": { "DARK_THEME": "深色主題", @@ -192,7 +236,7 @@ "WHAT_IS_NEW": "更新內容", "ABOUT": "關於", "ABOUT_ARIA": "關於本應用程式", - "SUPPORT_PROJECT": "Support project" + "SUPPORT_PROJECT": "支持專案" }, "ABOUT": { "TITLE": "關於 IPTVnator", @@ -205,37 +249,88 @@ "UPDATE_AVAILABLE": "有可用的更新", "REFRESH": "重新整理", "XTREAM": { - "RELEASE_DATE": "Release date", - "ACTORS": "Actors", - "PLAY": "Play", - "GENRE": "Genre", - "DURATION": "Duration", - "COUNTRY": "Country", - "NAME": "Name", - "DIRECTOR": "Director", - "CAST": "Cast", - "RATING": "Rating" + "PLAY": "播放", + "NAME": "名稱", + "RELEASE_DATE": "發行日期", + "GENRE": "類型", + "COUNTRY": "國家", + "ACTORS": "演員", + "DIRECTOR": "導演", + "DURATION": "片長", + "CAST": "演員陣容", + "EPISODE_RUN_TIME": "集數時長", + "RATING": "評分", + "IMDB_RATING": "IMDB 評分", + "KINOPOISK_RATING": "Kinopoisk 評分", + "DESCRIPTION": "描述", + "YEAR": "年份", + "AGE": "年齡", + "YOUTUBE_TRAILER": "YouTube 預告片", + "EPISODE": "集數" }, "PORTALS": { - "ALL_CATEGORIES": "All categories", - "ADD_TO_FAVORITES": "Add to favorites", - "REMOVE_FROM_FAVORITES": "Remove from favorites", - "MY_FAVORITES": "My favorites", + "ALL_CATEGORIES": "所有類別", + "MY_FAVORITES": "我的最愛", + "ADD_TO_FAVORITES": "新增至最愛", + "REMOVE_FROM_FAVORITES": "從最愛中移除", + "REMOVED_FROM_FAVORITES": "已從最愛中移除", + "ADDED_TO_FAVORITES": "已新增至最愛", + "SIDEBAR": { + "MAIN": "主頁", + "MOVIES": "電影", + "LIVE_TV": "直播電視", + "SERIES": "影集", + "LIBRARY": "媒體庫", + "SEARCH": "搜尋", + "RECENT": "最近觀看", + "FAVORITES": "我的最愛", + "HOME": "首頁", + "PLAYLIST_INFO": "播放清單資訊", + "ACCOUNT_INFO": "帳戶資訊" + }, "ERROR_VIEW": { - "DELETE": "", "ACCOUNT_EXPIRED": { - "DESCRIPTION": "This account has been expired. Please check the credentials in playlist settings or remove it." + "TITLE": "帳戶已過期", + "DESCRIPTION": "此帳戶已過期。請在播放清單設定中檢查憑證或將其移除。" + }, + "UNAUTHORIZED": { + "TITLE": "未授權", + "DESCRIPTION": "請在播放清單設定中檢查憑證或將其移除。" + }, + "NOT_FOUND": { + "TITLE": "找不到入口網站", + "DESCRIPTION": "請在播放清單設定中檢查憑證和入口網站網址或將其移除。" + }, + "EMPTY_CATEGORY": { + "TITLE": "空類別", + "DESCRIPTION": "此類別沒有內容,請選擇其他類別或更改內容類型" }, "UNKNOWN_ERROR": { - "TITLE": "Something went wrong", - "DESCRIPTION": "Unknown error, please try again later" + "TITLE": "發生錯誤", + "DESCRIPTION": "未知錯誤,請稍後再試" }, - "PLAYLIST_SETTINGS": "Playlist Settings", - "UNAUTHORIZED": { - "DESCRIPTION": "Please check the credentials in playlist settings or remove it." - } + "NO_CATEGORY_SELECTED": { + "TITLE": "未選擇類別", + "DESCRIPTION": "請選擇一個類別以查看內容" + }, + "PLAYLIST_SETTINGS": "播放清單設定", + "HOME": "首頁", + "DELETE": "刪除" }, - "REMOVED_FROM_FAVORITES": "Removed from favorites", - "ADDED_TO_FAVORITES": "Added to favorites" + "EMPTY_LIST_VIEW": { + "TITLE": "找不到結果", + "NO_SEARCH_RESULTS": "找不到任何內容,請嘗試更改搜尋條件" + }, + "STREAM_URL_COPIED": "串流網址已複製到剪貼簿", + "COPY_STREAM_URL": "複製串流網址", + "SELECT_CATEGORY": "選擇類別" + }, + "INFORMATION": "資訊", + "REMOTE_CONTROL": { + "TITLE": "遠端控制", + "UP_CHANNEL": "上一頻道", + "DOWN_CHANNEL": "下一頻道", + "HEADER": "IPTVNator 遠端控制", + "FOOTER": "IPTVNator 遠端控制" } }