mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
i18n(orbit): translations for fr / nl / zh / nb / ru / es
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -177,6 +177,7 @@ export const frTranslation = {
|
||||
},
|
||||
albumDetail: {
|
||||
back: 'Retour',
|
||||
orbitDoubleClickHint: 'Double-clic pour ajouter ce morceau à la file Orbit',
|
||||
playAll: 'Tout lire',
|
||||
shareAlbum: 'Partager l\'album',
|
||||
enqueue: 'Mettre en file',
|
||||
@@ -1428,4 +1429,175 @@ export const frTranslation = {
|
||||
liveSearch: 'Live',
|
||||
randomAlbumsLabel: 'Albums aléatoires',
|
||||
},
|
||||
orbit: {
|
||||
triggerLabel: 'Psy Orbit',
|
||||
triggerTooltip: 'Démarrer ou rejoindre une session d\'écoute partagée',
|
||||
launchCreate: 'Créer une session',
|
||||
launchJoin: 'Rejoindre une session',
|
||||
launchHelp: 'Comment ça marche ?',
|
||||
launchHelpSoon: 'Bientôt disponible',
|
||||
joinModalTitle: 'Rejoindre une session Orbit',
|
||||
joinModalSub: 'Colle le lien d\'invitation que ton hôte t\'a envoyé.',
|
||||
joinModalLinkLabel: 'Lien d\'invitation',
|
||||
joinModalLinkPlaceholder: 'psysonic2://orbit/…',
|
||||
joinModalLinkHelper: 'Fonctionne avec tout lien Orbit valide. Doit pointer vers le serveur auquel tu es actuellement connecté.',
|
||||
joinModalPasteTooltip: 'Coller depuis le presse-papiers',
|
||||
joinModalSubmit: 'Rejoindre',
|
||||
joinModalBusy: 'Connexion…',
|
||||
joinErrEmpty: 'Veuillez coller un lien d\'invitation.',
|
||||
joinErrInvalid: 'Cela ne ressemble pas à un lien d\'invitation Orbit.',
|
||||
closeAria: 'Fermer',
|
||||
heroTitlePrefix: 'Écoute ensemble avec',
|
||||
heroTitleBrand: 'Psy Orbit',
|
||||
heroSub: 'Démarre une session — les autres utilisateurs de {{server}} écouteront en même temps et pourront suggérer des morceaux.',
|
||||
fallbackServer: 'ce serveur',
|
||||
tipLan: 'Tu es actuellement connecté via une adresse de réseau local. Les invités hors de ton réseau ne peuvent pas rejoindre — bascule vers une adresse publique dans les paramètres avant de démarrer.',
|
||||
tipRemote: 'Pour que des invités hors de ton réseau domestique puissent rejoindre, l\'adresse de ton serveur doit être publiquement accessible. Si ton serveur est interne, bascule avant de démarrer.',
|
||||
labelName: 'Nom de la session',
|
||||
namePlaceholder: 'Velvet Orbit',
|
||||
reshuffleTooltip: 'Nouvelle suggestion',
|
||||
reshuffleAria: 'Suggérer un nouveau nom',
|
||||
helperName: 'Comment la session apparaîtra à tes invités — garde-le ou saisis le tien.',
|
||||
labelMax: 'Invités max.',
|
||||
helperMax: 'Tu ne comptes pas — ceci limite uniquement les invités entrants.',
|
||||
labelLink: 'Lien d\'invitation',
|
||||
tooltipCopied: 'Copié',
|
||||
tooltipCopy: 'Copier',
|
||||
ariaCopyLink: 'Copier le lien d\'invitation',
|
||||
helperLink: 'Envoie ce lien à tes invités. Ils peuvent le coller n\'importe où dans Psysonic avec Ctrl+V.',
|
||||
labelClearQueue: 'Vider ma file d\'attente d\'abord',
|
||||
helperClearQueue: 'Démarre la session avec une file d\'attente vide. Désactivé : les titres déjà en file restent et sont partagés avec les invités.',
|
||||
btnCancel: 'Annuler',
|
||||
btnStarting: 'Démarrage…',
|
||||
btnStart: 'Démarrer Orbit',
|
||||
btnCopyAndStart: 'Copier le lien & démarrer',
|
||||
errNameRequired: 'Veuillez donner un nom à ta session.',
|
||||
errStartFailed: 'Impossible de démarrer.',
|
||||
hostLabel: 'Hôte : {{name}}',
|
||||
participantsTooltip: 'Participants',
|
||||
settingsTooltip: 'Paramètres de session',
|
||||
shareTooltip: 'Partager le lien d\'invitation',
|
||||
shuffleLabel: 'Prochain mélange dans',
|
||||
catchUpLabel: 'rattraper',
|
||||
catchUpTooltip: 'Sauter à la position actuelle de l\'hôte',
|
||||
hostAway: 'Hôte hors ligne',
|
||||
hostOnline: 'Hôte en ligne',
|
||||
endTooltip: 'Terminer la session',
|
||||
leaveTooltip: 'Quitter la session',
|
||||
helpTooltip: 'Fonctionnement d\'Orbit',
|
||||
helpTitle: 'Fonctionnement d\'Orbit',
|
||||
helpIntro: 'Orbit transforme Psysonic en salle d\'écoute partagée. Un hôte choisit la musique ; les invités écoutent en synchro et peuvent suggérer des morceaux.',
|
||||
helpHostOnly: '(hôte)',
|
||||
helpSec1Title: 'Qu\'est-ce qu\'Orbit ?',
|
||||
helpSec1Body: 'Un mode « écouter ensemble » — l\'hôte dirige la lecture, les invités écoutent. Tout passe par des playlists sur ton propre serveur Navidrome ; aucune infrastructure externe.',
|
||||
helpSec2Title: 'Hôte et invités',
|
||||
helpSec2Body: 'L\'hôte contrôle la lecture (play / pause / skip / seek) et décide quand la session se termine. Les invités suivent la lecture, peuvent suggérer des morceaux et quitter ou rejoindre à tout moment. Seul l\'hôte peut exclure ou bannir un participant.',
|
||||
helpSec2WarnHead: 'Important : comptes séparés.',
|
||||
helpSec2WarnBody: 'Chaque participant a besoin de son propre compte Navidrome. Si l\'hôte et l\'invité utilisent le même utilisateur, leurs soumissions entrent en conflit et l\'hôte ne voit jamais les suggestions de l\'invité.',
|
||||
helpSec3Title: 'Démarrer et inviter',
|
||||
helpSec3Body: 'Clique sur le bouton « Psy Orbit » → Créer une session → le modal affiche un lien d\'invitation prêt à copier et permet optionnellement de vider ta file actuelle. Partage le lien comme tu veux. Pendant qu\'une session est active, le bouton de partage dans la barre en haut copie le lien à tout moment.',
|
||||
helpSec4Title: 'Rejoindre',
|
||||
helpSec4Body: 'Colle le lien d\'invitation n\'importe où dans Psysonic avec Ctrl+V / Cmd+V — l\'invite apparaît automatiquement. Alternative : « Psy Orbit » → Rejoindre une session → colle dans le champ. Si le lien pointe vers un serveur où tu as un compte, Psysonic bascule automatiquement. Si tu as plusieurs comptes sur ce serveur, un sélecteur demande lequel utiliser.',
|
||||
helpSec5Title: 'Suggérer des morceaux',
|
||||
helpSec5Body: 'Dans n\'importe quelle liste : double-clic sur une ligne, ou clic droit → « Ajouter à la session Orbit ». Un simple clic affiche un indice au lieu de jeter tout l\'album dans la file partagée — c\'est intentionnel. Les actions groupées explicites comme « Tout lire » ou « Lire l\'album » demandent d\'abord confirmation puis ajoutent (ne remplacent jamais).',
|
||||
helpSec6Title: 'La file d\'attente partagée',
|
||||
helpSec6Body: 'La file affiche les morceaux à venir de l\'hôte — visible par tous. Les ajouts groupés sont toujours ajoutés à la fin, pour ne pas perdre les suggestions des invités. Le mélange automatique réorganise la file périodiquement (configurable : 1 / 5 / 10 / 15 / 30 min). Si ta lecture dévie, le bouton « Rattraper » dans la barre te ramène à la position en direct de l\'hôte.',
|
||||
helpSec7Title: 'Approbations',
|
||||
helpSec7Body: 'Par défaut, les suggestions des invités nécessitent une approbation manuelle — elles apparaissent dans une bande « Approbations » en haut du panneau avec des boutons accepter / refuser. L\'approbation automatique peut être activée dans les paramètres.',
|
||||
helpSec8Title: 'Participants et paramètres',
|
||||
helpSec8Body: 'Ouvre l\'icône des paramètres dans la barre pour la cadence de mélange, l\'approbation automatique et le raccourci « Mélanger maintenant ». Clique sur le nombre de participants pour voir qui est connecté — exclure (peut rejoindre via le lien) ou bannir (exclu pour la session). Les invités voient la liste en lecture seule.',
|
||||
helpSec9Title: 'Terminer la session',
|
||||
helpSec9Body: 'X de l\'hôte → dialogue de confirmation → la session se ferme pour tout le monde, les playlists serveur sont nettoyées automatiquement. X de l\'invité → l\'invité part, la session continue. Si l\'hôte reste silencieux 5 minutes, l\'invité part automatiquement avec un avis ; les reconnexions courtes dans ce laps sont invisibles.',
|
||||
participantsInviteLabel: 'Lien d\'invitation',
|
||||
participantsCountLabel: '{{count}} en session',
|
||||
participantsHost: 'hôte',
|
||||
participantsEmpty: 'Pas encore d\'invités',
|
||||
participantsKickTooltip: 'Retirer de la session',
|
||||
participantsKickAria: 'Retirer {{user}}',
|
||||
participantsRemoveTooltip: 'Retirer de la session',
|
||||
participantsRemoveAria: 'Retirer {{user}} de cette session',
|
||||
participantsBanTooltip: 'Bannir définitivement',
|
||||
participantsBanAria: 'Bannir définitivement {{user}}',
|
||||
confirmRemoveTitle: 'Retirer de la session ?',
|
||||
confirmRemoveBody: '{{user}} sera retiré de la session mais peut rejoindre via ton lien d\'invitation.',
|
||||
confirmRemoveConfirm: 'Retirer',
|
||||
confirmBanTitle: 'Bannir définitivement ?',
|
||||
confirmBanBody: '{{user}} sera retiré et empêché de rejoindre cette session. Irréversible pour la durée de la session.',
|
||||
confirmBanConfirm: 'Bannir',
|
||||
confirmCancel: 'Annuler',
|
||||
confirmJoinTitle: 'Rejoindre la session Orbit ?',
|
||||
confirmJoinBody: '{{host}} t\'a invité à « {{name}} ». Rejoindre la session ?',
|
||||
confirmJoinConfirm: 'Rejoindre',
|
||||
confirmLeaveTitle: 'Quitter la session ?',
|
||||
confirmLeaveBody: 'Quitter « {{name}} » ? Tu peux rejoindre à tout moment via le lien d\'invitation de {{host}}.',
|
||||
confirmLeaveConfirm: 'Quitter',
|
||||
confirmEndTitle: 'Terminer la session pour tout le monde ?',
|
||||
confirmEndBody: '« {{name}} » se fermera pour tous les participants. Les playlists de session sont nettoyées automatiquement.',
|
||||
confirmEndConfirm: 'Terminer la session',
|
||||
invalidLinkTitle: 'Le lien d\'invitation n\'est plus valide',
|
||||
invalidLinkBody: 'Cette session Orbit n\'existe plus ou est déjà terminée. Demande à l\'hôte un nouveau lien.',
|
||||
settingsTitle: 'Paramètres de session',
|
||||
settingAutoApprove: 'Approuver automatiquement les suggestions',
|
||||
settingAutoApproveHint: 'Les suggestions arrivent instantanément dans ta file. Désactivé : elles restent dans la liste de session pour révision.',
|
||||
settingAutoShuffle: 'Mélange automatique',
|
||||
settingAutoShuffleHint: 'Mélange Fisher-Yates périodique de la file à venir. Désactivé : l\'ordre ne change que lorsque tu le réorganises.',
|
||||
settingShuffleInterval: 'Remélanger toutes les',
|
||||
settingShuffleIntervalHint: 'Fréquence de remélange de la file pendant la session.',
|
||||
settingShuffleIntervalValue_one: '{{count}} min',
|
||||
settingShuffleIntervalValue_other: '{{count}} min',
|
||||
settingShuffleNow: 'Mélanger maintenant',
|
||||
toastSuggested: '{{user}} a suggéré « {{title}} »',
|
||||
toastSuggestedMany: '{{count}} nouvelles suggestions dans la file',
|
||||
toastShuffled: 'File mélangée',
|
||||
toastJoined: 'Session rejointe',
|
||||
toastLoginFirst: 'Connecte-toi avant de rejoindre une session',
|
||||
toastSwitchServer: 'Bascule d\'abord vers {{url}}, puis colle à nouveau',
|
||||
toastNoAccountForServer: 'Tu n\'as pas accès à {{url}}. Demande à l\'hôte une invitation.',
|
||||
toastSwitchFailed: 'Impossible de basculer vers {{url}}',
|
||||
accountPickerTitle: 'Quel compte ?',
|
||||
accountPickerSub: 'Tu as plusieurs comptes pour {{url}}. Choisis celui avec lequel rejoindre la session.',
|
||||
toastJoinFail: 'Impossible de rejoindre la session',
|
||||
joinErrNotFound: 'Session introuvable',
|
||||
joinErrEnded: 'La session est terminée',
|
||||
joinErrFull: 'La session est pleine',
|
||||
joinErrKicked: 'Tu ne peux pas rejoindre cette session',
|
||||
joinErrNoUser: 'Aucun serveur actif',
|
||||
joinErrServerError: 'Impossible de rejoindre',
|
||||
ctxAddToSession: 'Ajouter à la session Orbit',
|
||||
ctxSuggestedToast: 'Suggéré à la session',
|
||||
ctxSuggestFailed: 'Impossible de suggérer — pas rejoint',
|
||||
ctxAddToSessionHost: 'Ajouter à la session Orbit',
|
||||
ctxAddedHostToast: 'Ajouté à la session',
|
||||
ctxAddHostFailed: 'Impossible d\'ajouter à la session',
|
||||
bulkConfirmTitle: 'Tout ajouter à la file Orbit ?',
|
||||
bulkConfirmBody: 'Cela ajouterait {{count}} morceaux en une fois. C\'est beaucoup pour tes invités. Continuer ?',
|
||||
bulkConfirmYes: 'Tout ajouter',
|
||||
bulkConfirmNo: 'Annuler',
|
||||
guestLive: 'Direct',
|
||||
guestPlaying: 'En cours de lecture',
|
||||
guestPaused: 'En pause',
|
||||
guestLoading: 'Chargement…',
|
||||
guestSuggestions: 'Suggestions',
|
||||
guestUpNext: 'À suivre',
|
||||
guestUpNextEmpty: 'Rien en file. Ouvre le menu contextuel d\'un morceau et choisis « Ajouter à la session Orbit ».',
|
||||
guestPendingTitle: 'En attente de l\'hôte',
|
||||
guestPendingHint: 'Suggéré — apparaîtra dans la file quand l\'hôte l\'acceptera.',
|
||||
approvalTitle: 'Approbations en attente',
|
||||
approvalFrom: 'Suggéré par {{user}}',
|
||||
approvalAccept: 'Accepter',
|
||||
approvalDecline: 'Refuser',
|
||||
guestUpNextMore: '+ {{count}} autres dans la file de l\'hôte',
|
||||
guestSubmitter: 'par {{user}}',
|
||||
guestEmpty: 'Aucune suggestion. Ouvre le menu contextuel d\'un morceau et choisis « Ajouter à la session Orbit ».',
|
||||
guestFooter: 'L\'hôte contrôle la lecture — tu ne peux pas modifier la liste.',
|
||||
exitKickedTitle: 'Tu as été banni de la session',
|
||||
exitRemovedTitle: 'Tu as été retiré de la session',
|
||||
exitEndedTitle: 'L\'hôte a terminé la session',
|
||||
exitHostTimeoutTitle: 'L\'hôte ne répond plus',
|
||||
exitHostTimeoutBody: '{{host}} n\'a pas envoyé de mise à jour depuis un moment, donc « {{name}} » a été fermée de ton côté. Tu peux rejoindre à tout moment avec le lien.',
|
||||
exitKickedBody: '{{host}} t\'a banni de « {{name}} ». Tu ne peux pas rejoindre.',
|
||||
exitRemovedBody: '{{host}} t\'a retiré de « {{name}} ». Tu peux rejoindre via le lien à tout moment.',
|
||||
exitEndedBody: '« {{name}} » est terminée. J\'espère que tu t\'es bien amusé.',
|
||||
exitOk: 'OK',
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user