mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 14:55:43 +00:00
606a150e01
* feat(settings): clock format setting (Auto / 24h / 12h) Reported on the Psysonic Discord — the Queue side panel's ETA label and the sleep-timer preview both render via `formatClockTime`, which just calls `toLocaleTimeString` and so follows the user's system locale. On en-US that means AM/PM, with no in-app way out. Add a tri-state **Clock Format** setting under **Settings → System → App Behavior**: * `auto` (default) — keep the existing locale-driven behaviour, so bestehende installs are unaffected on first launch. * `24h` — force 24-hour wall-clock output everywhere `formatClockTime` is used. * `12h` — force AM/PM output. Wired through `authStore` (`clockFormat`, `setClockFormat`), exposed via `CustomSelect` in `SystemTab`, and threaded into the two consumers (`QueueHeader`, `PlaybackDelayModal`) so they re-render on change. `formatClockTime` itself stays a pure helper — it accepts the setting as an optional second argument and maps it to `hour12`. Locale coverage: all nine bundled locales (en, de, es, fr, nl, nb, ru, zh, ro) get the four new settings strings. Pin tests added for the `setClockFormat` setter and the `hour12` mapping in `formatClockTime`. * docs(changelog): clock format setting + contributors (PR #742)
463 lines
30 KiB
TypeScript
463 lines
30 KiB
TypeScript
export const settings = {
|
||
title: 'Paramètres',
|
||
language: 'Langue',
|
||
languageEn: 'English',
|
||
languageDe: 'Deutsch',
|
||
languageEs: 'Español',
|
||
languageFr: 'Français',
|
||
languageNl: 'Nederlands',
|
||
languageNb: 'Norsk',
|
||
languageRu: 'Русский',
|
||
languageZh: '中文',
|
||
languageRo: 'Română',
|
||
font: 'Police',
|
||
fontHintOpenDyslexic: 'Adapté à la dyslexie · sans prise en charge du chinois',
|
||
theme: 'Thème',
|
||
appearance: 'Apparence',
|
||
servers: 'Serveurs',
|
||
serverName: 'Nom du serveur',
|
||
serverUrl: 'URL du serveur',
|
||
serverUrlPlaceholder: '192.168.1.100:4533 ou https://music.exemple.com',
|
||
serverUsername: 'Nom d\'utilisateur',
|
||
serverPassword: 'Mot de passe',
|
||
addServer: 'Ajouter un serveur',
|
||
addServerTitle: 'Ajouter un nouveau serveur',
|
||
useServer: 'Utiliser',
|
||
deleteServer: 'Supprimer',
|
||
noServers: 'Aucun serveur enregistré.',
|
||
serverActive: 'Actif',
|
||
confirmDeleteServer: 'Supprimer le serveur « {{name}} » ?',
|
||
serverConnecting: 'Connexion…',
|
||
serverConnected: 'Connecté !',
|
||
serverFailed: 'Connexion échouée.',
|
||
testBtn: 'Tester la connexion',
|
||
testingBtn: 'Test en cours…',
|
||
serverCompatible: 'Conçu pour Navidrome. Les autres serveurs compatibles Subsonic (Gonic, Airsonic, …) peuvent fonctionner avec des fonctionnalités réduites, car Psysonic utilise de nombreux endpoints d’API spécifiques à Navidrome.',
|
||
userMgmtTitle: 'Gestion des utilisateurs',
|
||
userMgmtDesc: 'Gérer les utilisateurs sur ce serveur. Nécessite des privilèges administrateur.',
|
||
userMgmtNoAdmin: 'Vous devez être administrateur pour gérer les utilisateurs sur ce serveur.',
|
||
userMgmtLoadError: 'Impossible de charger les utilisateurs.',
|
||
userMgmtLoadFriendly: 'Le serveur n\'a pas répondu — généralement ponctuel.',
|
||
userMgmtRetry: 'Réessayer',
|
||
userMgmtEmpty: 'Aucun utilisateur trouvé.',
|
||
userMgmtYouBadge: 'Vous',
|
||
userMgmtAdminBadge: 'Admin',
|
||
userMgmtAddUser: 'Ajouter un utilisateur',
|
||
userMgmtAddUserTitle: 'Nouvel utilisateur',
|
||
userMgmtEditUserTitle: 'Modifier l’utilisateur',
|
||
userMgmtUsername: 'Nom d’utilisateur',
|
||
userMgmtName: 'Nom affiché',
|
||
userMgmtEmail: 'E-mail',
|
||
userMgmtPassword: 'Mot de passe',
|
||
userMgmtPasswordEditHint: 'Saisir un nouveau mot de passe pour le modifier.',
|
||
userMgmtRoleAdmin: 'Admin',
|
||
userMgmtLibraries: 'Bibliothèques',
|
||
userMgmtLibrariesAdminHint: 'Les utilisateurs admin ont automatiquement accès à toutes les bibliothèques.',
|
||
userMgmtLibrariesEmpty: 'Aucune bibliothèque disponible sur ce serveur.',
|
||
userMgmtLibrariesValidation: 'Sélectionnez au moins une bibliothèque.',
|
||
userMgmtLibrariesUpdateError: 'Utilisateur enregistré, mais l\u2019attribution des bibliothèques a échoué',
|
||
userMgmtNoLibraries: 'Aucune bibliothèque attribuée',
|
||
userMgmtNeverSeen: 'Jamais',
|
||
userMgmtSave: 'Enregistrer',
|
||
userMgmtCancel: 'Annuler',
|
||
userMgmtDelete: 'Supprimer',
|
||
userMgmtEdit: 'Modifier',
|
||
userMgmtConfirmDelete: 'Supprimer l’utilisateur « {{username}} » ? Action irréversible.',
|
||
userMgmtCreateError: 'Impossible de créer l’utilisateur.',
|
||
userMgmtUpdateError: 'Impossible de mettre à jour l’utilisateur.',
|
||
userMgmtDeleteError: 'Impossible de supprimer l’utilisateur.',
|
||
userMgmtCreated: 'Utilisateur créé.',
|
||
userMgmtUpdated: 'Utilisateur mis à jour.',
|
||
userMgmtDeleted: 'Utilisateur supprimé.',
|
||
userMgmtValidationMissing: 'Nom d’utilisateur, nom affiché et mot de passe sont requis.',
|
||
userMgmtValidationMissingIdentity: 'Le nom d’utilisateur et le nom affiché sont requis.',
|
||
userMgmtMagicStringGenerate: 'Générer la chaîne magique',
|
||
userMgmtSaveAndMagicString: 'Enregistrer et obtenir la chaîne magique',
|
||
userMgmtMagicStringPasswordNavHint:
|
||
'Navidrome enregistrera ce mot de passe pour l’utilisateur. S’il diffère de l’actuel, le mot de passe de connexion sur le serveur sera mis à jour.',
|
||
userMgmtMagicStringPlaintextWarning:
|
||
'Partagez la chaîne magique avec prudence : elle contient un mot de passe non chiffré (l’encodage n’est pas du chiffrement). Quiconque possède la chaîne complète peut se connecter en tant que cet utilisateur.',
|
||
userMgmtMagicStringCopied: 'Chaîne magique copiée dans le presse-papiers.',
|
||
userMgmtMagicStringCopyFailed: 'Impossible de copier dans le presse-papiers.',
|
||
userMgmtMagicStringLoginFailed: 'Échec de la vérification du mot de passe — identifiants non confirmés.',
|
||
userMgmtMagicStringModalTitle: 'Générer la chaîne magique',
|
||
userMgmtMagicStringModalDesc: 'Saisissez le mot de passe Subsonic de « {{username}} ». Il est inclus dans la chaîne magique copiée.',
|
||
userMgmtMagicStringModalConfirm: 'Copier la chaîne',
|
||
audiomuseTitle: 'AudioMuse-AI (Navidrome)',
|
||
audiomuseDesc:
|
||
'Activez si ce serveur utilise le <pluginLink>plugin Navidrome AudioMuse-AI</pluginLink>. Active le mix instantané depuis un morceau et affiche les artistes similaires côté serveur au lieu de Last.fm sur les pages artiste.',
|
||
audiomuseIssueHint:
|
||
'Le mix instantané a échoué récemment — vérifiez le plugin Navidrome et l’API AudioMuse. Les artistes similaires utilisent Last.fm si le serveur ne renvoie rien.',
|
||
connected: 'Connecté',
|
||
failed: 'Échec',
|
||
eqTitle: 'Égaliseur',
|
||
eqEnabled: 'Activer l\'égaliseur',
|
||
eqPreset: 'Préréglage',
|
||
eqPresetCustom: 'Personnalisé',
|
||
eqPresetBuiltin: 'Préréglages intégrés',
|
||
eqPresetCustomGroup: 'Mes préréglages',
|
||
eqSavePreset: 'Enregistrer comme préréglage',
|
||
eqPresetName: 'Nom du préréglage…',
|
||
eqDeletePreset: 'Supprimer le préréglage',
|
||
eqResetBands: 'Réinitialiser à plat',
|
||
eqPreGain: 'Pré-amplification',
|
||
eqResetPreGain: 'Réinitialiser la pré-amplification',
|
||
eqAutoEqTitle: 'Recherche AutoEQ',
|
||
eqAutoEqPlaceholder: 'Rechercher un casque / IEM…',
|
||
eqAutoEqSearching: 'Recherche…',
|
||
eqAutoEqNoResults: 'Aucun résultat',
|
||
eqAutoEqError: 'Échec de la recherche',
|
||
eqAutoEqRateLimit: 'Limite GitHub atteinte — réessayez dans une minute',
|
||
eqAutoEqFetchError: 'Impossible de charger le profil EQ',
|
||
lfmTitle: 'Last.fm',
|
||
lfmConnect: 'Connecter avec Last.fm',
|
||
lfmConnecting: 'En attente d\'autorisation…',
|
||
lfmConfirm: 'J\'ai autorisé l\'application',
|
||
lfmConnected: 'Connecté en tant que',
|
||
lfmDisconnect: 'Déconnecter',
|
||
lfmConnectDesc: 'Connectez votre compte Last.fm pour activer le scrobbling et les mises à jour « En cours de lecture » depuis Psysonic — aucune configuration Navidrome requise.',
|
||
lfmOpenBrowser: 'Une fenêtre de navigateur s\'ouvrira. Autorisez Psysonic sur Last.fm, puis cliquez sur le bouton ci-dessous.',
|
||
lfmScrobbles: '{{n}} scrobbles',
|
||
lfmMemberSince: 'Membre depuis {{year}}',
|
||
scrobbleEnabled: 'Scrobbling activé',
|
||
scrobbleDesc: 'Envoyer les morceaux à Last.fm après 50% d\'écoute',
|
||
behavior: 'Comportement de l\'application',
|
||
cacheTitle: 'Taille max. du stockage',
|
||
cacheDesc: 'Pochettes et images d\'artistes. Quand le cache est plein, les entrées les plus anciennes sont supprimées automatiquement. Les albums hors ligne ne sont pas supprimés automatiquement, mais le seront lors d\'un nettoyage manuel.',
|
||
cacheUsedImages: 'Images :',
|
||
cacheUsedOffline: 'Pistes hors ligne :',
|
||
cacheUsedHot: 'Espace disque :',
|
||
hotCacheTrackCount: 'Pistes en cache :',
|
||
cacheMaxLabel: 'Taille max.',
|
||
cacheClearBtn: 'Vider le cache',
|
||
cacheClearWarning: 'Cela supprimera aussi tous les albums hors ligne de la bibliothèque.',
|
||
cacheClearConfirm: 'Tout supprimer',
|
||
cacheClearCancel: 'Annuler',
|
||
offlineDirTitle: 'Bibliothèque hors ligne (intégrée)',
|
||
offlineDirDesc: 'Emplacement de stockage des titres rendus disponibles hors ligne dans Psysonic.',
|
||
offlineDirDefault: 'Par défaut (données d\'application)',
|
||
offlineDirChange: 'Changer le dossier',
|
||
offlineDirClear: 'Réinitialiser',
|
||
offlineDirHint: 'Les nouveaux téléchargements utiliseront cet emplacement. Les téléchargements existants restent à leur emplacement d\'origine.',
|
||
hotCacheTitle: 'Cache de lecture à chaud',
|
||
hotCacheDisclaimer: 'Précharge les titres à venir dans la file et conserve les précédents. Si activé : espace disque et réseau.',
|
||
hotCacheDirDefault: 'Par défaut (données d\'application)',
|
||
hotCacheDirChange: 'Changer le dossier',
|
||
hotCacheDirClear: 'Réinitialiser',
|
||
hotCacheDirHint: 'Changer de dossier réinitialise l’index dans l’app ; les fichiers déjà écrits restent à l’ancien emplacement.',
|
||
hotCacheEnabled: 'Activer le cache de lecture à chaud',
|
||
hotCacheMaxMb: 'Taille maximale du cache',
|
||
hotCacheDebounce: 'Délai après changement de file',
|
||
hotCacheDebounceImmediate: 'Immédiat',
|
||
hotCacheDebounceSeconds: '{{n}} s',
|
||
hotCacheClearBtn: 'Vider le cache à chaud',
|
||
audioOutputDevice: 'Périphérique de sortie audio',
|
||
audioOutputDeviceDesc: 'Choisissez le périphérique audio utilisé par Psysonic. Les changements sont immédiats et relancent la piste en cours.',
|
||
audioOutputDeviceDefault: 'Défaut système',
|
||
audioOutputDeviceRefresh: 'Actualiser la liste',
|
||
audioOutputDeviceOsDefaultNow: 'sortie système actuelle',
|
||
audioOutputDeviceListError: 'Impossible de charger la liste des périphériques audio.',
|
||
audioOutputDeviceNotInCurrentList: 'absent de la liste actuelle',
|
||
audioOutputDeviceMacNotice: 'Sur macOS, la lecture suit actuellement toujours la sortie audio du système pour des raisons techniques. Changez la cible via Réglages Système → Son ou l\'icône haut-parleur de la barre de menus. Contexte : CoreAudio déclenche une demande d\'autorisation du microphone à l\'ouverture d\'un flux non par défaut — nous l\'évitons en utilisant toujours la sortie système par défaut.',
|
||
hiResTitle: 'Lecture haute résolution native',
|
||
hiResEnabled: 'Activer la lecture haute résolution native',
|
||
hiResDesc: "Force une sortie à 44,1 kHz par défaut pour une stabilité maximale. N'activer que si le matériel et le réseau prennent en charge les hautes fréquences d'échantillonnage (88,2 kHz+).",
|
||
showArtistImages: 'Afficher les images d\'artistes',
|
||
showArtistImagesDesc: 'Charge et affiche les images d\'artistes dans la vue d\'ensemble. Désactivé par défaut pour réduire les E/S disque serveur et la charge réseau sur les grandes bibliothèques.',
|
||
showOrbitTrigger: 'Afficher « Orbit » dans l\'en-tête',
|
||
showOrbitTriggerDesc: 'Le bouton d\'en-tête pour démarrer ou rejoindre une session d\'écoute partagée. Masque-le si tu n\'utilises pas Orbit — tu peux le réactiver ici.',
|
||
showTrayIcon: 'Afficher l\'icône dans la barre système',
|
||
showTrayIconDesc: 'Affiche l\'icône Psysonic dans la zone de notification / barre des menus.',
|
||
minimizeToTray: 'Réduire dans la barre système',
|
||
minimizeToTrayDesc: 'Lors de la fermeture, Psysonic continue de fonctionner dans la barre système au lieu de se fermer.',
|
||
clockFormat: 'Format de l\'heure',
|
||
clockFormatDesc: 'Format de l\'horloge utilisé par l\'ETA de la file d\'attente et l\'aperçu du minuteur de mise en veille.',
|
||
clockFormatAuto: 'Automatique (langue du système)',
|
||
clockFormatTwentyFour: '24 heures',
|
||
clockFormatTwelve: '12 heures (AM/PM)',
|
||
preloadMiniPlayer: 'Précharger le mini-lecteur',
|
||
preloadMiniPlayerDesc: 'Construit la fenêtre du mini-lecteur en arrière-plan au démarrage de l\'application afin qu\'elle affiche son contenu instantanément à la première ouverture. Utilise un peu plus de mémoire.',
|
||
linuxWebkitSmoothScroll: 'Molette fluide (Linux)',
|
||
linuxWebkitSmoothScrollDesc: 'Activé : inertie. Désactivé : pas à la ligne, style GTK.',
|
||
discordRichPresence: 'Discord Rich Presence',
|
||
discordRichPresenceDesc: 'Affiche le titre en cours de lecture sur votre profil Discord. Discord doit être ouvert.',
|
||
discordCoverSource: 'Source de pochette',
|
||
discordCoverSourceDesc: 'D\'où récupérer la pochette pour votre profil Discord.',
|
||
discordCoverNone: 'Aucune (icône de l\'app uniquement)',
|
||
discordCoverServer: 'Serveur (via infos album)',
|
||
discordCoverApple: 'Apple Music',
|
||
discordOptions: 'Options Discord avancées',
|
||
discordTemplates: 'Modèles de texte personnalisés',
|
||
discordTemplatesDesc: 'Personnalisez les informations affichées sur votre profil Discord. Variables : {title}, {artist}, {album}',
|
||
discordTemplateDetails: 'Ligne principale (details)',
|
||
discordTemplateState: 'Ligne secondaire (state)',
|
||
discordTemplateLargeText: 'Info-bulle album (largeText)',
|
||
nowPlayingEnabled: 'Afficher dans la fenêtre live',
|
||
nowPlayingEnabledDesc: 'Diffuse le titre en cours de lecture vers la vue des auditeurs en direct du serveur. Désactiver pour ne pas envoyer de données de lecture.',
|
||
enableBandsintown: 'Dates de tournée Bandsintown',
|
||
enableBandsintownDesc: 'Affiche les concerts à venir de l\'artiste actuel dans l\'onglet Info. Les données proviennent de l\'API publique Bandsintown.',
|
||
lyricsServerFirst: 'Préférer les paroles du serveur',
|
||
lyricsServerFirstDesc: 'Consulter d\'abord les paroles fournies par le serveur (tags intégrés, fichiers sidecar) avant LRCLIB. Désactiver pour utiliser LRCLIB en priorité.',
|
||
enableNeteaselyrics: 'Paroles Netease Cloud Music',
|
||
enableNeteaselyricsDesc: 'Utiliser Netease Cloud Music en dernier recours lorsque le serveur et LRCLIB ne retournent rien. Meilleure couverture pour la musique asiatique et internationale.',
|
||
lyricsSourcesTitle: 'Sources de paroles',
|
||
lyricsSourcesDesc: 'Choisissez quelles sources interroger et dans quel ordre. Glissez pour réordonner. Les sources désactivées sont ignorées.',
|
||
lyricsSourceServer: 'Serveur',
|
||
lyricsSourceLrclib: 'LRCLIB',
|
||
lyricsSourceNetease: 'Netease Cloud Music',
|
||
lyricsModeStandard: 'Standard',
|
||
lyricsModeStandardDesc: 'Trois sources avec ordre librement configurable : tags du serveur, LRCLIB, Netease.',
|
||
lyricsModeLyricsplus: 'YouLyPlus (Karaoké)',
|
||
lyricsModeLyricsplusDesc: 'Synchronisation mot à mot depuis Apple Music, Spotify, Musixmatch et QQ (backend communautaire). Retombe silencieusement sur les sources standard si rien n\'est trouvé.',
|
||
lyricsStaticOnly: 'Afficher les paroles en texte statique uniquement',
|
||
lyricsStaticOnlyDesc: 'Affiche les paroles synchronisées sans défilement automatique ni surlignage des mots.',
|
||
downloadsTitle: 'Export ZIP & Archivage',
|
||
downloadsFolderDesc: 'Dossier de destination pour les albums téléchargés en tant que fichier ZIP sur votre ordinateur.',
|
||
downloadsDefault: 'Dossier de téléchargement par défaut',
|
||
pickFolder: 'Sélectionner',
|
||
pickFolderTitle: 'Sélectionner le dossier de téléchargement',
|
||
clearFolder: 'Effacer le dossier',
|
||
logout: 'Se déconnecter',
|
||
aboutTitle: 'À propos de Psysonic',
|
||
aboutDesc: 'Un lecteur de musique de bureau moderne conçu pour Navidrome. Utilise l\'API Subsonic ainsi que des extensions spécifiques à Navidrome. Basé sur Tauri v2 avec un moteur audio Rust natif — léger et rapide, mais riche en fonctionnalités : barre waveform, paroles synchronisées, intégration Last.fm, égaliseur 10 bandes, crossfade, lecture sans blanc, Replay Gain, navigation par genre et une grande bibliothèque de thèmes.',
|
||
aboutLicense: 'Licence',
|
||
aboutLicenseText: 'GNU GPL v3 — libre d\'utilisation, de modification et de distribution sous la même licence.',
|
||
aboutRepo: 'Code source sur GitHub',
|
||
aboutVersion: 'Version',
|
||
aboutBuiltWith: 'Construit avec Tauri · React · TypeScript · Rust/rodio',
|
||
aboutReleaseNotesLabel: 'Notes de version',
|
||
aboutReleaseNotesLink: 'Ouvrir les nouveautés de cette version',
|
||
aboutContributorsLabel: 'Contributeurs',
|
||
showChangelogOnUpdate: "Afficher 'Quoi de neuf' lors des mises à jour",
|
||
showChangelogOnUpdateDesc: "Affiche une bannière discrète du changelog au-dessus de Now Playing après une mise à jour. Un clic ouvre les notes de version, le X la masque.",
|
||
libraryGridMaxColumnsTitle: 'Grilles de cartes dans la bibliothèque',
|
||
libraryGridMaxColumnsPerfHint: 'Plus de colonnes signifie plus de tuiles par ligne et davantage de travail de mise en page et de peinture — surtout sur de grosses bibliothèques ou du matériel lent.',
|
||
libraryGridMaxColumnsRangeLabel: 'Nombre maximal de colonnes ({{min}}–{{max}})',
|
||
libraryGridMaxColumnsDesc: 'S’applique aux vues album, artiste, liste de lecture, radio, hors ligne et autres pages en cartes. Moins de colonnes = tuiles plus grandes et en général moins de charge CPU.',
|
||
randomMixTitle: 'Liste noire du mix aléatoire',
|
||
luckyMixMenuTitle: 'Afficher Mix Chance dans le menu',
|
||
luckyMixMenuDesc: 'Active Mix Chance dans "Créer un mix" et comme entrée séparée quand la navigation est scindée. Visible uniquement si AudioMuse est actif sur le serveur courant.',
|
||
randomMixBlacklistTitle: 'Mots-clés de filtre personnalisés',
|
||
randomMixBlacklistDesc: 'Les morceaux sont exclus si un mot-clé correspond à leur genre, titre, album ou artiste (actif quand la case ci-dessus est cochée).',
|
||
randomMixBlacklistPlaceholder: 'Ajouter un mot-clé…',
|
||
randomMixBlacklistAdd: 'Ajouter',
|
||
randomMixBlacklistEmpty: 'Aucun mot-clé personnalisé ajouté.',
|
||
randomMixHardcodedTitle: 'Mots-clés intégrés (actifs quand la case est cochée)',
|
||
tabAudio: 'Audio',
|
||
tabStorage: 'Hors ligne & Cache',
|
||
tabAppearance: 'Apparence',
|
||
tabLibrary: 'Bibliothèque',
|
||
tabServers: 'Serveurs',
|
||
tabLyrics: 'Paroles',
|
||
tabPersonalisation: 'Personnalisation',
|
||
tabIntegrations: 'Intégrations',
|
||
inputKeybindingsTitle: 'Raccourcis clavier',
|
||
aboutContributorsCount_one: '{{count}} contribution',
|
||
aboutContributorsCount_other: '{{count}} contributions',
|
||
searchPlaceholder: 'Rechercher dans les paramètres…',
|
||
searchNoResults: 'Aucun réglage ne correspond à votre recherche.',
|
||
aboutMaintainersLabel: 'Mainteneurs',
|
||
integrationsPrivacyTitle: 'Avis de confidentialité',
|
||
integrationsPrivacyBody: 'Toutes les intégrations de cet onglet sont <strong>facultatives</strong> et, une fois activées, envoient des données à des services externes ou à votre serveur Navidrome. Last.fm reçoit votre historique d\'écoute, Discord affiche le morceau en cours dans votre profil, Bandsintown est interrogé par artiste pour récupérer les dates de tournée, et le partage « En cours de lecture » publie votre morceau actuel auprès des autres utilisateurs de votre serveur Navidrome. Si vous ne voulez rien de tout cela, laissez simplement la section correspondante désactivée.',
|
||
homeCustomizerTitle: 'Page d\'accueil',
|
||
queueToolbarTitle: 'Barre d\'outils de file d\'attente',
|
||
queueToolbarReset: 'Réinitialiser',
|
||
queueToolbarSeparator: 'Séparateur',
|
||
sidebarTitle: 'Barre latérale',
|
||
sidebarReset: 'Réinitialiser',
|
||
artistLayoutTitle: 'Sections de la page artiste',
|
||
artistLayoutDesc: 'Glissez pour réorganiser, basculez pour masquer des sections individuelles de la page artiste. Les sections sans données sont ignorées automatiquement.',
|
||
artistLayoutReset: 'Réinitialiser',
|
||
artistLayoutBio: 'Biographie de l\'artiste',
|
||
artistLayoutTopTracks: 'Titres populaires',
|
||
artistLayoutSimilar: 'Artistes similaires',
|
||
artistLayoutAlbums: 'Albums',
|
||
artistLayoutFeatured: 'Apparaît aussi sur',
|
||
playlistLayoutTitle: 'Mise en page de la playlist',
|
||
playlistLayoutDesc: 'Afficher ou masquer des éléments individuels sur la page de la playlist.',
|
||
playlistLayoutReset: 'Réinitialiser',
|
||
playerBarTitle: 'Barre de lecture',
|
||
playerBarReset: 'Réinitialiser',
|
||
playerBarStarRating: 'Note par étoiles',
|
||
playerBarFavorite: 'Favori (cœur)',
|
||
playerBarLastfmLove: 'Last.fm love',
|
||
playerBarEqualizer: 'Égaliseur',
|
||
playerBarMiniPlayer: 'Mini-lecteur',
|
||
advancedMode: 'Avancé',
|
||
advancedModeTooltip: 'Afficher les options avancées dans tous les onglets des paramètres. Contributions de la communauté qui ne reflètent pas nécessairement la philosophie de conception des mainteneurs de Psysonic.',
|
||
advancedBadge: 'Avancé',
|
||
sidebarDrag: 'Glisser pour réorganiser',
|
||
sidebarFixed: 'Toujours visible',
|
||
randomNavSplitTitle: 'Diviser la navigation Mix',
|
||
randomNavSplitDesc: 'Afficher "Mix Aléatoire", "Albums Aléatoires" et "Mix Chance" comme entrées séparées dans la barre latérale plutôt que le hub "Créer un Mix".',
|
||
tabInput: 'Entrée',
|
||
tabUsers: 'Utilisateurs',
|
||
shortcutsReset: 'Réinitialiser',
|
||
shortcutListening: 'Appuyez sur une touche…',
|
||
shortcutUnbound: '—',
|
||
shortcutClear: 'Effacer',
|
||
globalShortcutsTitle: 'Raccourcis globaux',
|
||
globalShortcutsNote: 'Fonctionnent à l\'échelle du système, même quand Psysonic est en arrière-plan. Nécessite Ctrl, Alt ou Super comme modificateur.',
|
||
shortcutPlayPause: 'Lecture / Pause',
|
||
shortcutNext: 'Piste suivante',
|
||
shortcutPrev: 'Piste précédente',
|
||
shortcutVolumeUp: 'Volume +',
|
||
shortcutVolumeDown: 'Volume -',
|
||
shortcutSeekForward: 'Avancer de 10s',
|
||
shortcutSeekBackward: 'Reculer de 10s',
|
||
shortcutToggleQueue: 'Afficher/masquer la file',
|
||
shortcutOpenFolderBrowser: 'Ouvrir {{folderBrowser}}',
|
||
shortcutFullscreenPlayer: 'Lecteur plein écran',
|
||
shortcutNativeFullscreen: 'Plein écran natif',
|
||
shortcutOpenMiniPlayer: 'Ouvrir le mini-lecteur',
|
||
shortcutStartSearch: 'Lancer une recherche',
|
||
shortcutStartAdvancedSearch: 'Lancer une recherche avancée',
|
||
shortcutToggleSidebar: 'Afficher / masquer la barre latérale',
|
||
shortcutMuteSound: 'Couper le son',
|
||
shortcutToggleEqualizer: 'Ouvrir / basculer l\'égaliseur',
|
||
shortcutToggleRepeat: 'Basculer la répétition',
|
||
shortcutOpenNowPlaying: 'Ouvrir « En cours »',
|
||
shortcutShowLyrics: 'Afficher les paroles',
|
||
shortcutFavoriteCurrentTrack: 'Ajouter la piste actuelle aux favoris',
|
||
shortcutOpenHelp: 'Aide',
|
||
tabSystem: 'Système',
|
||
loggingTitle: 'Journalisation',
|
||
loggingModeDesc: 'Contrôle le niveau de verbosité des journaux backend dans le terminal.',
|
||
loggingModeOff: 'Désactivé',
|
||
loggingModeNormal: 'Normal',
|
||
loggingModeDebug: 'Débogage',
|
||
loggingExport: 'Exporter les journaux',
|
||
loggingExportSuccess: 'Journaux exportés ({{count}} lignes).',
|
||
loggingExportError: 'Impossible d\'exporter les journaux.',
|
||
ratingsSectionTitle: 'Notes',
|
||
ratingsSkipStarTitle: 'Passer pour 1 étoile',
|
||
ratingsSkipStarDesc:
|
||
"Après plusieurs sauts d’affilée, le morceau passe à 1 étoile. Uniquement s’il n’était pas encore noté.",
|
||
ratingsSkipStarThresholdLabel: 'Sauts',
|
||
ratingsMixFilterTitle: 'Filtrage par note',
|
||
ratingsMixFilterDesc:
|
||
"Filtrer le contenu peu noté dans {{mix}} et {{albums}}. Cliquer de nouveau sur l’étoile choisie désactive le seuil.",
|
||
ratingsMixMinSong: 'Morceaux',
|
||
ratingsMixMinAlbum: 'Albums',
|
||
ratingsMixMinArtist: 'Artistes',
|
||
ratingsMixMinThresholdAria: 'Étoiles minimum : {{label}}',
|
||
backupTitle: 'Sauvegarde & Restauration',
|
||
backupExport: 'Exporter les paramètres',
|
||
backupExportDesc: 'Enregistre tous les paramètres, profils serveur, configuration Last.fm, thème, EQ et raccourcis dans un fichier .psybkp. Les mots de passe sont stockés en clair — conservez le fichier en sécurité.',
|
||
backupImport: 'Importer les paramètres',
|
||
backupImportDesc: 'Restaure les paramètres depuis un fichier .psybkp. L\'application sera rechargée après l\'import.',
|
||
backupImportConfirm: 'Tous les paramètres actuels seront écrasés. Continuer ?',
|
||
backupSuccess: 'Sauvegarde enregistrée',
|
||
backupImportSuccess: 'Paramètres restaurés — rechargement…',
|
||
backupImportError: 'Fichier de sauvegarde invalide ou corrompu.',
|
||
playbackTitle: 'Lecture',
|
||
replayGain: 'Replay Gain',
|
||
replayGainDesc: 'Normaliser le volume des pistes avec les métadonnées ReplayGain',
|
||
replayGainMode: 'Mode',
|
||
replayGainAuto: 'Auto',
|
||
replayGainAutoDesc: 'Utilise le gain d\'album quand les pistes voisines de la file proviennent du même album, sinon le gain de piste.',
|
||
replayGainTrack: 'Piste',
|
||
replayGainAlbum: 'Album',
|
||
replayGainPreGain: 'Pré-Gain (fichiers taggés)',
|
||
replayGainPreGainDesc: 'Boost universel ajouté à chaque calcul ReplayGain. Utile si votre bibliothèque semble globalement trop discrète.',
|
||
replayGainFallback: 'Repli (sans tags / radio)',
|
||
replayGainFallbackDesc: 'Appliqué aux pistes (et flux radio) sans tags ReplayGain, pour que le contenu non taggé ne sorte pas plus fort que le reste.',
|
||
normalization: 'Normalisation',
|
||
normalizationDesc: 'Égalise la sonie perçue entre pistes, albums et radio.',
|
||
normalizationOff: 'Désactivé',
|
||
normalizationReplayGain: 'ReplayGain',
|
||
normalizationLufs: 'LUFS',
|
||
loudnessTargetLufs: 'LUFS cible',
|
||
loudnessTargetLufsDesc: 'Sonie de référence sur laquelle toutes les pistes sont calées. Valeur plus basse = sortie plus forte. Les services de streaming tournent autour de -14 LUFS.',
|
||
loudnessPreAnalysisAttenuation: 'Atténuation avant mesure',
|
||
loudnessPreAnalysisAttenuationDesc:
|
||
'Réduit le volume tant que la loudness du morceau n’est pas enregistrée. En streaming, des estimations grossières suivent, pas une mesure complète. 0 dB = rien ; plus négatif = plus discret. À droite, le dB effectif pour la cible actuelle.',
|
||
loudnessPreAnalysisAttenuationRef: 'Effectif {{eff}} dB avec cible {{tgt}} LUFS.',
|
||
loudnessPreAnalysisAttenuationReset: 'Valeur par défaut',
|
||
loudnessFirstPlayNote:
|
||
'À la première lecture d’un nouveau morceau, le volume peut brièvement varier pendant la mesure. La fois suivante, la mesure mise en cache prend le relais et tout reste stable. Les pistes à venir dans la file sont en général pré-analysées pendant la lecture précédente, ce cas est donc rare en pratique.',
|
||
crossfade: 'Fondu enchaîné',
|
||
crossfadeDesc: 'Fondu entre les pistes',
|
||
crossfadeSecs: '{{n}} s',
|
||
notWithGapless: 'Non disponible quand la lecture sans blanc est active',
|
||
notWithCrossfade: 'Non disponible quand le fondu enchaîné est actif',
|
||
gapless: 'Lecture sans blanc',
|
||
gaplessDesc: 'Préparer la piste suivante pour éliminer les silences entre les morceaux',
|
||
preservePlayNextOrder: "Préserver l'ordre « Lire ensuite »",
|
||
preservePlayNextOrderDesc: 'Les nouveaux éléments « Lire ensuite » s\'ajoutent à la fin de la file existante au lieu de la doubler.',
|
||
trackPreviewsTitle: 'Aperçus de pistes',
|
||
trackPreviewsToggle: 'Activer les aperçus de pistes',
|
||
trackPreviewsDesc: 'Affiche les boutons Lecture et Aperçu dans les listes pour un court extrait au milieu du morceau.',
|
||
trackPreviewStart: 'Position de départ',
|
||
trackPreviewStartDesc: 'À quel point du morceau l\'aperçu commence (% de la durée).',
|
||
trackPreviewDuration: 'Durée',
|
||
trackPreviewDurationDesc: 'Combien de temps chaque aperçu joue avant de s\'arrêter.',
|
||
trackPreviewDurationSecs: '{{n}} s',
|
||
trackPreviewLocationsTitle: 'Où afficher les aperçus',
|
||
trackPreviewLocationsDesc: 'Choisissez dans quelles listes afficher les boutons d\'aperçu.',
|
||
trackPreviewLocation_suggestions: 'Dans les suggestions de playlist',
|
||
trackPreviewLocation_albums: 'Dans les listes d\'albums',
|
||
trackPreviewLocation_playlists: 'Dans les playlists',
|
||
trackPreviewLocation_favorites: 'Dans les favoris',
|
||
trackPreviewLocation_artist: 'Dans les meilleurs morceaux de l\'artiste',
|
||
trackPreviewLocation_randomMix: 'Dans Random Mix',
|
||
preloadMode: 'Précharger la piste suivante',
|
||
preloadModeDesc: 'Quand commencer à mettre en mémoire tampon la piste suivante',
|
||
nextTrackBufferingTitle: 'Mise en mémoire tampon',
|
||
preloadHotCacheMutualExclusive: "Preload et Hot Cache remplissent le même rôle — un seul peut être actif à la fois. Activer l'un désactive automatiquement l'autre.",
|
||
preloadOff: 'Désactivé',
|
||
preloadBalanced: 'Équilibré (30 s avant la fin)',
|
||
preloadEarly: 'Tôt (après 5 s de lecture)',
|
||
preloadCustom: 'Personnalisé',
|
||
preloadCustomSeconds: 'Secondes avant la fin : {{n}}',
|
||
infiniteQueue: 'File infinie',
|
||
infiniteQueueDesc: 'Ajouter automatiquement des morceaux aléatoires quand la file est épuisée',
|
||
experimental: 'Expérimental',
|
||
fsPlayerSection: 'Lecteur plein écran',
|
||
fsShowArtistPortrait: "Afficher la photo de l'artiste",
|
||
fsShowArtistPortraitDesc: "Afficher la photo de l'artiste (ou la pochette) sur le côté droit du lecteur plein écran.",
|
||
fsPortraitDim: "Assombrissement de la photo",
|
||
fsLyricsStyle: "Style des paroles",
|
||
fsLyricsStyleRail: "Rail",
|
||
fsLyricsStyleRailDesc: "Rail glissant classique de 5 lignes.",
|
||
fsLyricsStyleApple: "Défilement",
|
||
fsLyricsStyleAppleDesc: "Liste déroulante plein écran.",
|
||
sidebarLyricsStyle: "Style de défilement des paroles",
|
||
sidebarLyricsStyleClassic: "Classique",
|
||
sidebarLyricsStyleClassicDesc: "La ligne active est centrée.",
|
||
sidebarLyricsStyleApple: "Apple Music-like",
|
||
sidebarLyricsStyleAppleDesc: "La ligne active reste en haut avec une animation fluide.",
|
||
seekbarStyle: 'Style de la barre de lecture',
|
||
seekbarStyleDesc: 'Choisir l\'apparence de la barre de progression',
|
||
seekbarTruewave: 'Forme d\'onde réelle',
|
||
seekbarPseudowave: 'Forme d\'onde pseudo',
|
||
seekbarLinedot: 'Ligne & point',
|
||
seekbarBar: 'Barre',
|
||
seekbarThick: 'Barre épaisse',
|
||
seekbarSegmented: 'Segmentée',
|
||
seekbarNeon: 'Néon',
|
||
seekbarPulsewave: 'Onde pulsée',
|
||
seekbarParticletrail: 'Traînée de particules',
|
||
seekbarLiquidfill: 'Tube liquide',
|
||
seekbarRetrotape: 'Bande rétro',
|
||
themeSchedulerTitle: 'Planificateur de thème',
|
||
themeSchedulerEnable: 'Activer le planificateur de thème',
|
||
themeSchedulerEnableSub: 'Bascule automatiquement entre deux thèmes selon l\'heure',
|
||
themeSchedulerDayTheme: 'Thème de jour',
|
||
themeSchedulerDayStart: 'Début du jour',
|
||
themeSchedulerNightTheme: 'Thème de nuit',
|
||
themeSchedulerNightStart: 'Début de la nuit',
|
||
themeSchedulerActiveHint: 'Le planificateur de thème est actif - les thèmes changent automatiquement.',
|
||
visualOptionsTitle: 'Options Visuelles',
|
||
coverArtBackground: "Fond d'Art de Poche",
|
||
coverArtBackgroundSub: "Afficher la pochette floutée comme fond dans les en-têtes d'albums et de playlists",
|
||
playlistCoverPhoto: 'Photo de Couverture de Playlist',
|
||
playlistCoverPhotoSub: 'Afficher la grille de photos de couverture dans la vue détaillée des playlists',
|
||
showBitrate: 'Afficher le Débit',
|
||
showBitrateSub: 'Afficher le débit audio dans les listes de pistes',
|
||
floatingPlayerBar: 'Barre de Lecteur Flottante',
|
||
floatingPlayerBarSub: 'Garder la barre du lecteur flottante au-dessus du contenu',
|
||
uiScaleTitle: "Mise à l'échelle de l'interface",
|
||
uiScaleLabel: 'Zoom',
|
||
};
|