import type en from './en'; const fr: typeof en = { common: { appName: 'Arboretum', loading: 'Chargement…', cancel: 'Annuler', logout: 'Se déconnecter', language: 'Langue', refresh: 'Rafraîchir', back: 'Retour', search: 'Rechercher', settings: 'Réglages', close: 'Fermer', retry: 'Réessayer', }, login: { title: 'Connectez-vous avec votre jeton d’accès', tokenLabel: 'Jeton d’accès', tokenPlaceholder: 'arb_…', submit: 'Se connecter', submitting: 'Connexion…', invalidToken: 'Jeton invalide', rateLimited: 'Trop de tentatives — patientez avant de réessayer', genericError: 'Échec de la connexion ({status})', }, sessions: { title: 'Sessions', refresh: 'Rafraîchir', empty: 'Aucune session — démarrez-en une ci-dessous.', newSession: 'Nouvelle session', cwdLabel: 'Répertoire de travail', cwdPlaceholder: '/chemin/absolu/du/projet', commandLabel: 'Commande', creating: 'Création…', open: 'Ouvrir', observe: 'Observer', view: 'Voir', resume: 'Reprendre', fork: 'Dupliquer', kill: 'Tuer', confirmKill: 'Confirmer', live: 'en cours', resumable: 'reprenable', sourceDiscovered: 'découverte', clients: 'aucun client | 1 client | {n} clients', exitCode: 'code de sortie {code}', statusLabel: { starting: 'démarrage', running: 'en cours', exited: 'terminée', }, registryStatus: { busy: 'occupée', idle: 'inactive', waiting: 'en attente', }, dialog: { waiting: 'En attente de votre saisie', deny: 'Refuser (Échap)', kind: { trust: 'Confiance', permission: 'Permission', question: 'Question', plan: 'Plan', }, }, }, dashboard: { title: 'Worktrees', allSessions: 'Toutes les sessions', groups: 'Groupes', }, groups: { title: 'Groupes', new: 'Nouveau groupe', create: 'Créer', creating: 'Création…', nameLabel: 'Nom du groupe', namePlaceholder: 'ex. Stack paiements', colorLabel: 'Couleur', reposLabel: 'Dépôts', empty: 'Aucun groupe — créez-en un ci-dessus.', noRepos: 'Aucun dépôt sélectionné.', noReposInGroup: 'Aucun dépôt dans ce groupe — ajoutez-en ci-dessous.', noReposRegistered: 'Aucun dépôt enregistré — ajoutez-en d’abord depuis le tableau de bord.', open: 'Ouvrir', edit: 'Modifier les dépôts', editDone: 'Terminé', remove: 'Supprimer', confirmDelete: 'Confirmer', repoCount: 'aucun dépôt | 1 dépôt | {n} dépôts', dashboard: 'Tableau de bord', missingRepo: 'Dépôt indisponible', removeFromGroup: 'Retirer du groupe', sessionsActive: 'aucune session active | 1 session active | {n} sessions actives', viewList: 'Dépôts', viewGrid: 'Terminaux', gridEmpty: 'Aucune session active dans ce groupe.', gridCapped: '{shown} sessions affichées sur {total} — fermez des terminaux pour voir le reste.', newFeature: 'Nouvelle feature cross-repo', }, crossRepo: { title: 'Nouvelle feature cross-repo', intro: 'Crée le même worktree dans les dépôts sélectionnés, en une seule action.', branchLabel: 'Nom de branche', branchPlaceholder: 'feature/…', newBranch: 'créer la branche', baseRefLabel: 'Réf. de base (optionnel)', startLabel: 'Démarrer une session', startNone: 'aucune session', reposLabel: 'Appliquer à', create: 'Créer dans {n} dépôts', creating: 'Création…', retryFailed: 'Réessayer les échecs', close: 'Fermer', pending: 'en cours…', ok: 'créé', error: 'échec', }, repos: { add: 'Ajouter un repo', adding: 'Ajout…', remove: 'Retirer', pathLabel: 'Chemin du dépôt', pathPlaceholder: '/chemin/absolu/du/repo', empty: 'Aucun dépôt enregistré — ajoutez-en un ci-dessus, ou lancez un scan.', invalid: 'indisponible', scan: 'Scanner', scanResult: 'Aucun nouveau dépôt trouvé | 1 nouveau dépôt ajouté | {n} nouveaux dépôts ajoutés', hide: 'Masquer', show: 'Afficher', showHidden: 'Afficher les masqués ({n})', }, worktrees: { new: 'Nouveau worktree', create: 'Créer', creating: 'Création…', branch: 'Branche', newBranch: 'créer la branche', start: 'Démarrer', startNone: 'aucune session', delete: 'Supprimer', confirmDelete: 'Confirmer', forceDelete: 'Forcer la suppression', prune: 'Élaguer', main: 'principal', detached: 'détaché', locked: 'verrouillé', prunable: 'élaguable', clean: 'propre', dirty: '{n} modifié(s)', noSession: 'aucune session', }, terminal: { observer: 'observateur (lecture seule)', sessionEnded: 'Session terminée', back: 'Sessions', notAttachable: 'Cette session tourne hors d’Arboretum — dupliquez-la pour interagir, ou reprenez-la une fois arrêtée.', }, push: { enable: 'Activer les notifications', disable: 'Notifications activées', denied: 'Permission de notification refusée — activez-la dans les réglages du navigateur.', unsupported: 'Le push nécessite HTTPS (ex. Tailscale Serve) ; sur iOS, installez d’abord l’app sur l’écran d’accueil.', }, fs: { browse: 'Parcourir…', up: 'Remonter', useFolder: 'Utiliser ce dossier', showHidden: 'Afficher les cachés', loading: 'Chargement…', empty: 'Aucun sous-dossier', repoBadge: 'dépôt', }, ws: { reconnecting: 'Connexion perdue — reconnexion…', }, nav: { worktrees: 'Worktrees', sessions: 'Sessions', groups: 'Groupes', settings: 'Réglages', help: 'Aide', more: 'Plus', gitea: 'Ouvrir Gitea', waiting: 'en attente', }, controls: { searchPlaceholder: 'Rechercher…', results: 'aucun résultat | 1 résultat | {n} résultats', sortBy: 'Trier par', filters: 'Filtres', clearAll: 'Effacer', }, sort: { asc: 'Croissant', desc: 'Décroissant', session: { state: 'État', recent: 'Plus récentes', clients: 'Clients', cwd: 'Répertoire', command: 'Commande', }, worktree: { main: 'Principal d’abord', branch: 'Branche', dirty: 'Modifications', ahead: 'En avance', behind: 'En retard', activity: 'Activité', }, repo: { label: 'Nom', created: 'Créé le', worktrees: 'Worktrees', activity: 'Activité', }, group: { label: 'Nom', created: 'Créé le', repos: 'Dépôts', activeSessions: 'Sessions actives', }, }, filter: { state: { label: 'État', live: 'Active', waiting: 'En attente', busy: 'Occupée', idle: 'Au repos', exited: 'Terminée', resumable: 'Reprenable', }, command: { label: 'Commande', }, source: { label: 'Source', managed: 'Gérée', discovered: 'Découverte', }, repo: { label: 'Dépôt', }, worktree: { dirtiness: 'Modifications', dirty: 'Modifié', clean: 'Propre', session: 'Session', with: 'Avec session', without: 'Sans session', flags: 'Drapeaux', locked: 'Verrouillé', prunable: 'Élaguable', }, }, pagination: { prev: 'Précédent', next: 'Suivant', pageOf: 'Page {page} / {pageCount}', perPage: 'Par page', all: 'Tout', }, palette: { placeholder: 'Aller à un dépôt, worktree, session, groupe…', empty: 'Aucun résultat', hint: '↑↓ naviguer · ↵ ouvrir · échap fermer', types: { repo: 'Dépôt', worktree: 'Worktree', session: 'Session', group: 'Groupe', action: 'Action', }, actions: { newSession: 'Nouvelle session', addRepo: 'Ajouter un dépôt', newGroup: 'Nouveau groupe', }, }, toast: { sessionCreated: 'Session démarrée', sessionKilled: 'Session tuée', sessionResumed: 'Session reprise', sessionForked: 'Session dupliquée', repoAdded: 'Dépôt ajouté', repoRemoved: 'Dépôt retiré', worktreeCreated: 'Worktree créé', worktreeDeleted: 'Worktree supprimé', pruned: 'Worktrees élagués', groupCreated: 'Groupe créé', groupUpdated: 'Groupe mis à jour', groupDeleted: 'Groupe supprimé', genericError: 'Une erreur est survenue', dismiss: 'Fermer', }, attention: { title: 'À traiter', count: 'aucune session en attente | 1 session en attente | {n} sessions en attente', empty: 'Rien à traiter', }, settings: { title: 'Réglages', // Préférences preferences: 'Préférences', preferencesHint: 'Ces réglages ne s’appliquent qu’à ce navigateur.', language: 'Langue', notifications: 'Notifications', notificationsEnabled: 'Activées — vous serez notifié lorsqu’une session attend une réponse.', notificationsDisabled: 'Désactivées.', enableNotifications: 'Activer les notifications', disableNotifications: 'Désactiver les notifications', testNotification: 'Envoyer un test', testSent: 'Notification de test envoyée', pushUnsupported: 'Le push exige HTTPS (ex. Tailscale Serve) ; sur iOS, installez d’abord l’app sur l’écran d’accueil.', // Accès & sécurité security: 'Accès & sécurité', securityHint: 'Les jetons donnent un accès complet à ce serveur. Créez-en un par appareil et révoquez ceux que vous n’utilisez plus.', tokens: 'Jetons d’accès', newTokenLabel: 'Libellé', newTokenPlaceholder: 'ex. téléphone, portable', createToken: 'Créer un jeton', tokenCreated: 'Jeton créé', copyTokenHint: 'Copiez ce jeton maintenant — par sécurité il ne sera plus jamais affiché.', copy: 'Copier', copied: 'Copié', current: 'courant', created: 'Créé le {date}', lastUsed: 'utilisé le {date}', neverUsed: 'jamais utilisé', revoke: 'Révoquer', confirmRevoke: 'Confirmer la révocation', tokenRevoked: 'Jeton révoqué', lastTokenError: 'Impossible de révoquer le dernier jeton actif — créez-en un autre d’abord.', // Intégrations integrations: 'Intégrations', gitea: 'Gitea', giteaUrlLabel: 'URL de l’instance Gitea', giteaUrlPlaceholder: 'https://git.exemple.com', giteaUrlHint: 'Ajoute une icône de raccourci dans la navigation. Laissez vide pour la masquer.', save: 'Enregistrer', saved: 'Enregistré', // Découverte des dépôts discovery: 'Découverte des dépôts', discoveryHint: 'Arboretum scanne ces dossiers à la recherche de dépôts git et les enregistre automatiquement. Les dépôts masqués sont conservés et jamais ré-ajoutés.', scanRoots: 'Dossiers à scanner', scanRootsEmpty: 'Aucun dossier configuré — votre dossier personnel est utilisé par défaut.', addRoot: 'Ajouter un dossier', removeRoot: 'Retirer', scanInterval: 'Intervalle de re-scan (minutes)', scanIntervalHint: '0 désactive le scan périodique. Les changements prennent effet au prochain redémarrage du daemon.', // Serveur (lecture seule) server: 'Serveur', serverHint: 'Définis au démarrage via des flags CLI — les modifier nécessite de redémarrer le daemon.', version: 'Version', port: 'Port', bind: 'Adresse de liaison', allowedOrigins: 'Origines autorisées', dataDir: 'Répertoire de données', vapidPublicKey: 'Clé publique VAPID', vapidContact: 'Contact VAPID', none: 'aucune', flagHint: 'Flag CLI : {flag}', }, help: { title: 'Aide', intro: 'Tout ce qu’Arboretum sait faire, et comment l’utiliser.', searchPlaceholder: 'Rechercher dans l’aide…', noMatch: 'Aucun sujet correspondant', }, }; export default fr;