diff --git a/locales/fr.json b/locales/fr.json new file mode 100644 index 000000000..c2515c984 --- /dev/null +++ b/locales/fr.json @@ -0,0 +1,95 @@ +{ + "File": "Fichier", + "Quit": "Quitter", + "Edit": "Édition", + "Undo": "Annuler", + "Redo": "Rétablir", + "Cut": "Couper", + "Copy": "Copier", + "Paste": "Coller", + "Delete": "Supprimer", + "Select all": "Séléctionner tout", + "View": "Affichage", + "Reload": "Actualiser", + "Force Reload": "Forcer l'actualisation", + "Toggle Developer Tools": "Outils de Développement", + "Actual size": "Zoom 100%", + "Zoom in": "Zoom +", + "Zoom out": "Zoom -", + "Toggle fullscreen": "Plein Écran", + "Window": "Fenêtre", + "Minimize": "Réduire", + "Close": "Fermer", + "FreeTube": "FreeTube", + "Subscriptions": "Abonnements", + "Featured": "Mis en Avant", + "Most Popular": "Vidéos Populaires", + "Saved": "Sauvegardée", + "Playlists": "Playlists", + "History": "Historique", + "Settings": "Paramêtre", + "About": "À Propos", + "Search / Go to URL": "Rechercher / Aller vers le lien", + "Search Results": "Résultats", + "Subscriber": "Abonné(e)", + "Subscribers": "Abonné(e)s", + "Video": "Vidéo", + "Videos": "Vidéos", + "View Full Playlist": "Voir Playlist Complète", + "Live Now": "En Direct", + "Fetch more results": "Voir plus de résultats", + "Fetching results. Please wait": "Récupération des résultats. Patientez", + "Latest Subscriptions": "Dernières Vidéos de vos Abonnements", + "Save Video": "Savegarder cette Vidéo", + "Remove Saved Video": "Supprimer cette Vidéo Sauvegardée", + "Open in YouTube": "Ouvrir sur YouTube", + "Copy YouTube Link": "Copier Lien YouTube", + "Open in HookTube": "Ouvrir sur HookTube", + "Copy HookTube Link": "Ouvrir sur HookTube", + "URL has been copied to the clipboard": "Lien copié dans le Presse-Papier", + "Found valid URL for 480p, but returned a 404. Video type might be available in the future.": "Lien vers 480p trouvé, mais une erreur fut retournée. Ce type de vidéo pourrait être disponnible dans le futur.", + "Save": "Sauvegarder", + "Mini Player": "Mini Lecteur", + "View": "Vue", + "Views": "Vues", + "Subscribe": "S'abonner", + "Unsubscribe": "Se Désabonner", + "Published on": "Publiée le", + "Jan": "Janv.", + "Feb": "Févr.", + "Mar": "Mars", + "Apr": "Avr.", + "May": "Mai", + "Jun": "Juin", + "Jul": "Juill.", + "Aug": "Août", + "Sep": "Sept", + "Oct": "Oct", + "Nov": "Nov", + "Dec": "Déc", + "Show Comments": "Voir Commentaires", + "Max of 100": "100 Maximum", + "Recommendations": "Recommendations", + "Latest Subscriptions": "Dernières Vidéos de vos Abonnements", + "Getting Subscriptions. Please wait...": "Récupération des résultats. Patientez...", + "Your Subscription list is currently empty. Start adding subscriptions to see them here.": "Ajoutez des abonnements pour les voirs ici.", + "Saved Videos": "Vidéos Sauvegardées", + "Watch History": "Historique", + "API Key": "API key", + "Set API Key: Leave blank to use default": "Set API key: Leave blank to use default", + "Use Dark Theme": "Thème Sombre", + "Import Subscriptions": "Importer vos Abonnements", + "Export Subscriptions": "Exporter vos Abonnements", + "Clear History": "Supprimer l'Historique", + "Are you sure you want to delete your history?": "Êtes vous sur de vouloir supprimer votre historique ?", + "Clear Saved Videos": "Supprimer les vidéos sauvegardées", + "Are you sure you want to remove all saved videos?": "Êtes vous sur de vouloir supprimer toutes les vidéos sauvegardées ?", + "Clear Subscriptions": "Supprimer les abonnements", + "Are you sure you want to remove all subscriptions?": "Êtes vous sur de vouloir supprimer toutes les abonnements ?", + "Save Settings": "Sauvegarder", + "Yes": "Oui", + "No": "Non", + "Beta": "Beta", + "This software is FOSS and released under the GNU Public License v3+.": "Ce logiciel "Copyleft" est licencé GPLv3+.", + "Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.": "Vous avez trouvé(e) un bug ? Vous voulez suggerer une fonctionnalité ? Vous voulez aider ? N'hesitez pas à aller voir notre page Github. Les pull requests sont les bienvenus." +} diff --git a/src/js/events.js b/src/js/events.js index 6b1e48f16..53490d948 100644 --- a/src/js/events.js +++ b/src/js/events.js @@ -251,13 +251,23 @@ $(document).on('click', '#confirmNo', hideConfirmFunction); // Open links externally by default $(document).on('click', 'a[href^="http"]', (event) => { let el = event.currentTarget; - event.preventDefault(); - shell.openExternal(el.href); + if (!el.href.includes('freetube')) { + event.preventDefault(); + shell.openExternal(el.href); + } + else{ + window.open(el.href,"_self") + } }); // Open links externally on middle click. $(document).on('auxclick', 'a[href^="http"]', (event) => { let el = event.currentTarget; - event.preventDefault(); - shell.openExternal(el.href); + if (!el.href.includes('freetube')) { + event.preventDefault(); + shell.openExternal(el.href); + } + else{ + window.open(el.href,"_self") + } }); diff --git a/src/js/player.js b/src/js/player.js index d559c8693..33602e480 100644 --- a/src/js/player.js +++ b/src/js/player.js @@ -439,6 +439,9 @@ function parseDescription(descriptionText) { descriptionText = descriptionText.replace(/\&v.+?(?=\")/g, ''); descriptionText = descriptionText.replace(/\&redirect\-token.+?(?=\")/g, ''); descriptionText = descriptionText.replace(/\&redir\_token.+?(?=\")/g, ''); + descriptionText = descriptionText.replace(/href\=\"http(s)?\:\/\/youtube\.com/g, 'href="freetube://https://youtube.com'); + descriptionText = descriptionText.replace(/href\=\"\/watch/g, 'href="freetube://https://youtube.com'); + descriptionText = descriptionText.replace(/href\=\"\/results\?search\_query\=/g, 'href="freetube://'); descriptionText = descriptionText.replace(/yt\.www\.watch\.player\.seekTo/g, 'changeDuration'); return descriptionText; diff --git a/src/js/videos.js b/src/js/videos.js index 737a1bd72..af14c4b5e 100644 --- a/src/js/videos.js +++ b/src/js/videos.js @@ -245,7 +245,7 @@ function parseSearchText(url = '') { if (url === '') { input = document.getElementById('search').value; } else { - input = url; + input = url.replace(/freetube\:\/\//, ''); } if (input === '') { @@ -274,11 +274,10 @@ function parseSearchText(url = '') { goToChannel(urlSplit[4]); } else { ft.log('Video not found'); + document.getElementById('search').value = decodeURIComponent(input); loadingView.seen = true; search(); } - - } /**