Local Build and Deploy / deploy (push) Successful in 1m0s
- Sortable columns: click headers to sort by permission/description/group/rank - Inline edit: click rank value to edit, Enter to save, Escape to cancel - Select all matching button when partial selection is active - Select-all checkbox shows all-pages selection state - AuditSection uses Intl.DateTimeFormat with CMS locale instead of toLocaleString - Add selectAllMatching translation key to all 22 locales
2173 lines
80 KiB
JSON
2173 lines
80 KiB
JSON
{
|
||
"nav": {
|
||
"home": "Accueil",
|
||
"community": "Communauté",
|
||
"articles": "Articles",
|
||
"photos": "Photos",
|
||
"staff": "Équipe",
|
||
"rankings": "Classements",
|
||
"guilds": "Groupes",
|
||
"leaderboards": "Meilleurs scores",
|
||
"rareValues": "Valeurs rares",
|
||
"shop": "Boutique",
|
||
"market": "Marché",
|
||
"assistance": "Assistance",
|
||
"helpCenter": "Centre d'aide",
|
||
"myTickets": "Mes tickets",
|
||
"badges": "Badges",
|
||
"radio": "Radio",
|
||
"friends": "Amis",
|
||
"messages": "Messages",
|
||
"admin": "Admin",
|
||
"openMenu": "Open menu",
|
||
"closeMenu": "Close menu",
|
||
"drawBadge": "Dessiner un badge"
|
||
},
|
||
"header": {
|
||
"online": "{count} {hotel} en ligne",
|
||
"nitroClient": "Client Nitro",
|
||
"tagline": "Un monde virtuel en ligne où vous pouvez créer votre propre avatar, vous faire des amis, discuter, créer des salons et bien plus encore !",
|
||
"login": "Connexion",
|
||
"or": "Ou",
|
||
"createAccount": "Créer un compte"
|
||
},
|
||
"footer": {
|
||
"copyright": "© {year} - {hotel} est un projet éducatif à but non lucratif"
|
||
},
|
||
"common": {
|
||
"language": "Langue",
|
||
"lightMode": "Mode clair",
|
||
"darkMode": "Mode sombre"
|
||
},
|
||
"pages": {
|
||
"staff": {
|
||
"title": "Équipe",
|
||
"subtitle": "L'équipe derrière l'hôtel",
|
||
"ranksTitle": "Rangs",
|
||
"ranksSubtitle": "Ce dont chaque membre de l'équipe s'occupe",
|
||
"membersTitle": "Membres de l'équipe",
|
||
"membersEmptySubtitle": "Personne à afficher pour le moment",
|
||
"membersSubtitle": "{count, plural, one {# membre qui fait tourner les choses} other {# membres qui font tourner les choses}}",
|
||
"emptyState": "Aucun membre du personnel à afficher.",
|
||
"colUsername": "Nom d'utilisateur",
|
||
"colRank": "Rang",
|
||
"colMotto": "Devise"
|
||
},
|
||
"leaderboard": {
|
||
"title": "Classement",
|
||
"subtitle": "Top 20 des joueurs par {currency}",
|
||
"tab_credits": "Crédits",
|
||
"tab_diamonds": "Diamants",
|
||
"tab_duckets": "Duckets",
|
||
"tab_achievement": "Succès",
|
||
"tab_respects": "Respects",
|
||
"tab_onlinetime": "Temps en ligne",
|
||
"emptyState": "Aucun classement à afficher pour le moment.",
|
||
"colAvatar": "Avatar",
|
||
"colPlayer": "Joueur"
|
||
},
|
||
"friends": {
|
||
"title": "Amis",
|
||
"emptySubtitle": "Vous n'avez encore aucun ami ajouté",
|
||
"subtitle": "{count, plural, one {Vous avez # ami} other {Vous avez # amis}}",
|
||
"emptyState": "Ajoutez des amis dans l'hôtel et ils apparaîtront ici.",
|
||
"noMotto": "Aucune devise"
|
||
},
|
||
"messages": {
|
||
"title": "Messages",
|
||
"subtitle": "Demandes d'amis et messages hors ligne qui vous attendent",
|
||
"requestsTitle": "Demandes d'amis",
|
||
"requestsEmptySubtitle": "Personne n'a encore demandé à être votre ami",
|
||
"requestsSubtitle": "{count, plural, one {# demande en attente} other {# demandes en attente}}",
|
||
"requestsEmptyState": "Aucune demande d'ami en attente.",
|
||
"wantsToBeFriend": "veut être votre ami.",
|
||
"accept": "Accepter",
|
||
"offlineTitle": "Messages hors ligne",
|
||
"offlineEmptySubtitle": "Votre boîte de réception est vide",
|
||
"offlineSubtitle": "{count, plural, one {# message reçu} other {# messages reçus}}",
|
||
"offlineEmptyState": "Vous n'avez aucun message hors ligne.",
|
||
"unknownUser": "Utilisateur #{id}"
|
||
},
|
||
"profile": {
|
||
"noMotto": "Aucune devise",
|
||
"statRank": "Rang",
|
||
"statCredits": "Crédits",
|
||
"statRegistered": "Inscrit",
|
||
"badgesTitle": "Badges",
|
||
"badgesEmpty": "Pas encore de badges.",
|
||
"photosTitle": "Photos",
|
||
"photosEmpty": "Pas encore de photos.",
|
||
"guestbookTitle": "Livre d'or",
|
||
"guestbookSubtitle": "Messages sur le mur de {username}",
|
||
"leaveMessage": "Laisser un message",
|
||
"guestbookPlaceholder": "Écrivez quelque chose sur le livre d'or de {username}…",
|
||
"post": "Publier",
|
||
"loginToPost": "Connectez-vous pour laisser un message dans le livre d'or.",
|
||
"guestbookEmpty": "Pas encore d'entrées dans le livre d'or.",
|
||
"unknownUser": "Utilisateur #{id}",
|
||
"statDuckets": "Duckets",
|
||
"statDiamonds": "Diamants",
|
||
"walletTitle": "Portefeuille",
|
||
"friendsTitle": "Amis",
|
||
"friendsSubtitle": "Les personnes de l'hôtel avec qui il/elle traîne",
|
||
"friendsEmpty": "Aucun ami à afficher.",
|
||
"roomsTitle": "Salons",
|
||
"roomsSubtitle": "Salons qu'il/elle possède",
|
||
"roomsEmpty": "Aucun salon à afficher.",
|
||
"roomUntitled": "Salon sans titre"
|
||
},
|
||
"rankings": {
|
||
"title": "Classements",
|
||
"subtitle": "Les 12 meilleurs joueurs classés par crédits",
|
||
"emptyState": "Aucun joueur à classer pour le moment."
|
||
},
|
||
"home": {
|
||
"welcome": "Bienvenue sur {hotelName}",
|
||
"welcomeSubtitle": "Votre hôtel rétro, désormais propulsé par Next.js",
|
||
"welcomeBody": "Traînez, collectionnez des meubles et rencontrez des amis.",
|
||
"enterHotel": "Entrer dans {hotelName}",
|
||
"onlineFriends": "Amis en ligne",
|
||
"noFriendsOnline": "Aucun ami en ligne",
|
||
"register": "S'INSCRIRE MAINTENANT",
|
||
"joinNow": "Rejoignez {hotelName} dès aujourd'hui !",
|
||
"recentUsers": "Utilisateurs récents",
|
||
"recentPhotos": "Photos récentes",
|
||
"latestNews": "Dernières actualités",
|
||
"newsTitle": "Dernières actualités",
|
||
"newsSubtitle": "Fraîchement sorties de l'hôtel",
|
||
"allNews": "Toutes les actualités →",
|
||
"noArticles": "Pas encore d'articles.",
|
||
"noPhotos": "Pas encore de photos.",
|
||
"noUsers": "Aucun utilisateur en ligne",
|
||
"latestArticle": "Dernier article"
|
||
},
|
||
"news": {
|
||
"title": "Actualités",
|
||
"subtitle": "Les dernières annonces, événements et mises à jour de l'hôtel",
|
||
"noArticles": "Pas encore d'articles."
|
||
},
|
||
"article": {
|
||
"backToNews": "← Actualités",
|
||
"reactionsTitle": "Réactions",
|
||
"reactionsSubtitle": "Dites-nous ce que vous en pensez",
|
||
"reaction": {
|
||
"like": "J'aime",
|
||
"love": "J'adore",
|
||
"wow": "Waouh"
|
||
},
|
||
"removeReaction": "Cliquez pour retirer votre réaction",
|
||
"reactWith": "Réagir avec {reaction}",
|
||
"noReactions": "Pas encore de réactions.",
|
||
"logIn": "Connectez-vous",
|
||
"toReact": "pour réagir.",
|
||
"commentsTitle": "Commentaires",
|
||
"commentsSubtitle": "Participez à la conversation",
|
||
"commentsCount": "{count} jusqu'à présent",
|
||
"noComments": "Pas encore de commentaires. Soyez le premier à commenter.",
|
||
"userNumber": "Utilisateur #{id}",
|
||
"addComment": "Ajouter un commentaire",
|
||
"commentPlaceholder": "Écrivez votre commentaire…",
|
||
"postComment": "Publier le commentaire",
|
||
"toComment": "pour laisser un commentaire."
|
||
},
|
||
"photos": {
|
||
"title": "Photos",
|
||
"subtitle": "Les dernières captures d'écran prises dans l'hôtel",
|
||
"noPhotos": "Pas encore de photos.",
|
||
"photoAlt": "Photo de l'utilisateur #{id}",
|
||
"byUser": "par l'utilisateur #{id}"
|
||
},
|
||
"badges": {
|
||
"title": "Badges",
|
||
"subtitle": "Les badges que vous pouvez gagner et afficher dans l'hôtel",
|
||
"noBadges": "Aucun badge disponible pour le moment."
|
||
},
|
||
"community": {
|
||
"title": "Communauté",
|
||
"subtitle": "Tout ce qui se passe dans l'hôtel en un seul endroit",
|
||
"open": "Ouvrir →",
|
||
"links": {
|
||
"rankings": {
|
||
"title": "Classements",
|
||
"text": "Voir les joueurs les plus riches de l'hôtel, classés par crédits."
|
||
},
|
||
"staff": {
|
||
"title": "Équipe",
|
||
"text": "Rencontrez l'équipe qui fait tourner l'hôtel chaque jour."
|
||
},
|
||
"news": {
|
||
"title": "Actualités",
|
||
"text": "Les dernières annonces, événements et mises à jour."
|
||
},
|
||
"photos": {
|
||
"title": "Photos",
|
||
"text": "Les captures d'écran partagées par la communauté dans tout l'hôtel."
|
||
},
|
||
"guilds": {
|
||
"title": "Groupes",
|
||
"text": "Parcourez les groupes que les joueurs ont créés et rejoints."
|
||
},
|
||
"leaderboards": {
|
||
"title": "Meilleurs scores",
|
||
"text": "Qui est en tête cette saison dans les statistiques de l'hôtel."
|
||
}
|
||
}
|
||
},
|
||
"guilds": {
|
||
"title": "Groupes",
|
||
"subtitle": "Parcourez les groupes que les joueurs ont créés et rejoints",
|
||
"empty": "Pas encore de groupes.",
|
||
"unnamedGuild": "Groupe sans nom",
|
||
"noDescription": "Aucune description"
|
||
},
|
||
"guild": {
|
||
"allGuilds": "← Tous les groupes",
|
||
"unnamedGuild": "Groupe sans nom",
|
||
"noDescription": "Aucune description",
|
||
"memberSingular": "Membre",
|
||
"memberPlural": "Membres",
|
||
"founded": "Fondé",
|
||
"forumLink": "Forum →",
|
||
"discussion": "Discussion",
|
||
"membersTitle": "Membres",
|
||
"memberLowerSingular": "membre",
|
||
"memberLowerPlural": "membres",
|
||
"noMembers": "Aucun membre.",
|
||
"owner": "Propriétaire",
|
||
"noMotto": "Aucune devise"
|
||
},
|
||
"guildForum": {
|
||
"backToGuild": "← Retour au groupe",
|
||
"unnamedGuild": "Groupe sans nom",
|
||
"forumTitle": "{guild} — Forum",
|
||
"threadSingular": "sujet",
|
||
"threadPlural": "sujets",
|
||
"newThread": "+ Nouveau sujet",
|
||
"empty": "Aucun sujet dans ce forum pour le moment.",
|
||
"colSubject": "Sujet",
|
||
"colAuthor": "Auteur",
|
||
"colPosts": "Messages",
|
||
"colDate": "Date",
|
||
"noSubject": "(sans sujet)",
|
||
"pinned": "Épinglé",
|
||
"locked": "Verrouillé",
|
||
"userNumber": "Utilisateur #{id}",
|
||
"unknown": "Inconnu"
|
||
},
|
||
"guildForumNew": {
|
||
"backToForum": "← Retour au forum",
|
||
"unnamedGuild": "Groupe sans nom",
|
||
"title": "Nouveau sujet",
|
||
"subtitle": "dans le forum {guild}",
|
||
"subjectLabel": "Sujet",
|
||
"subjectPlaceholder": "Sujet du fil",
|
||
"messageLabel": "Message",
|
||
"messagePlaceholder": "Écrivez votre premier message…",
|
||
"postThread": "Publier le sujet",
|
||
"cancel": "Annuler"
|
||
},
|
||
"shop": {
|
||
"title": "Boutique",
|
||
"subtitle": "Rechargez votre compte et obtenez des packs exclusifs, de la monnaie et des badges.",
|
||
"browsingCategory": "Parcourir les packs {category}.",
|
||
"all": "Tout",
|
||
"allPackages": "Tous les packs",
|
||
"packagesAvailable": "{count, plural, one {# pack disponible} other {# packs disponibles}}",
|
||
"empty": "Aucun pack disponible pour le moment.",
|
||
"buy": "Acheter"
|
||
},
|
||
"topup": {
|
||
"title": "Recharger avec PayPal",
|
||
"subtitle": "Payez en toute sécurité avec PayPal et vos crédits sont ajoutés dès que le paiement est confirmé.",
|
||
"cancelled": "Le paiement a été annulé — aucun montant n'a été prélevé.",
|
||
"chooseAmount": "Choisissez un montant",
|
||
"notConfiguredPre": "PayPal n'est pas encore configuré. Un administrateur doit définir",
|
||
"notConfiguredAnd": "et",
|
||
"notConfiguredOptional": "(et éventuellement",
|
||
"notConfiguredPost": "pour le bac à sable ou le mode réel).",
|
||
"balanceTitle": "Votre solde",
|
||
"signedInAs": "Connecté en tant que {username}",
|
||
"credits": "Crédits",
|
||
"creditsPerUnit": "Crédits pour 1,00 {currency}",
|
||
"rateLine": "Vous recevez <strong>{amount}</strong> crédits pour 1,00 {currency}. Les crédits apparaissent dans le jeu la prochaine fois que vous vous connectez."
|
||
},
|
||
"marketplace": {
|
||
"title": "Marché",
|
||
"subtitle": "Parcourez les meubles et les rares listés par les joueurs. Les annonces sont placées dans le jeu et mises à jour en direct — rendez-vous dans l'hôtel pour faire une offre.",
|
||
"activeOffers": "Offres actives",
|
||
"sellers": "Vendeurs",
|
||
"totalValue": "Valeur totale",
|
||
"activeListings": "Annonces actives",
|
||
"mostRecentFirst": "Les plus récentes en premier",
|
||
"empty": "Il n'y a aucune offre active sur le marché pour le moment. Revenez plus tard.",
|
||
"colOffer": "Offre",
|
||
"colItem": "Objet",
|
||
"colSeller": "Vendeur",
|
||
"colPrice": "Prix",
|
||
"colListed": "Publié",
|
||
"itemLabel": "Objet #{id}",
|
||
"userLabel": "Utilisateur #{id}",
|
||
"justNow": "à l'instant",
|
||
"minutesAgo": "il y a {count}m",
|
||
"hoursAgo": "il y a {count}h",
|
||
"daysAgo": "il y a {count}j"
|
||
},
|
||
"rares": {
|
||
"title": "Valeurs rares",
|
||
"subtitle": "Obtenez un aperçu de tous les rares de l'hôtel, regroupés par catégorie.",
|
||
"empty": "Nous n'avons actuellement aucun rare répertorié ici.",
|
||
"rareCount": "{count, plural, one {# rare} other {# rares}}",
|
||
"viewRares": "Voir les rares →"
|
||
},
|
||
"rareCategory": {
|
||
"rareCount": "{count, plural, one {# rare dans cette catégorie} other {# rares dans cette catégorie}}",
|
||
"allRares": "← Tous les rares",
|
||
"empty": "Aucun rare répertorié dans cette catégorie pour le moment.",
|
||
"colRare": "Rare",
|
||
"colCredits": "Crédits",
|
||
"colCurrency": "Monnaie",
|
||
"creditsValue": "{value} crédits",
|
||
"duckets": "Duckets",
|
||
"diamonds": "Diamants",
|
||
"credits": "Crédits"
|
||
},
|
||
"redeem": {
|
||
"title": "Échanger un bon",
|
||
"subtitle": "Vous avez un code de bon ? Saisissez-le ci-dessous pour ajouter la récompense à votre compte.",
|
||
"enterCode": "Entrez votre code",
|
||
"oncePerAccount": "Chaque bon ne peut être échangé qu'une seule fois par compte.",
|
||
"balanceTitle": "Votre solde",
|
||
"signedInAs": "Connecté en tant que {username}",
|
||
"credits": "Crédits",
|
||
"instantCredit": "Les récompenses échangées sont créditées instantanément et apparaissent dans le jeu la prochaine fois que vous vous connectez."
|
||
},
|
||
"help": {
|
||
"title": "Centre d'aide",
|
||
"subtitle": "Trouvez des guides, des sujets d'assistance et les règles de l'hôtel — tout ce dont vous avez besoin pour obtenir de l'aide.",
|
||
"myTickets": "Mes tickets →",
|
||
"topicsTitle": "Sujets d'assistance",
|
||
"topicsSubtitle": "Parcourez les guides et les réponses aux questions courantes",
|
||
"topicsEmpty": "Pas encore de sujets d'aide.",
|
||
"rulesTitle": "Règles de l'hôtel",
|
||
"rulesSubtitle": "Veuillez les lire avant de traîner dans l'hôtel",
|
||
"rulesEmpty": "Aucune règle publiée pour le moment.",
|
||
"categoryEmpty": "Aucune règle dans cette catégorie."
|
||
},
|
||
"helpCategory": {
|
||
"back": "← Centre d'aide",
|
||
"topicSubtitle": "Sujet du centre d'aide",
|
||
"moreTitle": "Plus de sujets d'aide",
|
||
"moreSubtitle": "Aller à un autre sujet d'assistance"
|
||
},
|
||
"helpTickets": {
|
||
"title": "Tickets d'aide",
|
||
"subtitle": "Soumettez un ticket au personnel et suivez vos demandes en cours.",
|
||
"statTotal": "Total des tickets",
|
||
"statOpen": "Ouverts",
|
||
"statClosed": "Fermés",
|
||
"newTitle": "Nouveau ticket",
|
||
"newSubtitle": "Décrivez votre problème et le personnel vous répondra",
|
||
"subjectPlaceholder": "Sujet",
|
||
"contentPlaceholder": "Décrivez votre problème…",
|
||
"submit": "Soumettre le ticket",
|
||
"listTitle": "Vos tickets",
|
||
"listSubtitle": "Toutes les demandes que vous avez envoyées au personnel",
|
||
"listEmpty": "Vous n'avez pas encore de tickets.",
|
||
"colId": "ID",
|
||
"colSubject": "Sujet",
|
||
"colStatus": "Statut",
|
||
"colCreated": "Créé",
|
||
"statusOpen": "Ouvert",
|
||
"statusClosed": "Fermé"
|
||
},
|
||
"applyStaff": {
|
||
"title": "Postuler pour {hotel}",
|
||
"subtitle": "Nous ouvrons des candidatures pour le personnel de temps en temps. Si vous tombez sur un poste dans lequel vous pensez correspondre parfaitement, n'hésitez pas à postuler.",
|
||
"noPositionsTitle": "Aucun poste ouvert",
|
||
"noPositionsBody": "Il n'y a actuellement aucun poste ouvert. Revenez plus tard pour vérifier si de nouveaux postes sont disponibles. Merci de votre intérêt.",
|
||
"noDeadline": "Aucune date limite fixée",
|
||
"deadline": "Date limite de candidature : {date}",
|
||
"alreadyApplied": "Vous avez déjà postulé pour {rank}",
|
||
"aboutYou": "À propos de vous",
|
||
"aboutPlaceholder": "Dites-nous pourquoi vous seriez un excellent {rank}…",
|
||
"applyFor": "Postuler pour {rank}"
|
||
},
|
||
"applyTeam": {
|
||
"title": "Postuler pour rejoindre l'équipe {hotel}",
|
||
"subtitle": "Nous ouvrons les candidatures pour l'équipe périodiquement. Si vous voyez une équipe qui vous correspond, n'hésitez pas à postuler !",
|
||
"noPositionsTitle": "Aucun poste dans l'équipe ouvert",
|
||
"noPositionsBody": "Il n'y a actuellement aucun poste ouvert dans l'équipe. Revenez plus tard pour vérifier les nouvelles offres. Merci !",
|
||
"pending": "Votre candidature est en attente",
|
||
"aboutYou": "À propos de vous",
|
||
"aboutPlaceholder": "Dites-nous pourquoi vous seriez un excellent choix pour {rank}…",
|
||
"applyFor": "Postuler pour {rank}"
|
||
},
|
||
"radio": {
|
||
"title": "Radio",
|
||
"subtitle": "Écoutez la radio de l'hôtel — sessions live de DJ, demandes et dédicaces.",
|
||
"nowPlaying": "En cours de lecture",
|
||
"nothingPlaying": "Rien ne joue pour le moment.",
|
||
"onAir": "À l'antenne : {dj}",
|
||
"noDj": "Aucun DJ à l'antenne.",
|
||
"audioUnsupported": "Votre navigateur ne prend pas en charge l'élément audio.",
|
||
"streamOffline": "Le flux est actuellement hors ligne.",
|
||
"exploreTitle": "Explorer la radio",
|
||
"exploreSubtitle": "Programmation, dédicaces, demandes et plus",
|
||
"linkSchedule": "Programmation",
|
||
"linkScheduleText": "Notre programme hebdomadaire de DJ et d'émissions.",
|
||
"linkShouts": "Dédicaces",
|
||
"linkShoutsText": "Dédicaces et demandes de la communauté.",
|
||
"linkRequests": "Demandes",
|
||
"linkRequestsText": "Demandez au DJ de passer votre morceau préféré.",
|
||
"linkApply": "Postuler comme DJ",
|
||
"linkApplyText": "Rejoignez l'équipe et prenez le micro.",
|
||
"linkLeaderboard": "Classement",
|
||
"linkLeaderboardText": "Meilleurs auditeurs classés par points gagnés.",
|
||
"todayTitle": "Programmation du jour",
|
||
"todayTitleWithDay": "Programmation du jour · {day}",
|
||
"todaySubtitle": "Ce qui passe à l'antenne aujourd'hui",
|
||
"fullWeek": "Toute la semaine →",
|
||
"noShowsToday": "Aucune émission prévue aujourd'hui.",
|
||
"colTime": "Horaire",
|
||
"colShow": "Émission",
|
||
"colDj": "DJ",
|
||
"untitledShow": "Émission sans titre",
|
||
"userNumber": "Utilisateur #{id}"
|
||
},
|
||
"radioSchedule": {
|
||
"title": "Programmation radio",
|
||
"subtitle": "Notre programme hebdomadaire de DJ et d'émissions",
|
||
"empty": "Aucune émission prévue pour le moment.",
|
||
"colDay": "Jour",
|
||
"colTime": "Horaire",
|
||
"colDj": "DJ",
|
||
"colShow": "Émission",
|
||
"noShows": "Aucune émission"
|
||
},
|
||
"radioShouts": {
|
||
"title": "Dédicaces radio",
|
||
"subtitle": "Dédicaces et demandes de la communauté",
|
||
"postTitle": "Publier une dédicace",
|
||
"postSubtitle": "Envoyez un message au DJ à l'antenne",
|
||
"messageLabel": "Votre message",
|
||
"messagePlaceholder": "Envoyez une dédicace au DJ…",
|
||
"shoutButton": "Dédicacer",
|
||
"loginToPost": "Connectez-vous pour publier une dédicace.",
|
||
"latestTitle": "Dernières dédicaces",
|
||
"latestSubtitle": "Les messages les plus récents des auditeurs",
|
||
"empty": "Pas encore de dédicaces. Soyez le premier !"
|
||
},
|
||
"radioContests": {
|
||
"title": "Concours radio",
|
||
"subtitle": "Écoutez et participez à nos derniers concours en direct",
|
||
"empty": "Pas encore de concours.",
|
||
"contestLabel": "Concours #{id}",
|
||
"dateUnknown": "Date inconnue"
|
||
},
|
||
"radioGiveaways": {
|
||
"title": "Concours radio",
|
||
"subtitle": "Écoutez pour tenter votre chance dans nos concours radio",
|
||
"empty": "Pas encore de concours.",
|
||
"giveawayLabel": "Concours #{id}",
|
||
"dateUnknown": "Date inconnue"
|
||
},
|
||
"radioLeaderboard": {
|
||
"title": "Classement des auditeurs radio",
|
||
"subtitle": "Top 50 des auditeurs par points gagnés à l'écoute de la radio",
|
||
"empty": "Aucun point d'auditeur à afficher pour le moment.",
|
||
"colRank": "Rang",
|
||
"colAvatar": "Avatar",
|
||
"colListener": "Auditeur",
|
||
"colPoints": "Points"
|
||
},
|
||
"radioApply": {
|
||
"title": "Postuler pour devenir DJ radio",
|
||
"subtitle": "Parlez-nous de vous et pourquoi vous seriez parfait pour l'antenne",
|
||
"latestTitle": "Votre dernière candidature",
|
||
"statusLabel": "Statut :",
|
||
"submittedOn": "· soumise le {date}",
|
||
"submitAgain": "Vous pouvez soumettre à nouveau ci-dessous si vos informations ont changé.",
|
||
"formTitle": "Formulaire de candidature",
|
||
"formSubtitle": "Tous les champs marqués comme requis doivent être remplis",
|
||
"realNameLabel": "Nom réel",
|
||
"realNamePlaceholder": "Votre nom complet",
|
||
"ageLabel": "Âge",
|
||
"availabilityLabel": "Disponibilité",
|
||
"availabilityPlaceholder": "Quels jours et à quelles heures pouvez-vous diffuser ?",
|
||
"musicStyleLabel": "Style de musique",
|
||
"musicStylePlaceholder": "ex. House, Pop, Hip-Hop",
|
||
"experienceLabel": "Expérience",
|
||
"optional": "(facultatif)",
|
||
"experiencePlaceholder": "Une expérience préalable en tant que DJ ou animateur ?",
|
||
"motivationLabel": "Motivation",
|
||
"motivationPlaceholder": "Pourquoi voulez-vous rejoindre l'équipe radio ?",
|
||
"submitButton": "Soumettre la candidature"
|
||
},
|
||
"settings": {
|
||
"accountSettings": "Paramètres du compte",
|
||
"accountSettingsSubtitle": "Gérez votre profil, votre sécurité et vos comptes connectés",
|
||
"publicProfile": "Votre profil public",
|
||
"noMotto": "Aucune devise",
|
||
"noEmail": "Aucun e-mail enregistré",
|
||
"changeMotto": "Changer la devise",
|
||
"changeMottoSubtitle": "Se met à jour instantanément dans le jeu si vous êtes en ligne",
|
||
"mottoPlaceholder": "Votre devise",
|
||
"saveMotto": "Enregistrer la devise",
|
||
"securityTitle": "Sécurité",
|
||
"securitySubtitle": "Authentification à deux facteurs",
|
||
"securityDescription": "Ajoutez une deuxième couche de protection à votre compte.",
|
||
"twoFactorLink": "Authentification à deux facteurs",
|
||
"connectionsTitle": "Comptes connectés",
|
||
"connectionsSubtitle": "Connectez-vous en un clic",
|
||
"connectionsDescription": "Associez Discord ou Google à votre compte hôtel.",
|
||
"manageConnections": "Gérer les connexions"
|
||
},
|
||
"settings2fa": {
|
||
"backToSettings": "← Paramètres",
|
||
"title": "Authentification à deux facteurs",
|
||
"subtitle": "Ajoutez une deuxième couche de sécurité avec une application d'authentification",
|
||
"nowEnabled": "L'A2F est maintenant activée. 🔒",
|
||
"disabledNotice": "L'A2F a été désactivée.",
|
||
"badCode": "Ce code n'était pas valide — réessayez.",
|
||
"noAppKeyPrefix": "L'A2F est indisponible tant que",
|
||
"noAppKeyMiddle": "n'est pas configuré (la même clé Laravel",
|
||
"noAppKeySuffix": "que votre installation AtomCMS, pour que les secrets existants restent lisibles).",
|
||
"isEnabled": "L'A2F est activée",
|
||
"onYourAccount": "sur votre compte.",
|
||
"disable": "Désactiver l'A2F",
|
||
"scanOrEnter": "Scannez ou saisissez cette clé",
|
||
"scanInstructions": "Ajoutez-la à Google Authenticator / Authy, puis saisissez le code à 6 chiffres pour confirmer.",
|
||
"manualKey": "Clé manuelle :",
|
||
"codePlaceholder": "Code à 6 chiffres",
|
||
"confirm": "Confirmer",
|
||
"enableIntro": "Ajoutez une deuxième couche de sécurité avec une application d'authentification.",
|
||
"enable": "Activer l'A2F"
|
||
},
|
||
"connections": {
|
||
"backToSettings": "← Paramètres",
|
||
"title": "Comptes connectés",
|
||
"subtitle": "Associez un compte social pour vous connecter en un clic",
|
||
"matchByEmail": "Nous le faisons correspondre à votre compte hôtel par e-mail, donc utilisez l'adresse enregistrée :",
|
||
"lookupFailed": "Nous n'avons pas pu lire vos comptes liés pour le moment. Vous pouvez toujours vous connecter ci-dessous — votre statut apparaîtra dès qu'il sera disponible.",
|
||
"statusUnavailable": "Non disponible sur cet hôtel.",
|
||
"statusConnected": "Connecté — connectez-vous avec ce compte.",
|
||
"statusNotConnected": "Non connecté.",
|
||
"connected": "Connecté",
|
||
"connectProvider": "Connecter {provider}",
|
||
"unavailable": "Indisponible",
|
||
"footerNote": "La connexion vous redirige vers le fournisseur pour autoriser, puis vous revient ici. Si l'e-mail de votre compte social ne correspond pas à un compte hôtel, vous serez redirigé vers l'écran de connexion avec une note."
|
||
},
|
||
"login": {
|
||
"title": "Connexion",
|
||
"subtitle": "Bon retour — connectez-vous pour entrer dans l'hôtel.",
|
||
"subtitle2fa": "Saisissez le code à 6 chiffres de votre application d'authentification.",
|
||
"usernamePlaceholder": "Nom d'utilisateur",
|
||
"passwordPlaceholder": "Mot de passe",
|
||
"codePlaceholder": "Code A2F",
|
||
"pleaseWait": "Veuillez patienter…",
|
||
"verify": "Vérifier",
|
||
"signIn": "Se connecter",
|
||
"or": "ou",
|
||
"continueWithDiscord": "Continuer avec Discord",
|
||
"continueWithGoogle": "Continuer avec Google",
|
||
"noAccount": "Pas de compte ?",
|
||
"createOne": "Créer un compte",
|
||
"forgotPassword": "Mot de passe oublié ?",
|
||
"errorInvalidCredentials": "Nom d'utilisateur ou mot de passe invalide",
|
||
"errorInvalid2fa": "Code A2F invalide"
|
||
},
|
||
"register": {
|
||
"title": "Créer un compte",
|
||
"subtitle": "Rejoignez l'hôtel — cela ne prend qu'un instant.",
|
||
"username": "Nom d'utilisateur",
|
||
"email": "E-mail",
|
||
"password": "Mot de passe",
|
||
"confirmPassword": "Répéter le mot de passe",
|
||
"usernamePlaceholder": "Nom d'utilisateur",
|
||
"emailPlaceholder": "E-mail",
|
||
"passwordPlaceholder": "Mot de passe (min 6 car.)",
|
||
"confirmPasswordPlaceholder": "Répéter le mot de passe",
|
||
"selectOutfit": "Sélectionnez votre tenue",
|
||
"termsAccept": "J'ai 18 ans ou plus et j'accepte les conditions et règles de {hotel}.",
|
||
"createAccount": "Créer un compte",
|
||
"creatingAccount": "Création du compte...",
|
||
"alreadyHaveAccount": "Vous avez déjà un compte ? Connectez-vous !",
|
||
"register": "S'inscrire",
|
||
"termsError": "Vous devez accepter les conditions et règles pour vous inscrire.",
|
||
"usernameError": "Le nom d'utilisateur est requis.",
|
||
"emailError": "Un e-mail valide est requis.",
|
||
"passwordError": "Le mot de passe doit contenir au moins 6 caractères.",
|
||
"confirmPasswordError": "Les mots de passe ne correspondent pas.",
|
||
"termsRequired": "Vous devez accepter les conditions et règles.",
|
||
"usernameRequired": "Le nom d'utilisateur est requis.",
|
||
"emailRequired": "L'e-mail est requis.",
|
||
"passwordRequired": "Le mot de passe est requis.",
|
||
"passwordsDontMatch": "Les mots de passe ne correspondent pas."
|
||
},
|
||
"forgot": {
|
||
"title": "Réinitialiser le mot de passe",
|
||
"subtitle": "Nous vous enverrons par e-mail un lien sécurisé pour définir un nouveau mot de passe.",
|
||
"sentNotice": "Si cet e-mail est enregistré, un lien de réinitialisation a été envoyé. Vérifiez votre boîte de réception.",
|
||
"emailPlaceholder": "Votre e-mail",
|
||
"sendResetLink": "Envoyer le lien de réinitialisation",
|
||
"backToLogin": "Retour à la connexion"
|
||
},
|
||
"reset": {
|
||
"title": "Définir un nouveau mot de passe",
|
||
"subtitle": "Choisissez un mot de passe fort que vous n'utilisez pas ailleurs.",
|
||
"passwordPlaceholder": "Nouveau mot de passe (min 6 car.)",
|
||
"resetPassword": "Réinitialiser le mot de passe",
|
||
"backToLogin": "Retour à la connexion"
|
||
},
|
||
"verify": {
|
||
"verifiedTitle": "Tout est prêt",
|
||
"verifiedSubtitle": "E-mail vérifié",
|
||
"verifiedBody": "Votre adresse e-mail a été vérifiée. Vous pouvez maintenant vous connecter et jouer.",
|
||
"goToLogin": "Aller à la connexion",
|
||
"alreadyTitle": "Déjà vérifié",
|
||
"alreadySubtitle": "Rien à faire",
|
||
"alreadyBody": "Cette adresse e-mail a déjà été confirmée.",
|
||
"unavailableTitle": "Réessayez dans un instant",
|
||
"unavailableSubtitle": "Serveur inaccessible",
|
||
"unavailableBody": "Nous n'avons pas pu joindre le serveur pour vérifier votre e-mail. Veuillez réessayer le lien dans un instant.",
|
||
"invalidTitle": "Vérification d'e-mail",
|
||
"invalidSubtitle": "Lien invalide ou expiré",
|
||
"invalidBody": "Ce lien de vérification n'est pas valide. Assurez-vous d'avoir ouvert le lien complet depuis votre e-mail, ou demandez-en un nouveau.",
|
||
"backToLogin": "Retour à la connexion"
|
||
},
|
||
"banned": {
|
||
"title": "Vous êtes banni",
|
||
"subtitle": "Compte suspendu",
|
||
"body": "Votre compte a été suspendu de l'hôtel.",
|
||
"reasonLabel": "Raison :",
|
||
"permanent": "Ce bannissement est permanent.",
|
||
"expires": "Expire le {date}.",
|
||
"contactStaff": "Si vous pensez qu'il s'agit d'une erreur, contactez l'équipe du personnel."
|
||
},
|
||
"maintenance": {
|
||
"title": "{hotel} est en maintenance",
|
||
"subtitle": "Nous serons bientôt de retour",
|
||
"staffCanLogIn": "Le personnel peut toujours se connecter."
|
||
},
|
||
"admin": {
|
||
"nav": {
|
||
"overview": "Aperçu",
|
||
"dashboard": "Tableau de bord",
|
||
"content": "Contenu",
|
||
"articles": "Articles",
|
||
"tags": "Étiquettes",
|
||
"navigator": "Navigateur",
|
||
"helpCenter": "Centre d'aide",
|
||
"advertisements": "Publicités",
|
||
"writeableBoxes": "Boîtes modifiables",
|
||
"photos": "Photos",
|
||
"tickets": "Tickets",
|
||
"events": "Events",
|
||
"polls": "Polls",
|
||
"banners": "Banners",
|
||
"prefixes": "Prefixes",
|
||
"usersAndAccess": "Utilisateurs & accès",
|
||
"users": "Utilisateurs",
|
||
"bans": "Bannissements",
|
||
"ipManagement": "Gestion IP",
|
||
"vpn": "VPN",
|
||
"applications": "Candidatures",
|
||
"teams": "Équipes",
|
||
"permissions": "Permissions",
|
||
"onlineUsers": "Online users",
|
||
"moderation": "Moderation",
|
||
"economy": "Économie",
|
||
"catalog": "Catalogue",
|
||
"shop": "Boutique",
|
||
"transactions": "Transactions",
|
||
"vouchers": "Bons",
|
||
"subscriptions": "Abonnements",
|
||
"rareValues": "Valeurs rares",
|
||
"badges": "Badges",
|
||
"achievements": "Succès",
|
||
"calendar": "Calendrier",
|
||
"radio": "Radio",
|
||
"radioHistory": "Historique radio",
|
||
"radioBanners": "Bannières",
|
||
"radioEmbed": "Intégration",
|
||
"radioApiKeys": "Clés API",
|
||
"radioModeration": "Modération",
|
||
"radioSettings": "Paramètres",
|
||
"radioMonitoring": "Surveillance",
|
||
"radioPoints": "Points",
|
||
"radioRanks": "Rangs",
|
||
"radioAutodj": "Auto DJ",
|
||
"system": "Système",
|
||
"commandocentrum": "Commandocentrum",
|
||
"emulator": "Émulateur",
|
||
"alerts": "Alertes",
|
||
"logs": "Journaux",
|
||
"auditLog": "Audit log",
|
||
"analytics": "Analytics",
|
||
"devops": "DevOps",
|
||
"wordFilter": "Filtre de mots",
|
||
"maintenance": "Maintenance",
|
||
"rooms": "Salons",
|
||
"emailTemplates": "Modèles d'e-mail",
|
||
"theme": "Thème",
|
||
"media": "Médias",
|
||
"favicon": "Favicon",
|
||
"sounds": "Sons",
|
||
"translations": "Traductions",
|
||
"import": "Importer",
|
||
"settings": "Paramètres",
|
||
"backToSite": "Retour au site",
|
||
"housekeeping": "Gouvernance",
|
||
"hotelManagementPanel": "Panneau de gestion de l'hôtel",
|
||
"rankLabel": "Rang {rank}",
|
||
"hubNewsMedia": "News & media",
|
||
"hubSiteContent": "Site content",
|
||
"hubEngagement": "Engagement",
|
||
"hubUsers": "Users",
|
||
"hubAccess": "Access & security",
|
||
"hubCatalog": "Catalog & rares",
|
||
"hubShop": "Shop & payments",
|
||
"hubTools": "Tools",
|
||
"hubObservability": "Observability"
|
||
},
|
||
"dashboard": {
|
||
"title": "Tableau de bord",
|
||
"subtitle": "Aperçu de l'hôtel & statut en direct",
|
||
"playersOnline": "Joueurs en ligne",
|
||
"articles": "Articles",
|
||
"activeBans": "Bannissements actifs",
|
||
"database": "Base de données",
|
||
"databaseConnected": "Connectée",
|
||
"databaseDown": "Indisponible",
|
||
"usersByRank": "Utilisateurs par rang",
|
||
"noAccountsToBreakDown": "Aucun compte à détailler pour le moment",
|
||
"rankLabel": "Rang {rank}",
|
||
"rankWithCount": "Rang {rank} : {count} comptes",
|
||
"recentStaffActivity": "Activité récente du personnel",
|
||
"viewAll": "Voir tout",
|
||
"noStaffActivityLogged": "Aucune activité du personnel enregistrée"
|
||
},
|
||
"articles": {
|
||
"title": "Articles",
|
||
"subtitle": "Articles d'actualité — les 50 plus récents",
|
||
"newArticle": "+ Nouvel article",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noArticles": "Pas encore d'articles",
|
||
"confirmDelete": "Êtes-vous sûr de vouloir supprimer « {title} » ?",
|
||
"colTitle": "Titre",
|
||
"colSlug": "Slug",
|
||
"colAuthor": "Auteur",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"title": "Titre",
|
||
"titlePlaceholder": "Titre de l'article",
|
||
"slug": "Slug",
|
||
"slugPlaceholder": "slug-url-article",
|
||
"category": "Catégorie",
|
||
"categoryPlaceholder": "Sélectionnez une catégorie",
|
||
"body": "Corps",
|
||
"bodyPlaceholder": "Rédigez le contenu de votre article…",
|
||
"image": "Image",
|
||
"imagePlaceholder": "https://example.com/image.png",
|
||
"thumbnail": "Vignette",
|
||
"thumbnailPlaceholder": "https://example.com/thumb.png",
|
||
"published": "Publié",
|
||
"featured": "À la une",
|
||
"save": "Enregistrer l'article",
|
||
"saving": "Enregistrement…",
|
||
"deleteArticle": "Supprimer l'article",
|
||
"deleteConfirm": "Cette action est irréversible. L'article sera définitivement supprimé.",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"tags": {
|
||
"title": "Étiquettes",
|
||
"subtitle": "Étiquettes d'articles / catégories",
|
||
"addTag": "Ajouter une étiquette",
|
||
"name": "Nom",
|
||
"namePlaceholder": "Nom de l'étiquette",
|
||
"backgroundColour": "Couleur de fond",
|
||
"createTag": "Créer l'étiquette",
|
||
"editTag": "Modifier l'étiquette",
|
||
"updateTag": "Mettre à jour l'étiquette",
|
||
"deleteTag": "Supprimer l'étiquette",
|
||
"confirmDelete": "Supprimer « {name} » ?",
|
||
"noTags": "Pas encore d'étiquettes",
|
||
"colId": "ID",
|
||
"colTag": "Étiquette",
|
||
"colColour": "Couleur",
|
||
"colUsedBy": "Utilisée par",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions"
|
||
},
|
||
"navigation": {
|
||
"title": "Navigateur",
|
||
"flatCategories": "Catégories plates",
|
||
"publicRooms": "Salons publics",
|
||
"addCategory": "Ajouter une catégorie",
|
||
"editCategory": "Modifier la catégorie",
|
||
"deleteCategory": "Supprimer la catégorie",
|
||
"categoryName": "Nom de la catégorie",
|
||
"categoryNamePlaceholder": "ex. Salon & Discussion",
|
||
"categoryOrder": "Ordre",
|
||
"roomName": "Nom du salon",
|
||
"roomNamePlaceholder": "ex. Salon d'accueil",
|
||
"roomId": "ID du salon",
|
||
"roomIdPlaceholder": "ID numérique du salon",
|
||
"save": "Enregistrer",
|
||
"cancel": "Annuler",
|
||
"noCategories": "Pas encore de catégories",
|
||
"noPublicRooms": "Pas encore de salons publics",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colOrder": "Ordre",
|
||
"colRooms": "Salons",
|
||
"colActions": "Actions"
|
||
},
|
||
"helpCenter": {
|
||
"title": "Centre d'aide",
|
||
"subtitle": "Entrées d'assistance et gestion des FAQ",
|
||
"entries": "Entrées",
|
||
"newEntry": "+ Nouvelle entrée",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noEntries": "Pas encore d'entrées",
|
||
"confirmDelete": "Supprimer « {title} » ?",
|
||
"colId": "ID",
|
||
"colTitle": "Titre",
|
||
"colCategory": "Catégorie",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"title": "Titre",
|
||
"titlePlaceholder": "Titre de l'entrée",
|
||
"category": "Catégorie",
|
||
"categoryPlaceholder": "Sélectionnez une catégorie",
|
||
"body": "Corps",
|
||
"bodyPlaceholder": "Rédigez la réponse…",
|
||
"save": "Enregistrer l'entrée",
|
||
"saving": "Enregistrement…",
|
||
"deleteEntry": "Supprimer l'entrée",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"ads": {
|
||
"title": "Publicités",
|
||
"subtitle": "Gérer les publicités et bannières promotionnelles de l'hôtel",
|
||
"newAd": "+ Nouvelle pub",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noAds": "Pas encore de publicités",
|
||
"confirmDelete": "Supprimer cette publicité ?",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colImage": "Image",
|
||
"colUrl": "URL",
|
||
"colViews": "Vues",
|
||
"colStatus": "Statut",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"name": "Nom",
|
||
"namePlaceholder": "Nom de la pub",
|
||
"image": "URL de l'image",
|
||
"imagePlaceholder": "https://example.com/banner.png",
|
||
"url": "URL cible",
|
||
"urlPlaceholder": "https://example.com",
|
||
"enabled": "Activée",
|
||
"save": "Enregistrer la pub",
|
||
"saving": "Enregistrement…",
|
||
"deleteAd": "Supprimer la pub",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"writeableBoxes": {
|
||
"title": "Boîtes modifiables",
|
||
"subtitle": "Panneaux de contenu affichés dans l'hôtel et le CMS",
|
||
"newBox": "Nouvelle boîte",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noBoxes": "Pas encore de boîtes modifiables",
|
||
"confirmDelete": "Supprimer cette boîte ?",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colLocation": "Emplacement",
|
||
"colUpdated": "Mis à jour",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"name": "Nom",
|
||
"namePlaceholder": "Nom de la boîte",
|
||
"location": "Emplacement",
|
||
"locationPlaceholder": "ex. accueil, sidebar",
|
||
"content": "Contenu",
|
||
"contentPlaceholder": "Rédigez le contenu de la boîte…",
|
||
"enabled": "Activée",
|
||
"save": "Enregistrer la boîte",
|
||
"saving": "Enregistrement…",
|
||
"deleteBox": "Supprimer la boîte",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"photos": {
|
||
"title": "Modération des photos",
|
||
"subtitle": "Photos récentes prises dans le jeu",
|
||
"delete": "Supprimer",
|
||
"approve": "Approuver",
|
||
"noPhotos": "Aucune photo à modérer",
|
||
"confirmDelete": "Supprimer cette photo définitivement ?",
|
||
"colId": "ID",
|
||
"colPreview": "Aperçu",
|
||
"colUser": "Utilisateur",
|
||
"colRoom": "Salon",
|
||
"colTimestamp": "Horodatage",
|
||
"colActions": "Actions",
|
||
"photoAlt": "Photo utilisateur #{id}",
|
||
"byUser": "par {username}"
|
||
},
|
||
"users": {
|
||
"title": "Utilisateurs",
|
||
"subtitle": "Parcourir, rechercher et gérer les comptes de l'hôtel",
|
||
"search": "Rechercher",
|
||
"searchPlaceholder": "Rechercher par nom d'utilisateur, e-mail ou ID…",
|
||
"searchResults": "{count, plural, one {# résultat} other {# résultats}} pour « {query} »",
|
||
"noResults": "Aucun utilisateur trouvé",
|
||
"colId": "ID",
|
||
"colUsername": "Nom d'utilisateur",
|
||
"colEmail": "E-mail",
|
||
"colRank": "Rang",
|
||
"colOnline": "En ligne",
|
||
"colRegistered": "Inscrit",
|
||
"colLastOnline": "Dernière connexion",
|
||
"colActions": "Actions",
|
||
"yes": "Oui",
|
||
"no": "Non",
|
||
"edit": "Modifier",
|
||
"setRank": "Définir le rang",
|
||
"disconnect": "Déconnecter",
|
||
"alert": "Alerte",
|
||
"ban": "Bannir",
|
||
"detail": {
|
||
"title": "Utilisateur : {username}",
|
||
"subtitle": "Détails du compte et gestion",
|
||
"overview": "Aperçu",
|
||
"actions": "Actions",
|
||
"username": "Nom d'utilisateur",
|
||
"email": "E-mail",
|
||
"motto": "Devise",
|
||
"rank": "Rang",
|
||
"credits": "Crédits",
|
||
"duckets": "Duckets",
|
||
"diamonds": "Diamants",
|
||
"online": "En ligne",
|
||
"registered": "Inscrit",
|
||
"lastOnline": "Dernière connexion",
|
||
"ipAddress": "Adresse IP",
|
||
"machineId": "ID machine",
|
||
"sendAlert": "Envoyer une alerte",
|
||
"sendMessage": "Envoyer un message",
|
||
"disconnectUser": "Déconnecter l'utilisateur",
|
||
"banUser": "Bannir l'utilisateur",
|
||
"resetPassword": "Réinitialiser le mot de passe",
|
||
"deleteUser": "Supprimer l'utilisateur",
|
||
"confirmDelete": "Êtes-vous sûr de vouloir supprimer {username} ? Cette action est irréversible."
|
||
},
|
||
"editForm": {
|
||
"title": "Modifier l'utilisateur : {username}",
|
||
"subtitle": "Modifier les détails du compte",
|
||
"username": "Nom d'utilisateur",
|
||
"usernamePlaceholder": "Nom d'utilisateur",
|
||
"email": "E-mail",
|
||
"emailPlaceholder": "[email protected]",
|
||
"motto": "Devise",
|
||
"mottoPlaceholder": "Devise de l'utilisateur",
|
||
"rank": "Rang",
|
||
"credits": "Crédits",
|
||
"duckets": "Duckets",
|
||
"diamonds": "Diamants",
|
||
"save": "Enregistrer les modifications",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"bans": {
|
||
"title": "Bannissements",
|
||
"subtitle": "Gérer les bannissements de compte, IP et machine",
|
||
"newBan": "Nouveau bannissement",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noBans": "Pas encore de bannissements",
|
||
"confirmDelete": "Supprimer ce bannissement ?",
|
||
"colId": "ID",
|
||
"colValue": "Valeur",
|
||
"colType": "Type",
|
||
"colReason": "Raison",
|
||
"colBannedBy": "Banni par",
|
||
"colExpires": "Expire",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"value": "Valeur",
|
||
"valuePlaceholder": "Nom d'utilisateur, IP ou ID machine",
|
||
"type": "Type",
|
||
"typeUser": "Utilisateur",
|
||
"typeIp": "IP",
|
||
"typeMachine": "Machine",
|
||
"reason": "Raison",
|
||
"reasonPlaceholder": "Motif du bannissement",
|
||
"expiresAt": "Expire le",
|
||
"permanent": "Permanent",
|
||
"save": "Enregistrer le bannissement",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"ip": {
|
||
"title": "Gestion IP",
|
||
"subtitle": "Gérer la liste blanche et la liste noire des IP",
|
||
"whitelist": "Liste blanche",
|
||
"blacklist": "Liste noire",
|
||
"addIp": "Ajouter une IP",
|
||
"ipAddress": "Adresse IP",
|
||
"ipAddressPlaceholder": "ex. 127.0.0.1",
|
||
"reason": "Raison",
|
||
"reasonPlaceholder": "Motif de l'inscription",
|
||
"add": "Ajouter",
|
||
"remove": "Retirer",
|
||
"confirmRemove": "Retirer cette IP de la {list} ?",
|
||
"noWhitelistedIps": "Aucune IP en liste blanche",
|
||
"noBlacklistedIps": "Aucune IP en liste noire",
|
||
"colIp": "IP",
|
||
"colReason": "Raison",
|
||
"colAdded": "Ajouté",
|
||
"colActions": "Actions"
|
||
},
|
||
"vpn": {
|
||
"title": "Détection VPN / Proxy",
|
||
"subtitle": "Configurer les paramètres de détection VPN et proxy",
|
||
"enabled": "Activé",
|
||
"apiKey": "Clé API",
|
||
"apiKeyPlaceholder": "Votre clé API de détection VPN",
|
||
"apiKeyHint": "Laisser vide pour désactiver",
|
||
"blockOnDetect": "Bloquer à la détection",
|
||
"blockOnDetectHint": "Bloquer automatiquement les utilisateurs détectés derrière un VPN ou proxy",
|
||
"save": "Enregistrer les paramètres",
|
||
"saving": "Enregistrement…",
|
||
"settingsSaved": "Paramètres VPN enregistrés avec succès"
|
||
},
|
||
"applications": {
|
||
"title": "Candidatures au personnel",
|
||
"subtitle": "Candidatures en attente et examinées",
|
||
"pending": "En attente",
|
||
"approved": "Approuvée",
|
||
"rejected": "Rejetée",
|
||
"noApplications": "Pas encore de candidatures",
|
||
"colId": "ID",
|
||
"colApplicant": "Candidat",
|
||
"colPosition": "Poste",
|
||
"colStatus": "Statut",
|
||
"colSubmitted": "Soumise",
|
||
"colActions": "Actions",
|
||
"review": "Examiner",
|
||
"approve": "Approuver",
|
||
"reject": "Rejeter",
|
||
"confirmApprove": "Approuver {username} pour {position} ?",
|
||
"confirmReject": "Rejeter la candidature de {username} pour {position} ?",
|
||
"detail": {
|
||
"title": "Candidature de {username}",
|
||
"subtitle": "Pour {position}",
|
||
"about": "À propos du candidat",
|
||
"message": "Message de candidature",
|
||
"status": "Statut",
|
||
"submitted": "Soumise",
|
||
"noMessage": "Aucun message fourni"
|
||
}
|
||
},
|
||
"teams": {
|
||
"title": "Équipes",
|
||
"subtitle": "Définir les noms et descriptions des rangs du personnel",
|
||
"addRank": "Ajouter un rang",
|
||
"editRank": "Modifier le rang",
|
||
"deleteRank": "Supprimer le rang",
|
||
"noTeams": "Pas encore de définitions de rangs",
|
||
"confirmDelete": "Supprimer la définition du rang {id} ?",
|
||
"colId": "ID",
|
||
"colRank": "Rang",
|
||
"colName": "Nom",
|
||
"colBadge": "Badge",
|
||
"colColour": "Couleur",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"rankId": "ID du rang",
|
||
"rankIdPlaceholder": "ID numérique du rang",
|
||
"name": "Nom",
|
||
"namePlaceholder": "ex. Administrateur",
|
||
"badge": "Code du badge",
|
||
"badgePlaceholder": "ex. ADM001",
|
||
"colour": "Couleur",
|
||
"colourPlaceholder": "ex. #ff0000",
|
||
"save": "Enregistrer la définition d'équipe",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"permissions": {
|
||
"title": "Permissions",
|
||
"subtitle": "Gérer les permissions basées sur les rangs pour le panneau d'administration",
|
||
"addPermission": "Ajouter une permission",
|
||
"editPermission": "Modifier la permission",
|
||
"deletePermission": "Supprimer la permission",
|
||
"noPermissions": "Aucune permission configurée pour le moment",
|
||
"confirmDelete": "Supprimer cette permission ?",
|
||
"colId": "ID",
|
||
"colRank": "Rang",
|
||
"colPermission": "Permission",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"rankId": "ID du rang",
|
||
"rankIdPlaceholder": "Rang minimum requis",
|
||
"permission": "Clé de permission",
|
||
"permissionPlaceholder": "ex. admin.articles.manage",
|
||
"save": "Enregistrer la permission",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"catalog": {
|
||
"title": "Catalogue",
|
||
"subtitle": "Parcourir et gérer les pages et articles du catalogue",
|
||
"pages": "Pages",
|
||
"items": "Articles",
|
||
"addPage": "Ajouter une page",
|
||
"editPage": "Modifier la page",
|
||
"deletePage": "Supprimer la page",
|
||
"addItem": "Ajouter un article",
|
||
"editItem": "Modifier l'article",
|
||
"deleteItem": "Supprimer l'article",
|
||
"noPages": "Pas encore de pages catalogue",
|
||
"noItems": "Aucun article sur cette page",
|
||
"confirmDeletePage": "Supprimer la page catalogue « {name} » ?",
|
||
"confirmDeleteItem": "Supprimer cet article ?",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colIcon": "Icône",
|
||
"colOrder": "Ordre",
|
||
"colItems": "Articles",
|
||
"colEnabled": "Activé",
|
||
"colActions": "Actions",
|
||
"colItemId": "ID article",
|
||
"colItemName": "Nom de l'article",
|
||
"colCostCredits": "Coût (crédits)",
|
||
"colCostPoints": "Coût (points)",
|
||
"colLimited": "Limité",
|
||
"pageForm": {
|
||
"name": "Nom",
|
||
"namePlaceholder": "Nom de la page",
|
||
"icon": "ID icône",
|
||
"iconPlaceholder": "ID numérique de l'icône",
|
||
"order": "Ordre",
|
||
"enabled": "Activée",
|
||
"parent": "Page parente",
|
||
"parentNone": "Aucune (racine)",
|
||
"save": "Enregistrer la page",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
},
|
||
"itemForm": {
|
||
"itemId": "ID article",
|
||
"itemName": "Nom de l'article",
|
||
"costCredits": "Coût en crédits",
|
||
"costDuckets": "Coût en duckets",
|
||
"costDiamonds": "Coût en diamants",
|
||
"limitedStack": "Taille du stock limité",
|
||
"limitedSold": "Limité vendu",
|
||
"save": "Enregistrer l'article",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"shop": {
|
||
"title": "Boutique",
|
||
"subtitle": "Gérer les packs et les commandes",
|
||
"packages": "Packs",
|
||
"orders": "Commandes",
|
||
"newPackage": "+ Nouveau pack",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"viewOrder": "Voir",
|
||
"noPackages": "Pas encore de packs boutique",
|
||
"noOrders": "Pas encore de commandes",
|
||
"confirmDelete": "Supprimer ce pack ?",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colPrice": "Prix",
|
||
"colCurrency": "Devise",
|
||
"colType": "Type",
|
||
"colSold": "Vendu",
|
||
"colEnabled": "Activé",
|
||
"colActions": "Actions",
|
||
"colOrderId": "ID commande",
|
||
"colCustomer": "Client",
|
||
"colPackage": "Pack",
|
||
"colAmount": "Montant",
|
||
"colStatus": "Statut",
|
||
"colDate": "Date",
|
||
"statusPending": "En attente",
|
||
"statusCompleted": "Terminée",
|
||
"statusRefunded": "Remboursée",
|
||
"form": {
|
||
"name": "Nom",
|
||
"namePlaceholder": "Nom du pack",
|
||
"description": "Description",
|
||
"descriptionPlaceholder": "Description du pack",
|
||
"price": "Prix",
|
||
"currency": "Devise",
|
||
"currencyPlaceholder": "EUR, USD, GBP…",
|
||
"type": "Type",
|
||
"typeCredits": "Crédits",
|
||
"typeDuckets": "Duckets",
|
||
"typeDiamonds": "Diamants",
|
||
"typeBadge": "Badge",
|
||
"typeFurni": "Meuble",
|
||
"typeRank": "Rang",
|
||
"amount": "Quantité",
|
||
"badgeCode": "Code du badge",
|
||
"badgeCodePlaceholder": "ex. VIP001",
|
||
"rankId": "ID du rang",
|
||
"furniItems": "Articles meubles",
|
||
"enabled": "Activé",
|
||
"save": "Enregistrer le pack",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"transactions": {
|
||
"title": "Transactions",
|
||
"subtitle": "Journal des paiements PayPal",
|
||
"noTransactions": "Pas encore de transactions",
|
||
"colId": "ID",
|
||
"colUser": "Utilisateur",
|
||
"colAmount": "Montant",
|
||
"colCurrency": "Devise",
|
||
"colPackage": "Pack",
|
||
"colStatus": "Statut",
|
||
"colDate": "Date",
|
||
"colActions": "Actions",
|
||
"statusCompleted": "Terminée",
|
||
"statusPending": "En attente",
|
||
"statusFailed": "Échouée",
|
||
"statusRefunded": "Remboursée",
|
||
"detail": {
|
||
"title": "Transaction #{id}",
|
||
"paypalId": "ID PayPal",
|
||
"payerEmail": "E-mail du payeur",
|
||
"grossAmount": "Montant brut",
|
||
"fee": "Frais",
|
||
"netAmount": "Montant net"
|
||
}
|
||
},
|
||
"vouchers": {
|
||
"title": "Bons d'achat",
|
||
"subtitle": "Gérer les codes de bons échangeables",
|
||
"newVoucher": "+ Nouveau bon",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noVouchers": "Pas encore de bons",
|
||
"confirmDelete": "Supprimer le bon « {code} » ?",
|
||
"colId": "ID",
|
||
"colCode": "Code",
|
||
"colValue": "Valeur",
|
||
"colType": "Type",
|
||
"colUses": "Utilisations / Max",
|
||
"colExpires": "Expire",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"code": "Code",
|
||
"codePlaceholder": "ex. ETE2025",
|
||
"value": "Valeur",
|
||
"type": "Type",
|
||
"typeCredits": "Crédits",
|
||
"typeDuckets": "Duckets",
|
||
"typeDiamonds": "Diamants",
|
||
"typeBadge": "Badge",
|
||
"typeFurni": "Meuble",
|
||
"typeRank": "Rang",
|
||
"badgeCode": "Code du badge",
|
||
"badgeCodePlaceholder": "ex. VIP001",
|
||
"rankId": "ID du rang",
|
||
"maxUses": "Utilisations max",
|
||
"maxUsesPlaceholder": "0 = illimité",
|
||
"expiresAt": "Expire le",
|
||
"enabled": "Activé",
|
||
"save": "Enregistrer le bon",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"subscriptions": {
|
||
"title": "Abonnements",
|
||
"subtitle": "Abonnements récurrents actifs",
|
||
"noSubscriptions": "Aucun abonnement actif",
|
||
"cancel": "Résilier",
|
||
"confirmCancel": "Résilier l'abonnement de {username} ?",
|
||
"colId": "ID",
|
||
"colUser": "Utilisateur",
|
||
"colPackage": "Pack",
|
||
"colAmount": "Montant",
|
||
"colInterval": "Intervalle",
|
||
"colStarted": "Démarré",
|
||
"colNextBilling": "Prochaine facturation",
|
||
"colStatus": "Statut",
|
||
"colActions": "Actions",
|
||
"statusActive": "Actif",
|
||
"statusCancelled": "Résilié",
|
||
"statusExpired": "Expiré"
|
||
},
|
||
"rareValues": {
|
||
"title": "Valeurs rares",
|
||
"subtitle": "Gérer les catégories de valeurs rares et les prix des articles",
|
||
"categories": "Catégories",
|
||
"items": "Articles",
|
||
"addCategory": "Ajouter une catégorie",
|
||
"editCategory": "Modifier la catégorie",
|
||
"deleteCategory": "Supprimer la catégorie",
|
||
"noCategories": "Pas encore de catégories de valeurs rares",
|
||
"confirmDeleteCategory": "Supprimer la catégorie « {name} » et tous ses articles ?",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colItems": "Articles",
|
||
"colUpdated": "Mis à jour",
|
||
"colActions": "Actions",
|
||
"colItemName": "Nom de l'article",
|
||
"colCredits": "Crédits",
|
||
"colPoints": "Points",
|
||
"colPointType": "Type de points",
|
||
"categoryForm": {
|
||
"name": "Nom",
|
||
"namePlaceholder": "Nom de la catégorie",
|
||
"save": "Enregistrer la catégorie",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
},
|
||
"itemForm": {
|
||
"itemName": "Nom de l'article",
|
||
"itemNamePlaceholder": "ex. Trône",
|
||
"credits": "Valeur en crédits",
|
||
"points": "Valeur en points",
|
||
"pointType": "Type de points",
|
||
"pointTypeDuckets": "Duckets",
|
||
"pointTypeDiamonds": "Diamants",
|
||
"save": "Enregistrer l'article",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"badges": {
|
||
"title": "Badges",
|
||
"subtitle": "Télécharger, attribuer et gérer le catalogue de badges",
|
||
"upload": "Télécharger",
|
||
"giveBadge": "Attribuer un badge",
|
||
"catalogue": "Catalogue",
|
||
"uploadTitle": "Télécharger un nouveau badge",
|
||
"uploadSubtitle": "Télécharger un fichier image de badge",
|
||
"badgeCode": "Code du badge",
|
||
"badgeCodePlaceholder": "ex. VIP001",
|
||
"badgeFile": "Fichier du badge",
|
||
"badgeFileHint": "PNG ou GIF, recommandé 40x40",
|
||
"uploadButton": "Choisir un fichier",
|
||
"uploading": "Téléchargement…",
|
||
"giveTitle": "Attribuer un badge à un utilisateur",
|
||
"giveSubtitle": "Accorder un badge à un utilisateur spécifique",
|
||
"username": "Nom d'utilisateur",
|
||
"usernamePlaceholder": "Nom d'utilisateur cible",
|
||
"giveButton": "Attribuer le badge",
|
||
"giving": "Attribution…",
|
||
"catalogueTitle": "Catalogue des badges",
|
||
"catalogueSubtitle": "Tous les badges disponibles dans l'hôtel",
|
||
"noBadges": "Aucun badge dans le catalogue",
|
||
"search": "Rechercher des badges",
|
||
"searchPlaceholder": "Rechercher par code ou nom…",
|
||
"colCode": "Code",
|
||
"colImage": "Image",
|
||
"colName": "Nom",
|
||
"colDescription": "Description",
|
||
"colActions": "Actions"
|
||
},
|
||
"achievements": {
|
||
"title": "Succès",
|
||
"subtitle": "Lecture seule de la liste des succès du jeu",
|
||
"noAchievements": "Aucun succès configuré",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colCategory": "Catégorie",
|
||
"colLevels": "Niveaux",
|
||
"colReward": "Récompense",
|
||
"colProgress": "Progression",
|
||
"levelLabel": "Niveau {level}",
|
||
"rewardCredits": "{count} crédits",
|
||
"rewardPoints": "{count} {points}"
|
||
},
|
||
"calendar": {
|
||
"title": "Campagnes du calendrier",
|
||
"subtitle": "Lecture seule de la liste des campagnes et événements du calendrier",
|
||
"noCampaigns": "Pas encore de campagnes calendrier",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colStart": "Début",
|
||
"colEnd": "Fin",
|
||
"colType": "Type",
|
||
"colReward": "Récompense",
|
||
"colActions": "Actions",
|
||
"detail": {
|
||
"title": "Campagne : {name}",
|
||
"subtitle": "Détails de l'événement calendrier",
|
||
"days": "Jours",
|
||
"dayLabel": "Jour {day}",
|
||
"reward": "Récompense",
|
||
"noDays": "Aucun jour configuré pour cette campagne"
|
||
}
|
||
},
|
||
"radio": {
|
||
"title": "Modération radio",
|
||
"subtitle": "Latest shouts, DJ applications and on-air schedules (25 most recent of each).",
|
||
"moderation": "Moderation",
|
||
"shouts": "Dédicaces",
|
||
"applications": "Candidatures",
|
||
"schedules": "Programmations",
|
||
"settings": "Paramètres",
|
||
"embed": "Intégration",
|
||
"ranks": "Rangs",
|
||
"history": "Historique",
|
||
"apiKeys": "Clés API",
|
||
"points": "Points",
|
||
"autoDj": "AutoDJ",
|
||
"monitoring": {
|
||
"title": "Surveillance radio",
|
||
"subtitle": "Read-only live probe of the configured radio endpoints (radio_now_playing_api_url, radio_listeners_api_url). Each request fails soft with a {timeout}s timeout — no data is written. Configure URLs under Settings.",
|
||
"stream": "Stream",
|
||
"online": "En ligne",
|
||
"offline": "Hors ligne",
|
||
"notConfigured": "Not configured",
|
||
"nowPlaying": "Now playing",
|
||
"nowPlayingApi": "Now-playing API",
|
||
"listenersApi": "Listeners API",
|
||
"listeners": "Auditeurs",
|
||
"currentSong": "Chanson en cours",
|
||
"bitrate": "Débit",
|
||
"status": "Statut",
|
||
"noNowPlayingHint": "no now-playing API set",
|
||
"noListenersHint": "no listeners API set",
|
||
"endpointDiagnostics": "Endpoint diagnostics",
|
||
"diagnosticsLegend": "<span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-green-600/20 text-[var(--color-text)]\">OK</span> reachable · <span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-[var(--color-primary)]/18 text-[var(--color-text)]\">WARN</span> not configured · <span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-red-500/22 text-[var(--color-text)]\">ERROR</span> fetch failed / timed out.",
|
||
"streamUrl": "Stream URL",
|
||
"unreachable": "unreachable",
|
||
"refresh": "Actualiser"
|
||
},
|
||
"user": "User",
|
||
"message": "Message",
|
||
"posted": "Posted",
|
||
"realName": "Real Name",
|
||
"age": "Age",
|
||
"style": "Style",
|
||
"applied": "Applied",
|
||
"day": "Day",
|
||
"start": "Start",
|
||
"end": "End",
|
||
"show": "Show",
|
||
"status": "Statut",
|
||
"active": "active",
|
||
"inactive": "inactive",
|
||
"hidden": "hidden",
|
||
"activeSchedules": "Active schedules",
|
||
"noShouts": "Aucune dédicace à modérer",
|
||
"noApplications": "No applications submitted.",
|
||
"noSchedules": "No schedules configured.",
|
||
"deleteShout": "Supprimer",
|
||
"confirmDeleteShout": "Supprimer cette dédicace ?",
|
||
"pendingApplications": "Candidatures en attente",
|
||
"settingsForm": {
|
||
"title": "Radio Settings",
|
||
"subtitle": "Edits write to website_settings (radio_* keys) and bust the runtime settings cache. Booleans use 0 / 1.",
|
||
"enabled": "Enabled",
|
||
"disabled": "Disabled",
|
||
"totalKeys": "Total keys",
|
||
"configured": "Configured",
|
||
"curatedHint": "curated keys with a value",
|
||
"customKeys": "Custom keys",
|
||
"saveAll": "Save all",
|
||
"singleKey": "Add / overwrite a single key",
|
||
"keyPlaceholder": "radio_custom_key",
|
||
"valuePlaceholder": "value",
|
||
"commentPlaceholder": "comment (optional)",
|
||
"saveSingle": "Save",
|
||
"otherSettings": "Other radio settings",
|
||
"dbError": "Could not load settings (database unavailable). Defaults will be created on save."
|
||
},
|
||
"embedPage": {
|
||
"title": "Radio Embed",
|
||
"subtitle": "Copy-ready embed code for the live stream. Read-only — nothing here writes to the database. Configure the stream URL in Radio Settings (radio_stream_url).",
|
||
"streamUrl": "Stream URL",
|
||
"configured": "Configured",
|
||
"missing": "Missing",
|
||
"radioName": "Radio name",
|
||
"nowPlayingApi": "Now-playing API",
|
||
"set": "Set",
|
||
"notSet": "Not set",
|
||
"noStreamUrl": "No stream URL configured",
|
||
"noStreamUrlText": "There is no radio_stream_url set, so there is nothing to embed yet.",
|
||
"goToSettings": "Go to Radio Settings",
|
||
"livePreview": "Live preview",
|
||
"livePreviewText": "This is the bare <audio> player as visitors will see it. Press play to confirm the stream is reachable.",
|
||
"source": "Source",
|
||
"audioSnippet": "Audio player snippet",
|
||
"audioSnippetDesc": "Drop-in HTML5 audio player pointed straight at the stream. Works anywhere plain HTML is allowed.",
|
||
"iframeSnippet": "Iframe wrapper snippet",
|
||
"iframeSnippetDesc": "Embeds the site’s own radio player page in an iframe — keeps your styling and now-playing info. Adjust width/height to taste.",
|
||
"audioUnsupported": "Your browser does not support the audio element."
|
||
},
|
||
"banners": {
|
||
"title": "Bannières",
|
||
"heading": "Radio Banners",
|
||
"description": "Promotional banners shown on the radio page, ordered by sort order.",
|
||
"addBanner": "Ajouter une bannière",
|
||
"createBanner": "Create banner",
|
||
"deleteBanner": "Supprimer la bannière",
|
||
"noBanners": "No banners yet — add one above.",
|
||
"existing": "Existing banners ({count})",
|
||
"save": "Save",
|
||
"delete": "Delete",
|
||
"byUser": "by user {id}",
|
||
"active": "active",
|
||
"hidden": "hidden",
|
||
"bannerAlt": "Radio banner",
|
||
"statusActive": "Active",
|
||
"statusHidden": "Hidden",
|
||
"dbError": "Could not load banners (database unavailable).",
|
||
"form": {
|
||
"imagePath": "Image path / URL",
|
||
"imagePathPlaceholder": "/storage/radio/banner.png",
|
||
"title": "Title",
|
||
"description": "Description",
|
||
"sortOrder": "Sort order",
|
||
"active": "Active"
|
||
}
|
||
},
|
||
"ranksForm": {
|
||
"title": "Rangs radio",
|
||
"subtitle": "DJ / staff ranks assignable on radio applications.",
|
||
"dbError": "Could not load ranks (database unavailable).",
|
||
"active": "Active",
|
||
"addRank": "Add rank",
|
||
"name": "Name",
|
||
"badgeCode": "Badge code",
|
||
"description": "Description",
|
||
"createRank": "Create rank",
|
||
"existing": "Existing ranks ({count})",
|
||
"noRanks": "No ranks yet — add one above.",
|
||
"activeLabel": "active",
|
||
"inactiveLabel": "inactive",
|
||
"save": "Save",
|
||
"deleteRank": "Delete rank #{id}"
|
||
},
|
||
"historyPage": {
|
||
"title": "Radio Play History",
|
||
"subtitle": "Past DJ shows and airtime (radio_history), most recent first. Read-only log of who was on air, when, and how many listeners tuned in.",
|
||
"dbError": "Could not load radio history (database unavailable).",
|
||
"showsLogged": "Shows logged",
|
||
"onAirNow": "On air now",
|
||
"uniqueDjs": "Unique DJs",
|
||
"peakListeners": "Peak listeners",
|
||
"empty": "No radio history recorded yet.",
|
||
"showLog": "Show log ({count})",
|
||
"colDj": "DJ",
|
||
"colShow": "Show",
|
||
"colStarted": "Started",
|
||
"colEnded": "Ended",
|
||
"colAirtime": "Airtime",
|
||
"colListeners": "Listeners",
|
||
"colNotes": "Notes",
|
||
"onAir": "on air"
|
||
},
|
||
"apiKeysForm": {
|
||
"title": "Clés API",
|
||
"subtitle": "API keys for external radio integrations (radio_api_keys). Keys are generated server-side and shown masked — copy the full value from the database when first issued.",
|
||
"dbError": "Could not load API keys (database unavailable).",
|
||
"totalKeys": "Total keys",
|
||
"active": "Active",
|
||
"inactive": "Inactive",
|
||
"generateKey": "Générer une nouvelle clé",
|
||
"generateHint": "The secret key is generated automatically with cryptographic randomness — you do not enter it.",
|
||
"name": "Name",
|
||
"namePlaceholder": "AzureCast bridge",
|
||
"rateLimit": "Rate limit (requests/min)",
|
||
"allowedIps": "Allowed IPs (optional)",
|
||
"allowedIpsPlaceholder": "comma-separated, blank = any",
|
||
"generate": "Générer",
|
||
"existingKeys": "Existing keys ({count})",
|
||
"noKeys": "No API keys yet — generate one above.",
|
||
"colName": "Name",
|
||
"colKey": "Clé",
|
||
"colAllowedIps": "Allowed IPs",
|
||
"colRateLimit": "Rate limit",
|
||
"colLastUsed": "Last used",
|
||
"colExpires": "Expires",
|
||
"colStatus": "Status",
|
||
"colActions": "Actions",
|
||
"maskedHint": "Only the first 8 characters are shown",
|
||
"any": "any",
|
||
"activeLabel": "active",
|
||
"inactiveLabel": "inactive",
|
||
"deactivate": "Deactivate",
|
||
"activate": "Activate",
|
||
"delete": "Delete"
|
||
},
|
||
"pointsForm": {
|
||
"title": "Configuration des points d'écoute",
|
||
"subtitle": "Reward listeners with currency for time spent on the radio. Edits write to website_settings (radio_points_* keys) and bust the runtime settings cache. Booleans use 0 / 1.",
|
||
"saved": "Saved",
|
||
"points": "Points",
|
||
"enabled": "Enabled",
|
||
"disabled": "Disabled",
|
||
"perMinute": "Per minute",
|
||
"paidIn": "paid in {currency}",
|
||
"maxPerDay": "Max / day",
|
||
"unlimited": "Unlimited",
|
||
"minListeners": "Min listeners",
|
||
"settings": "Settings",
|
||
"pointsEnabled": "Points enabled",
|
||
"pointsEnabledHint": "Master switch for awarding listener points.",
|
||
"currency": "Currency",
|
||
"currencyHint": "Which wallet the points are paid into.",
|
||
"pointsPerMinute": "Points per minute",
|
||
"pointsPerMinuteHint": "Amount awarded for each full minute of listening.",
|
||
"maxPerDayHint": "Daily cap per user. Use 0 for unlimited.",
|
||
"minListenersHint": "Points are only awarded when at least this many people are tuned in.",
|
||
"save": "Enregistrer les paramètres de points"
|
||
},
|
||
"autoDjForm": {
|
||
"title": "Radio AutoDJ",
|
||
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
|
||
"dbError": "Could not load the AutoDJ playlist (database unavailable).",
|
||
"tracks": "Tracks",
|
||
"active": "Active",
|
||
"inactive": "Inactive",
|
||
"addTrack": "Add track",
|
||
"titlePlaceholder": "Track title",
|
||
"artist": "Artist",
|
||
"album": "Album",
|
||
"artworkUrl": "Artwork URL",
|
||
"artworkUrlPlaceholder": "https://…/cover.png",
|
||
"duration": "Duration (seconds)",
|
||
"durationPlaceholder": "e.g. 215",
|
||
"sortOrder": "Sort order",
|
||
"playlist": "Playlist ({count})",
|
||
"noTracks": "No AutoDJ tracks yet — add one above.",
|
||
"colOrder": "Order",
|
||
"colTitle": "Title",
|
||
"colArtist": "Artist",
|
||
"colAlbum": "Album",
|
||
"colDuration": "Duration",
|
||
"colPlays": "Plays",
|
||
"colLastPlayed": "Last played",
|
||
"colStatus": "Status",
|
||
"colActions": "Actions",
|
||
"activeLabel": "active",
|
||
"inactiveLabel": "inactive",
|
||
"deactivate": "Deactivate",
|
||
"activate": "Activate",
|
||
"delete": "Delete",
|
||
"trackTitle": "Title"
|
||
},
|
||
"moderationPage": {
|
||
"title": "DJ Moderation",
|
||
"subtitle": "Review and remove radio shouts (50 most recent).",
|
||
"recentShouts": "Recent Shouts ({count})"
|
||
}
|
||
},
|
||
"commandocentrum": {
|
||
"title": "Commandocentrum",
|
||
"subtitle": "Diagnostics, contrôles RCON et gestion des utilisateurs",
|
||
"diagnostics": "Diagnostics",
|
||
"rcon": "RCON",
|
||
"userActions": "Actions utilisateur",
|
||
"diagnosticsTitle": "Diagnostics de l'émulateur",
|
||
"memoryUsage": "Utilisation mémoire",
|
||
"uptime": "Temps de fonctionnement",
|
||
"onlineUsers": "Utilisateurs en ligne",
|
||
"roomsLoaded": "Salons chargés",
|
||
"refresh": "Actualiser",
|
||
"rconTitle": "Commandes RCON",
|
||
"rconPlaceholder": "Saisir une commande RCON…",
|
||
"rconSend": "Envoyer",
|
||
"rconSending": "Envoi…",
|
||
"rconResponse": "Réponse",
|
||
"userActionsTitle": "Actions utilisateur",
|
||
"username": "Nom d'utilisateur",
|
||
"usernamePlaceholder": "Nom d'utilisateur cible",
|
||
"action": "Action",
|
||
"execute": "Exécuter",
|
||
"actions": {
|
||
"disconnect": "Déconnecter",
|
||
"alert": "Envoyer une alerte",
|
||
"giveCredits": "Donner des crédits",
|
||
"giveBadge": "Donner un badge",
|
||
"givePoints": "Donner des points",
|
||
"ban": "Bannir",
|
||
"kick": "Expulser"
|
||
},
|
||
"messagePlaceholder": "Message (pour les alertes)…",
|
||
"amountPlaceholder": "Montant…",
|
||
"badgePlaceholder": "Code du badge…"
|
||
},
|
||
"emulator": {
|
||
"title": "Configuration de l'émulateur",
|
||
"subtitle": "Voir et modifier les paramètres de l'émulateur et les textes de localisation",
|
||
"settings": "Paramètres",
|
||
"texts": "Textes",
|
||
"search": "Rechercher",
|
||
"searchPlaceholder": "Rechercher des clés…",
|
||
"noSettings": "Aucun paramètre trouvé",
|
||
"noTexts": "Aucun texte trouvé",
|
||
"edit": "Modifier",
|
||
"save": "Enregistrer",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler",
|
||
"colKey": "Clé",
|
||
"colValue": "Valeur",
|
||
"colType": "Type",
|
||
"colActions": "Actions",
|
||
"editDialog": {
|
||
"title": "Modifier : {key}",
|
||
"value": "Valeur",
|
||
"valuePlaceholder": "Saisir la valeur…",
|
||
"save": "Enregistrer les modifications",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"alerts": {
|
||
"title": "Alertes",
|
||
"subtitle": "Envoyer des alertes à tout l'hôtel et voir les alertes récentes",
|
||
"sendAlert": "Envoyer une alerte à l'hôtel",
|
||
"recentAlerts": "Alertes récentes",
|
||
"noRecentAlerts": "Aucune alerte récente",
|
||
"form": {
|
||
"title": "Titre de l'alerte",
|
||
"titlePlaceholder": "ex. Maintenance du serveur dans 10 minutes",
|
||
"message": "Message d'alerte",
|
||
"messagePlaceholder": "Rédigez le message d'alerte…",
|
||
"type": "Type",
|
||
"typeHotel": "Alerte à tout l'hôtel",
|
||
"typeStaff": "Personnel uniquement",
|
||
"urgent": "Urgent",
|
||
"send": "Envoyer l'alerte",
|
||
"sending": "Envoi…"
|
||
},
|
||
"colId": "ID",
|
||
"colTitle": "Titre",
|
||
"colSentBy": "Envoyé par",
|
||
"colType": "Type",
|
||
"colDate": "Date",
|
||
"colActions": "Actions"
|
||
},
|
||
"logs": {
|
||
"title": "Activités du personnel",
|
||
"subtitle": "Piste d'audit des actions du personnel dans le panneau d'administration",
|
||
"noLogs": "Aucune activité du personnel enregistrée",
|
||
"colId": "ID",
|
||
"colUser": "Utilisateur",
|
||
"colAction": "Action",
|
||
"colTarget": "Cible",
|
||
"colDescription": "Description",
|
||
"colIp": "IP",
|
||
"colTimestamp": "Horodatage",
|
||
"filterByUser": "Filtrer par utilisateur…",
|
||
"filterByAction": "Filtrer par action…",
|
||
"clearFilters": "Effacer les filtres"
|
||
},
|
||
"wordfilter": {
|
||
"title": "Filtre de mots",
|
||
"subtitle": "Gérer les mots et expressions filtrés dans l'hôtel",
|
||
"addWord": "Ajouter un mot",
|
||
"addWords": "Ajouter des mots",
|
||
"noWords": "Aucun mot filtré pour le moment",
|
||
"confirmDelete": "Retirer « {word} » du filtre ?",
|
||
"colId": "ID",
|
||
"colWord": "Mot",
|
||
"colAddedBy": "Ajouté par",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"word": "Mot",
|
||
"wordPlaceholder": "ex. grosmot",
|
||
"addMore": "Ajouter plusieurs mots (un par ligne)",
|
||
"save": "Ajouter au filtre",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"maintenance": {
|
||
"title": "Mode maintenance",
|
||
"subtitle": "Activer ou désactiver la maintenance de tout l'hôtel",
|
||
"enabled": "Le mode maintenance est activé",
|
||
"disabled": "Le mode maintenance est désactivé",
|
||
"enable": "Activer la maintenance",
|
||
"disable": "Désactiver la maintenance",
|
||
"message": "Message de maintenance",
|
||
"messagePlaceholder": "Nous revenons bientôt !",
|
||
"staffAccess": "Autoriser l'accès du personnel pendant la maintenance",
|
||
"save": "Enregistrer les paramètres",
|
||
"saving": "Enregistrement…",
|
||
"confirmEnable": "L'activation de la maintenance empêchera tous les utilisateurs non-personnel d'accéder à l'hôtel. Continuer ?",
|
||
"confirmDisable": "Désactiver le mode maintenance et restaurer l'accès pour tous les utilisateurs ?"
|
||
},
|
||
"housekeeping": {
|
||
"title": "Permissions de gouvernance",
|
||
"subtitle": "Configurer quels rangs peuvent accéder à quelles sections d'administration",
|
||
"addPermission": "Ajouter une permission",
|
||
"editPermission": "Modifier la permission",
|
||
"deletePermission": "Supprimer la permission",
|
||
"noPermissions": "Aucune permission de gouvernance configurée",
|
||
"confirmDelete": "Supprimer cette permission ?",
|
||
"colId": "ID",
|
||
"colRank": "Rang",
|
||
"colSection": "Section",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"rankId": "ID du rang",
|
||
"rankIdPlaceholder": "Rang minimum",
|
||
"section": "Clé de section",
|
||
"sectionPlaceholder": "ex. admin.dashboard",
|
||
"save": "Enregistrer la permission",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
},
|
||
"saved": "Saved!",
|
||
"deleted": "Deleted!",
|
||
"errorOccurred": "An error occurred",
|
||
"emptyInput": "Empty input",
|
||
"invalidJson": "Invalid JSON",
|
||
"imported": "Imported!",
|
||
"presetApplied": "Preset applied!",
|
||
"cleared": "All permissions cleared!",
|
||
"invalidRank": "Invalid rank",
|
||
"testDone": "Test done: {count} permissions found",
|
||
"testing": "Testing...",
|
||
"loading": "Loading...",
|
||
"prev": "Previous",
|
||
"next": "Next",
|
||
"confirmClearAll": "Delete ALL permissions? This action cannot be undone!",
|
||
"colGroup": "Group",
|
||
"colDepends": "Depends on",
|
||
"colPermission": "Permission",
|
||
"colDescription": "Description",
|
||
"colMinRank": "Min. Rank",
|
||
"permissionKey": "Permission key",
|
||
"minRank": "Min. rank",
|
||
"description": "Description",
|
||
"permissions": "Permissions",
|
||
"permissionsCount": "{count} permissions",
|
||
"permission": "permission",
|
||
"highestMinRank": "Highest min. rank: {rank}",
|
||
"totalMinRank": "Total min. rank sum: {total}",
|
||
"groupCount": "{count} groups",
|
||
"rankCount": "{count} ranks",
|
||
"missingDeps": "{count} missing dependencies",
|
||
"dependsOn": "depends on",
|
||
"notFound": "not found",
|
||
"missing": "(missing)",
|
||
"rank": "Rank",
|
||
"count": "Count",
|
||
"searchPermission": "Search permissions…",
|
||
"search": "Search",
|
||
"manage": "Manage",
|
||
"importSelection": "Import selection",
|
||
"noGroup": "No group",
|
||
"allGroups": "All groups",
|
||
"perGroup": "Permissions per group",
|
||
"perRank": "Permissions per rank",
|
||
"rankOverviewHint": "All permissions grouped by the rank they are assigned to.",
|
||
"tabOverview": "Overview",
|
||
"tabManage": "Manage",
|
||
"tabImport": "Import / Export",
|
||
"tabRanks": "Rank overview",
|
||
"tabPresets": "Presets",
|
||
"tabTest": "Test",
|
||
"tabAudit": "Audit log",
|
||
"importPermissions": "Import permissions",
|
||
"importHint": "Paste a JSON array of permission objects. Format: [{ \"permission\": \"...\", \"minRank\": 7, \"description\": \"...\", \"groupName\": \"...\", \"dependsOn\": \"...\" }]",
|
||
"importPlaceholder": "Paste JSON here…",
|
||
"import": "Import",
|
||
"exportTitle": "Export permissions",
|
||
"exportHint": "Export all permissions as JSON for backup or batch editing.",
|
||
"export": "Export JSON",
|
||
"copy": "Copy",
|
||
"copied": "Copied!",
|
||
"presets": "Permission presets",
|
||
"presetsHint": "Apply a predefined set of permissions for common staff roles.",
|
||
"presetModerator": "Moderator",
|
||
"presetModeratorDesc": "Basic moderation tools: user lookup, bans, CFH handling, chat logs.",
|
||
"presetAdmin": "Administrator",
|
||
"presetAdminDesc": "Full admin access: users, rooms, news, settings, shop, events, radio & more.",
|
||
"presetSuperAdmin": "Super Admin",
|
||
"presetSuperAdminDesc": "Complete access to every feature including permission management and asset import.",
|
||
"applyPreset": "Apply preset",
|
||
"clearAll": "Clear all permissions",
|
||
"testTitle": "Test rank access",
|
||
"testHint": "Enter a rank number to see which permissions would be granted.",
|
||
"test": "Test",
|
||
"auditTitle": "Permission audit log",
|
||
"auditHint": "All changes to housekeeping permissions are logged.",
|
||
"auditLogsAt": "Audit logs are available on the Audit log page.",
|
||
"viewAuditLogs": "View audit logs",
|
||
"importedWithErrors": "Imported {count} permissions with {errors} errors",
|
||
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
|
||
"confirmDeletePermission": "Delete this permission permanently?",
|
||
"confirmBulkDelete": "Delete {count} selected permissions?",
|
||
"deleteSelected": "Delete {count} selected",
|
||
"cancel": "Cancel",
|
||
"confirm": "Confirm",
|
||
"auditTime": "Time",
|
||
"auditUser": "User",
|
||
"auditAction": "Action",
|
||
"auditTarget": "Target",
|
||
"selectAllMatching": "Select all {count} matching"
|
||
},
|
||
"rooms": {
|
||
"title": "Salons",
|
||
"subtitle": "Rechercher et gérer les salons de l'hôtel",
|
||
"search": "Rechercher",
|
||
"searchPlaceholder": "Rechercher par nom, propriétaire ou ID…",
|
||
"searchResults": "{count, plural, one {# salon} other {# salons}} trouvé(s) pour « {query} »",
|
||
"noResults": "Aucun salon trouvé",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colOwner": "Propriétaire",
|
||
"colUsers": "Utilisateurs",
|
||
"colState": "État",
|
||
"colCategory": "Catégorie",
|
||
"colCreated": "Créé",
|
||
"colActions": "Actions",
|
||
"stateOpen": "Ouvert",
|
||
"stateClosed": "Fermé",
|
||
"stateLocked": "Verrouillé",
|
||
"stateInvisible": "Invisible",
|
||
"detail": {
|
||
"title": "Salon : {name}",
|
||
"subtitle": "Appartient à {owner}",
|
||
"overview": "Aperçu",
|
||
"actions": "Actions",
|
||
"description": "Description",
|
||
"noDescription": "Aucune description",
|
||
"owner": "Propriétaire",
|
||
"users": "Utilisateurs en ligne",
|
||
"maxUsers": "Utilisateurs max",
|
||
"category": "Catégorie",
|
||
"state": "État",
|
||
"tags": "Étiquettes",
|
||
"noTags": "Aucune étiquette",
|
||
"created": "Créé",
|
||
"deleteRoom": "Supprimer le salon",
|
||
"confirmDelete": "Supprimer le salon « {name} » ? Cette action est irréversible.",
|
||
"enterRoom": "Entrer dans le salon",
|
||
"changeOwner": "Changer le propriétaire",
|
||
"changeOwnerPlaceholder": "Nom du nouveau propriétaire"
|
||
}
|
||
},
|
||
"emailTemplates": {
|
||
"title": "Modèles d'e-mail",
|
||
"subtitle": "Gérer les modèles d'e-mail transactionnels",
|
||
"newTemplate": "+ Nouveau modèle",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noTemplates": "Pas encore de modèles d'e-mail",
|
||
"confirmDelete": "Supprimer le modèle « {name} » ?",
|
||
"colId": "ID",
|
||
"colName": "Nom",
|
||
"colSubject": "Objet",
|
||
"colKey": "Clé",
|
||
"colUpdated": "Mis à jour",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"name": "Nom",
|
||
"namePlaceholder": "ex. E-mail de bienvenue",
|
||
"key": "Clé",
|
||
"keyPlaceholder": "ex. email_bienvenue",
|
||
"subject": "Objet",
|
||
"subjectPlaceholder": "Ligne d'objet de l'e-mail",
|
||
"body": "Corps (HTML)",
|
||
"bodyPlaceholder": "<p>Cher/Chère {username},</p>",
|
||
"variables": "Variables disponibles",
|
||
"variablesHint": "{username}, {email}, {hotel_name}",
|
||
"save": "Enregistrer le modèle",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"theme": {
|
||
"title": "Thème",
|
||
"subtitle": "Personnaliser l'apparence du CMS",
|
||
"presets": "Préréglages",
|
||
"colours": "Couleurs",
|
||
"css": "CSS",
|
||
"presetsTitle": "Préréglages de thème",
|
||
"presetsSubtitle": "Choisir un jeu de couleurs prédéfini",
|
||
"applyPreset": "Appliquer",
|
||
"presetApplied": "Préréglage appliqué",
|
||
"customiseTitle": "Couleurs personnalisées",
|
||
"primary": "Primaire",
|
||
"secondary": "Secondaire",
|
||
"accent": "Accent",
|
||
"background": "Arrière-plan",
|
||
"surface": "Surface",
|
||
"text": "Texte",
|
||
"saveColours": "Enregistrer les couleurs",
|
||
"savingColours": "Enregistrement…",
|
||
"cssTitle": "CSS personnalisé",
|
||
"cssSubtitle": "Ajouter du CSS personnalisé pour surcharger les styles du thème",
|
||
"cssPlaceholder": "/* Votre CSS personnalisé ici */",
|
||
"saveCss": "Enregistrer le CSS",
|
||
"savingCss": "Enregistrement…",
|
||
"reset": "Réinitialiser aux valeurs par défaut",
|
||
"confirmReset": "Réinitialiser le thème aux valeurs par défaut ?"
|
||
},
|
||
"media": {
|
||
"title": "Médiathèque",
|
||
"subtitle": "Télécharger et gérer les fichiers médias",
|
||
"upload": "Télécharger",
|
||
"uploadTitle": "Télécharger un fichier",
|
||
"uploadSubtitle": "Glisser-déposer ou cliquer pour télécharger",
|
||
"uploadButton": "Choisir un fichier",
|
||
"uploading": "Téléchargement…",
|
||
"noFiles": "Pas encore de fichiers médias",
|
||
"delete": "Supprimer",
|
||
"confirmDelete": "Supprimer ce fichier définitivement ?",
|
||
"search": "Rechercher",
|
||
"searchPlaceholder": "Rechercher par nom de fichier…",
|
||
"colPreview": "Aperçu",
|
||
"colName": "Nom",
|
||
"colSize": "Taille",
|
||
"colType": "Type",
|
||
"colUploaded": "Téléchargé",
|
||
"colActions": "Actions",
|
||
"copyUrl": "Copier l'URL",
|
||
"urlCopied": "URL copiée dans le presse-papier"
|
||
},
|
||
"settings": {
|
||
"title": "Paramètres CMS",
|
||
"subtitle": "Gérer la configuration clé/valeur du CMS",
|
||
"addSetting": "Ajouter un paramètre",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"noSettings": "Aucun paramètre trouvé",
|
||
"confirmDelete": "Supprimer le paramètre « {key} » ?",
|
||
"colKey": "Clé",
|
||
"colValue": "Valeur",
|
||
"colUpdated": "Mis à jour",
|
||
"colActions": "Actions",
|
||
"form": {
|
||
"key": "Clé",
|
||
"keyPlaceholder": "ex. hotel_name",
|
||
"value": "Valeur",
|
||
"valuePlaceholder": "Valeur du paramètre",
|
||
"save": "Enregistrer le paramètre",
|
||
"saving": "Enregistrement…",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"favicon": {
|
||
"title": "Favicon",
|
||
"subtitle": "Upload and manage the site favicon",
|
||
"current": "Current favicon",
|
||
"uploadLabel": "Upload favicon",
|
||
"uploadHint": "PNG, JPEG, GIF, WebP, ICO or SVG. Max 2MB.",
|
||
"upload": "Upload",
|
||
"uploading": "Uploading…",
|
||
"delete": "Remove",
|
||
"deleting": "Removing…",
|
||
"saved": "Favicon saved successfully!",
|
||
"deleted": "Favicon removed successfully!",
|
||
"error": "Something went wrong",
|
||
"confirmDelete": "Remove the favicon? The site will no longer show a custom favicon.",
|
||
"generator": {
|
||
"title": "Generate favicon",
|
||
"text": "Text",
|
||
"bgColor": "Background color",
|
||
"textColor": "Text color",
|
||
"rounded": "Rounded corners",
|
||
"save": "Save as favicon"
|
||
}
|
||
},
|
||
"import": {
|
||
"title": "Import",
|
||
"subtitle": "Import assets from external sources into your hotel.",
|
||
"badges": "Badges",
|
||
"badgesDescription": "Import and manage badge assets from external sources.",
|
||
"furni": "Furni",
|
||
"furniDescription": "Import furniture definitions, SWF files, and icons.",
|
||
"clothing": "Clothing",
|
||
"clothingDescription": "Import clothing and wearables for avatars.",
|
||
"effects": "Effects",
|
||
"effectsDescription": "Import avatar effects and animations.",
|
||
"pets": "Pets",
|
||
"petsDescription": "Import pet data and icons.",
|
||
"clone": "Clone",
|
||
"cloneDescription": "Clone existing items from one source to another."
|
||
},
|
||
"translations": {
|
||
"title": "Translations",
|
||
"subtitle": "Translate your hotel into multiple languages.",
|
||
"tabs": {
|
||
"cms": "CMS",
|
||
"client": "Client (Nitro)",
|
||
"emulator": "Emulator"
|
||
},
|
||
"emulator": {
|
||
"title": "Emulator",
|
||
"subtitle": "User-facing strings from emulator_settings (commands, wordfilter, pet/matchmaking messages).",
|
||
"infoBox": "Configuration settings (ports, timeouts, IDs) do not appear here — use the full settings link. Saved changes are synced to the emulator via RCON.",
|
||
"fullSettings": "Full settings"
|
||
}
|
||
}
|
||
},
|
||
"client": {
|
||
"title": "Nitro client",
|
||
"loading": "Loading client…",
|
||
"generatingTicket": "Generating SSO ticket…",
|
||
"connected": "Connected",
|
||
"welcome": "Welcome to {hotel}",
|
||
"openingClient": "Opening the client in a new tab…",
|
||
"fallbackLink": "If it doesn't open,",
|
||
"fallbackClick": "click here",
|
||
"errors": {
|
||
"unauthorized": "You need to be logged in to open the client.",
|
||
"generic": "Could not generate SSO ticket",
|
||
"loginRedirect": "Log in"
|
||
}
|
||
},
|
||
"radioRequests": {
|
||
"formTitle": "Submit a request",
|
||
"formSubtitle": "Ask the DJ to play your favourite track",
|
||
"songLabel": "Song",
|
||
"songPlaceholder": "Title of the song",
|
||
"artistLabel": "Artist",
|
||
"artistPlaceholder": "Name of the artist (optional)",
|
||
"submitButton": "Submit request",
|
||
"loginToRequest": "Log in to submit a request.",
|
||
"latestTitle": "Recent requests",
|
||
"latestSubtitle": "The most recently requested songs",
|
||
"empty": "No requests yet.",
|
||
"colSong": "Song",
|
||
"colArtist": "Artist",
|
||
"colRequester": "Requester",
|
||
"colDate": "Date",
|
||
"colStatus": "Status",
|
||
"statusPending": "Pending",
|
||
"statusApproved": "Approved",
|
||
"statusPlayed": "Played"
|
||
}
|
||
}
|
||
}
|