Files
MyTube/frontend/src/utils/locales/fr.ts

229 lines
11 KiB
TypeScript

export const fr = {
// Header
myTube: "MyTube",
manage: "Gérer",
settings: "Paramètres",
logout: "Déconnexion",
pleaseEnterUrlOrSearchTerm: "Veuillez entrer une URL de vidéo ou un terme de recherche",
unexpectedErrorOccurred: "Une erreur inattendue s'est produite. Veuillez réessayer.",
uploadVideo: "Mettre en ligne une vidéo",
enterUrlOrSearchTerm: "Entrez une URL YouTube/Bilibili ou un terme de recherche",
manageVideos: "Gérer les vidéos",
// Home
pasteUrl: "Coller l'URL de la vidéo ou de la collection",
download: "Télécharger",
search: "Rechercher",
recentDownloads: "Téléchargements récents",
noDownloads: "Aucun téléchargement pour le moment",
downloadStarted: "Téléchargement commencé",
downloadFailed: "Échec du téléchargement",
loadingVideos: "Chargement des vidéos...",
searchResultsFor: "Résultats de recherche pour",
fromYourLibrary: "De votre bibliothèque",
noMatchingVideos: "Aucune vidéo correspondante dans votre bibliothèque.",
fromYouTube: "De YouTube",
loadingYouTubeResults: "Chargement des résultats YouTube...",
noYouTubeResults: "Aucun résultat YouTube trouvé",
noVideosYet: "Aucune vidéo pour le moment. Soumettez une URL YouTube pour télécharger votre première vidéo !",
views: "vues",
// Settings
general: "Général",
security: "Sécurité",
videoDefaults: "Paramètres par défaut du lecteur",
downloadSettings: "Paramètres de téléchargement",
language: "Langue",
enableLogin: "Activer la protection par connexion",
password: "Mot de passe",
passwordHelper: "Laisser vide pour conserver le mot de passe actuel, ou taper pour changer",
passwordSetHelper: "Définir un mot de passe pour accéder à l'application",
autoPlay: "Lecture automatique des vidéos",
autoLoop: "Boucle automatique des vidéos",
maxConcurrent: "Téléchargements simultanés max",
saveSettings: "Enregistrer les paramètres",
saving: "Enregistrement...",
backToManage: "Retour à la gestion",
settingsSaved: "Paramètres enregistrés avec succès",
settingsFailed: "Échec de l'enregistrement des paramètres",
debugMode: "Mode débogage",
debugModeDescription: "Afficher ou masquer les messages de la console (nécessite une actualisation)",
tagsManagement: "Gestion des tags",
newTag: "Nouveau tag",
tags: "Tags",
tagsManagementNote: "N'oubliez pas de cliquer sur \"Enregistrer les paramètres\" après avoir ajouté ou supprimé des tags pour appliquer les modifications.",
// Database
database: "Base de données",
migrateDataDescription: "Migrer les données des fichiers JSON hérités vers la nouvelle base de données SQLite. Cette action peut être exécutée plusieurs fois en toute sécurité (les doublons seront ignorés).",
migrateDataButton: "Migrer les données depuis JSON",
scanFiles: "Scanner les fichiers",
scanFilesSuccess: "Scan terminé. {count} nouvelles vidéos ajoutées.",
scanFilesFailed: "Échec du scan",
migrateConfirmation: "Êtes-vous sûr de vouloir migrer les données ? Cela peut prendre quelques instants.",
migrationResults: "Résultats de la migration",
migrationReport: "Rapport de migration",
migrationSuccess: "Migration terminée. Voir les détails dans l'alerte.",
migrationNoData: "Migration terminée mais aucune donnée trouvée.",
migrationFailed: "Échec de la migration",
migrationWarnings: "AVERTISSEMENTS",
migrationErrors: "ERREURS",
itemsMigrated: "éléments migrés",
fileNotFound: "Fichier non trouvé à",
noDataFilesFound: "Aucun fichier de données trouvé à migrer. Veuillez vérifier vos mappages de volume.",
removeLegacyData: "Supprimer les données héritées",
removeLegacyDataDescription: "Supprimer les anciens fichiers JSON (videos.json, collections.json, etc.) pour libérer de l'espace disque. Ne le faites qu'après avoir vérifié que vos données ont été migrées avec succès.",
removeLegacyDataConfirmTitle: "Supprimer les données héritées ?",
removeLegacyDataConfirmMessage: "Êtes-vous sûr de vouloir supprimer les fichiers de données JSON hérités ? Cette action est irréversible.",
legacyDataDeleted: "Données héritées supprimées avec succès.",
deleteLegacyDataButton: "Supprimer les données héritées",
cleanupTempFiles: "Nettoyer les fichiers temporaires",
cleanupTempFilesDescription: "Supprimer tous les fichiers de téléchargement temporaires (.ytdl, .part) du répertoire des téléversements. Cela aide à libérer de l'espace disque des téléchargements incomplets ou annulés.",
cleanupTempFilesConfirmTitle: "Nettoyer les fichiers temporaires?",
cleanupTempFilesConfirmMessage: "Cela supprimera définitivement tous les fichiers .ytdl et .part dans le répertoire des téléversements. Assurez-vous qu'il n'y a pas de téléchargements actifs avant de continuer.",
cleanupTempFilesActiveDownloads: "Impossible de nettoyer pendant que des téléchargements sont actifs. Veuillez attendre la fin de tous les téléchargements ou les annuler d'abord.",
cleanupTempFilesSuccess: "{count} fichier(s) temporaire(s) supprimé(s) avec succès.",
cleanupTempFilesFailed: "Échec du nettoyage des fichiers temporaires",
// Manage
manageContent: "Gérer le contenu",
videos: "Vidéos",
collections: "Collections",
allVideos: "Toutes les vidéos",
delete: "Supprimer",
backToHome: "Retour à l'accueil",
confirmDelete: "Êtes-vous sûr de vouloir supprimer ceci ?",
deleteSuccess: "Supprimé avec succès",
deleteFailed: "Échec de la suppression",
noVideos: "Aucune vidéo trouvée",
noCollections: "Aucune collection trouvée",
searchVideos: "Rechercher des vidéos...",
thumbnail: "Miniature",
title: "Titre",
author: "Auteur",
authors: "Auteurs",
created: "Créé",
name: "Nom",
actions: "Actions",
deleteCollection: "Supprimer la collection",
deleteVideo: "Supprimer la vidéo",
noVideosFoundMatching: "Aucune vidéo ne correspond à votre recherche.",
refreshThumbnail: "Actualiser la miniature",
// Video Player
playing: "Lecture",
paused: "Pause",
next: "Suivant",
previous: "Précédent",
loop: "Boucle",
autoPlayOn: "Lecture auto activée",
autoPlayOff: "Lecture auto désactivée",
videoNotFound: "Vidéo non trouvée",
videoNotFoundOrLoaded: "Vidéo non trouvée ou impossible à charger.",
deleting: "Suppression...",
addToCollection: "Ajouter à la collection",
originalLink: "Lien original",
source: "Source :",
addedDate: "Date d'ajout :",
latestComments: "Derniers commentaires",
noComments: "Aucun commentaire disponible.",
upNext: "À suivre",
noOtherVideos: "Aucune autre vidéo disponible",
currentlyIn: "Actuellement dans :",
collectionWarning: "L'ajout à une autre collection la supprimera de la collection actuelle.",
addToExistingCollection: "Ajouter à une collection existante :",
selectCollection: "Sélectionner une collection",
add: "Ajouter",
createNewCollection: "Créer une nouvelle collection :",
collectionName: "Nom de la collection",
create: "Créer",
removeFromCollection: "Retirer de la collection",
confirmRemoveFromCollection: "Êtes-vous sûr de vouloir retirer cette vidéo de la collection ?",
remove: "Retirer",
loadingVideo: "Chargement de la vidéo...",
current: "(Actuel)",
rateThisVideo: "Noter cette vidéo",
enterFullscreen: "Plein écran",
exitFullscreen: "Quitter le plein écran",
editTitle: "Modifier le titre",
titleUpdated: "Titre mis à jour avec succès",
titleUpdateFailed: "Échec de la mise à jour du titre",
thumbnailRefreshed: "Miniature actualisée avec succès",
thumbnailRefreshFailed: "Échec de l'actualisation de la miniature",
videoUpdated: "Vidéo mise à jour avec succès",
videoUpdateFailed: "Échec de la mise à jour de la vidéo",
failedToLoadVideos: "Échec du chargement des vidéos. Veuillez réessayer plus tard.",
videoRemovedSuccessfully: "Vidéo supprimée avec succès",
failedToDeleteVideo: "Échec de la suppression de la vidéo",
pleaseEnterSearchTerm: "Veuillez entrer un terme de recherche",
failedToSearch: "Échec de la recherche. Veuillez réessayer.",
searchCancelled: "Recherche annulée",
// Login
signIn: "Se connecter",
verifying: "Vérification...",
incorrectPassword: "Mot de passe incorrect",
loginFailed: "Échec de la vérification du mot de passe",
defaultPasswordHint: "Mot de passe par défaut : 123",
// Collection Page
loadingCollection: "Chargement de la collection...",
collectionNotFound: "Collection non trouvée",
noVideosInCollection: "Aucune vidéo dans cette collection.",
back: "Retour",
// Author Videos
loadVideosError: "Échec du chargement des vidéos. Veuillez réessayer plus tard.",
unknownAuthor: "Inconnu",
noVideosForAuthor: "Aucune vidéo trouvée pour cet auteur.",
// Delete Collection Modal
deleteCollectionTitle: "Supprimer la collection",
deleteCollectionConfirmation: "Êtes-vous sûr de vouloir supprimer la collection",
collectionContains: "Cette collection contient",
deleteCollectionOnly: "Supprimer la collection uniquement",
deleteCollectionAndVideos: "Supprimer la collection et toutes les vidéos",
// Common
loading: "Chargement...",
error: "Erreur",
success: "Succès",
cancel: "Annuler",
confirm: "Confirmer",
save: "Enregistrer",
on: "On",
off: "Off",
// Video Card
unknownDate: "Date inconnue",
part: "Partie",
collection: "Collection",
// Upload Modal
selectVideoFile: "Sélectionner un fichier vidéo",
pleaseSelectVideo: "Veuillez sélectionner un fichier vidéo",
uploadFailed: "Échec de la mise en ligne",
failedToUpload: "Échec de la mise en ligne de la vidéo",
uploading: "Mise en ligne...",
upload: "Mettre en ligne",
// Bilibili Modal
bilibiliCollectionDetected: "Collection Bilibili détectée",
bilibiliSeriesDetected: "Série Bilibili détectée",
multiPartVideoDetected: "Vidéo en plusieurs parties détectée",
collectionHasVideos: "Cette collection Bilibili contient {count} vidéos.",
seriesHasVideos: "Cette série Bilibili contient {count} vidéos.",
videoHasParts: "Cette vidéo Bilibili contient {count} parties.",
downloadAllVideos: "Télécharger les {count} vidéos",
downloadAllParts: "Télécharger les {count} parties",
downloadThisVideoOnly: "Télécharger cette vidéo uniquement",
downloadCurrentPartOnly: "Télécharger la partie actuelle uniquement",
processing: "Traitement...",
wouldYouLikeToDownloadAllParts: "Voulez-vous télécharger toutes les parties ?",
wouldYouLikeToDownloadAllVideos: "Voulez-vous télécharger toutes les vidéos ?",
allPartsAddedToCollection: "Toutes les parties seront ajoutées à cette collection",
allVideosAddedToCollection: "Toutes les vidéos seront ajoutées à cette collection",
queued: "En file d'attente",
waitingInQueue: "En attente dans la file"
};