forked from yvv/decision
720 lines
47 KiB
TypeScript
720 lines
47 KiB
TypeScript
// Source unique des libellés de l'interface — en français d'abord.
|
||
// Ton : on tutoie la personne ; le sujet est la personne ou le collectif,
|
||
// jamais la formule ni le système. Les clés en/es doivent être identiques
|
||
// (vérifié à la compilation). Termes interdits : tests/unit/lexicon.test.ts.
|
||
|
||
export const fr = {
|
||
'app.name': 'libreDecision',
|
||
'app.skip': 'Aller au contenu',
|
||
|
||
'nav.label': 'Boîte à outils',
|
||
'nav.home': 'Accueil',
|
||
'nav.decisions': 'Décisions',
|
||
'nav.docs': 'Docs de référence',
|
||
'nav.mandates': 'Mandats',
|
||
'nav.protocols': 'Protocoles',
|
||
'nav.groups': 'Mes groupes',
|
||
'nav.messages': 'Messages',
|
||
'nav.messages.count.one': 'Messages, {n} non lu',
|
||
'nav.messages.count.other': 'Messages, {n} non lus',
|
||
'nav.docs.count.one': '{label}, {n} doc en cours',
|
||
'nav.docs.count.other': '{label}, {n} docs en cours',
|
||
'nav.access': 'Accès',
|
||
'nav.access.hint': 'trustinWallet',
|
||
'nav.feedback': 'Faire un retour',
|
||
'nav.signin': 'Se connecter',
|
||
'nav.signout': 'Se déconnecter',
|
||
'nav.mood': 'Ambiance',
|
||
'mood.pierre': 'Pierre',
|
||
'mood.calcaire': 'Calcaire',
|
||
'mood.nuit': 'Nuit',
|
||
'mood.ardoise': 'Ardoise',
|
||
'nav.lang': 'Langue',
|
||
'nav.menu': 'Menu',
|
||
'nav.close': 'Fermer',
|
||
|
||
// The title on two lines, the break after « possible » (Yvv, 2026-11-02): one key per line.
|
||
'home.title.line1': 'Rendre possible',
|
||
'home.title.line2': 'la décision collective',
|
||
'home.leitmotiv.context': 'contexte et cadrage',
|
||
'home.leitmotiv.process': 'processus et modalités',
|
||
'home.leitmotiv.tools': 'boîte à outils',
|
||
'home.signin': 'Se connecter avec sa clé Ğ1',
|
||
'home.signin.note': 'Le même accès que le forum Monnaie libre : tu signes dans Ğecko, sans mot de passe.',
|
||
|
||
'signin.title': 'Se connecter',
|
||
'signin.g1': 'Se connecter avec Ğ1',
|
||
'signin.g1.how': "Tu es envoyé sur connect.monnaie-libre.fr, le service de connexion du forum Monnaie libre. Tu y approuves la connexion dans Ğecko (lien ou QR code), puis tu reviens ici. Aucun mot de passe, aucune clé ne nous est transmise.",
|
||
'signin.g1.members': 'Réservé aux membres de la toile de confiance Ğ1.',
|
||
'signin.g1.pending': "La connexion Ğ1 arrive : l'inscription de libreDecision auprès de connect.monnaie-libre.fr est en cours. En attendant, on entre avec un lien d'invitation.",
|
||
'signin.invite': "Tu as reçu un lien d'invitation ? Ouvre-le simplement : il te connecte.",
|
||
'signin.dev': 'Connexion de développement',
|
||
'signin.dev.name': 'Nom',
|
||
'signin.dev.admin': 'administrateur des accès',
|
||
'signin.dev.go': 'Entrer',
|
||
'signin.error.refus': 'La connexion a été refusée sur connect.monnaie-libre.fr.',
|
||
'signin.error.etat': 'La connexion a expiré ou vient d’un autre navigateur. Recommence depuis ce navigateur.',
|
||
'signin.error.incomplet': 'Le retour de connect.monnaie-libre.fr était incomplet. Recommence.',
|
||
'signin.error.echange': 'connect.monnaie-libre.fr ne répond pas. Réessaie dans un moment.',
|
||
'signin.error.interne': 'La connexion a échoué de notre côté. Réessaie dans un moment.',
|
||
|
||
'invite.title': 'Invitation',
|
||
'invite.working': 'Connexion en cours…',
|
||
'invite.invalid': "Ce lien d'invitation n'est plus valable : il a déjà servi ou il a expiré. Demande un nouveau lien à la personne qui te l'a envoyé.",
|
||
'invite.missing': "Ce lien est incomplet. Ouvre le lien d'invitation entier, tel que tu l'as reçu.",
|
||
'team.title': 'Rejoindre une équipe',
|
||
'team.working': 'Lecture du lien…',
|
||
'team.invalid': "Ce lien d'équipe n'est plus valable : il a expiré, il a été révoqué ou toutes ses places sont prises. Demande un nouveau lien à la personne qui te l'a envoyé.",
|
||
'team.missing': "Ce lien est incomplet. Ouvre le lien d'équipe entier, tel que tu l'as reçu.",
|
||
'team.opens': '« {label} » t’ouvre : {groups}.',
|
||
'team.until': "Lien valable jusqu'au {date}.",
|
||
'team.name': 'Ton nom',
|
||
'team.name.hint': 'Le nom sous lequel le groupe te verra. Une personne, une identité : si tu as déjà rejoint, reviens dans le navigateur où ta session est ouverte.',
|
||
'team.join': 'Rejoindre',
|
||
'team.signed': 'Ta session est ouverte sous le nom {name} : ces groupes s’ajoutent à ton identité.',
|
||
'team.add': 'Ajouter ces groupes',
|
||
'team.notme': "Ce n'est pas moi : me déconnecter",
|
||
|
||
'groups.title': 'Mes groupes',
|
||
'groups.same.key': 'Groupes qui utilisent la même clé',
|
||
'groups.locked': 'Réservé à ses membres',
|
||
'groups.locked.long': "Ce groupe s'ouvre à ses membres. L'accès se demande à un administrateur de trustinWallet.",
|
||
'groups.test': 'Pour les essais',
|
||
'groups.open': 'Ouvrir',
|
||
'groups.empty': "Aucun groupe n'est visible pour l'instant.",
|
||
|
||
'group.tools': 'Outils',
|
||
'group.current': 'En cours',
|
||
'group.current.none': "Aucun doc en cours dans ce groupe pour l'instant.",
|
||
'group.upcoming': 'À venir',
|
||
'group.upcoming.none': "Rien n'est annoncé ici pour l'instant.",
|
||
|
||
'pillar.decisions': "Un parcours assisté pour choisir les bonnes modalités de décision, et tenir le journal des décisions.",
|
||
'pillar.docs': "Acte d'engagement, licence, charte, constitution : des textes vivants, sous vote permanent.",
|
||
'pillar.mandates': 'Créer et révoquer tout type de mandat.',
|
||
'pillar.protocols': "Des workflows pour s'organiser sans organe statutaire : rôles tournants et automatisations techniques.",
|
||
'pillar.open': 'ouvert',
|
||
'pillar.soon': 'à venir',
|
||
|
||
'decisions.note': "Un module est un article du doc. Il reste à voter tant qu'aucune de ses versions n'a été adoptée par un vote.",
|
||
'decisions.toVote.one': '{n} module à voter',
|
||
'decisions.toVote.other': '{n} modules à voter',
|
||
'decisions.withoutMyVote.one': 'dont {n} sans ton vote',
|
||
'decisions.withoutMyVote.other': 'dont {n} sans ton vote',
|
||
|
||
'docs.title': 'Docs de référence',
|
||
'docs.inForce.one': '{n} article en vigueur',
|
||
'docs.inForce.other': '{n} articles en vigueur',
|
||
'docs.open.one': '{n} proposition en cours',
|
||
'docs.open.other': '{n} propositions en cours',
|
||
|
||
'doc.view.label': 'Lire',
|
||
'doc.view.inforce': 'En vigueur',
|
||
'doc.view.wellrated': 'Si les bien cotées passent',
|
||
'doc.view.all': 'Si tout passe',
|
||
'doc.view.wellrated.note': "Aperçu : le texte tel qu'il serait si les propositions bien cotées entraient en vigueur. Rien n'est adopté.",
|
||
'doc.view.all.note': "Aperçu : le texte tel qu'il serait si toutes les propositions entraient en vigueur, même peu soutenues. Rien n'est adopté.",
|
||
'doc.view.empty': 'Aucune proposition ne change le texte dans cet aperçu.',
|
||
'doc.mark.added': 'ajouté',
|
||
'doc.mark.replaced': 'modifié',
|
||
'doc.mark.removed': 'retiré',
|
||
'doc.lang.label': 'Langue du texte',
|
||
'doc.lang.translation': 'Traduction éditoriale, sans vote. Le texte qui fait foi est en français.',
|
||
'doc.lang.original': "Lire l'original",
|
||
'doc.lang.stale': 'traduction à revoir',
|
||
'doc.lang.missing': 'pas encore traduit',
|
||
'doc.seed': 'seed a minima',
|
||
'doc.seed.long': "Entré en vigueur sans vote, pour ne pas partir d'une page blanche. Il reste sous vote, comme tout texte.",
|
||
'doc.seed.votes.one': 'seed a minima · {n} vote',
|
||
'doc.seed.votes.other': 'seed a minima · {n} votes',
|
||
'doc.seedProposal': 'Proposition seed',
|
||
'doc.seedProposal.long': "Texte de départ mis en avant pour lancer le vote. Il n'est pas en vigueur : il y entre par le vote, comme toute proposition.",
|
||
'doc.confirmed': 'confirmé par le vote',
|
||
'doc.adopted': 'adopté le {date}',
|
||
'doc.action.vote': 'Le vote',
|
||
'doc.action.propose': 'Proposer une modification',
|
||
'doc.basket': 'Voter en lot',
|
||
'doc.basket.count': 'Voter en lot · {n}',
|
||
'doc.empty': "Aucun article n'est en vigueur. Les propositions ci-dessous remontent dès qu'elles atteignent leur seuil.",
|
||
'doc.empty.seeds': "Aucun article n'est encore en vigueur. Commence par les Propositions seed : elles y entrent par le vote, comme toute proposition.",
|
||
'doc.others.one': '{n} autre version en cours',
|
||
'doc.others.other': '{n} autres versions en cours',
|
||
'doc.published': 'Publié sur le dépôt des textes',
|
||
'doc.publish.pending': 'Publication en attente',
|
||
|
||
'deep.title': 'Propositions en cours',
|
||
'deep.note': "Pas encore en vigueur. Chacune remonte dès qu'elle atteint son seuil : la part de voix pour que demande son inertie, comptée sur au moins son quorum de votants.",
|
||
'deep.new': 'Proposer un nouvel article',
|
||
'deep.drafts': 'Tes brouillons',
|
||
'deep.drafts.note': 'Non soumis au vote. Toi seul les vois.',
|
||
'deep.rival': 'remplacerait « {title} »',
|
||
'deep.addition': 'nouvel article',
|
||
'deep.removal': 'retrait de « {title} »',
|
||
'deep.inertia': 'inertie vers {level}',
|
||
'deep.held': 'retenue par une objection',
|
||
'deep.mine': 'ta proposition',
|
||
'deep.stale': 'à reconfirmer',
|
||
'deep.wellrated': 'bien cotée',
|
||
'deep.filter.all': 'Toutes',
|
||
'deep.filter.wellrated': 'Bien cotées',
|
||
'deep.filter.mine': 'Les miennes',
|
||
'deep.none': 'Aucune proposition dans ce filtre.',
|
||
'deep.variant': 'variante {label}',
|
||
'deep.versions.one': '{n} version',
|
||
'deep.versions.other': '{n} versions',
|
||
'deep.version': 'version {n}',
|
||
'deep.lead': 'en tête : {label}',
|
||
'deep.section.none': 'Sans section',
|
||
'deep.section.count.one': '{n} article',
|
||
'deep.section.count.other': '{n} articles',
|
||
'deep.unfold': 'Tout déplier',
|
||
'deep.fold': 'Tout replier',
|
||
'section.introduction': 'Introduction',
|
||
'section.fondamental': 'Engagements fondamentaux',
|
||
'section.technique': 'Engagements techniques',
|
||
'section.conclusion': 'Conclusion',
|
||
'section.annexe': 'Annexes',
|
||
'section.formule': 'Formule de vote',
|
||
'section.inertie': 'Inertie',
|
||
'section.ordonnancement': 'Ordonnancement',
|
||
'module.title.name': 'Titre du document',
|
||
'module.order.name': 'Ordre des articles',
|
||
'module.order.named': 'Ordre des articles · {section}',
|
||
'module.order.inforce': 'Ordre en vigueur',
|
||
'module.order.proposal': 'Ordre proposé',
|
||
'module.order.added.one': '{n} article entré depuis, placé à la fin',
|
||
'module.order.added.other': '{n} articles entrés depuis, placés à la fin',
|
||
'module.order.dropped.one': '{n} article sorti depuis',
|
||
'module.order.dropped.other': '{n} articles sortis depuis',
|
||
'module.order.same': "c'est l'ordre en vigueur",
|
||
'module.order.rule': "Un nouvel article se place à la fin de sa section. S'il arrive pendant le vote d'un ordre, il s'y ajoute à la fin, et les votes restent.",
|
||
'order.edit.label': 'Nouvel ordre des articles',
|
||
'order.edit.help': 'Prends un article par sa poignée et dépose-le à sa place. Sans glisser : clique un article, puis sa nouvelle place, ou utilise ses flèches. Au clavier : flèches haut et bas.',
|
||
'order.edit.up': 'Monter « {title} »',
|
||
'order.edit.down': 'Descendre « {title} »',
|
||
'order.edit.chosen': '« {title} » choisi : clique sa nouvelle place.',
|
||
'order.edit.moved': '« {title} » en place {n} sur {total}.',
|
||
'order.edit.submit': 'Proposer cet ordre',
|
||
'order.edit.unchanged': "C'est l'ordre en vigueur : déplace au moins un article.",
|
||
'order.edit.exists': 'Cet ordre est déjà proposé : vote-le plutôt que de le proposer deux fois.',
|
||
'order.edit.vote': 'Voter cet ordre',
|
||
'order.edit.proposed': 'proposé',
|
||
'order.line': 'Ordre de la section',
|
||
'order.reorder': 'Réordonner',
|
||
'order.proposed.one': '{n} ordre proposé',
|
||
'order.proposed.other': '{n} ordres proposés',
|
||
'order.edit.note': "Un ordre se vote à l'inertie {level}, comme un article : déplié, dans le panier, par la chaîne Ğ1 dans Monnaie libre.",
|
||
'order.submitted': 'Ordre proposé au vote.',
|
||
'title.propose': 'Proposer un autre titre',
|
||
'title.propose.label': 'Nouveau titre',
|
||
'title.propose.note': "Le titre du document se vote à l'inertie {level}. Ses traductions restent éditoriales : elles passeront « à revoir ».",
|
||
'title.submitted': 'Titre proposé au vote.',
|
||
'title.proposed.one': '{n} titre proposé',
|
||
'title.proposed.other': '{n} titres proposés',
|
||
|
||
'tally.short': '{for} pour · {against} contre',
|
||
'tally.missing.one': 'Il manque {n} voix pour.',
|
||
'tally.missing.other': 'Il manque {n} voix pour.',
|
||
'tally.reached': 'Seuil atteint.',
|
||
'tally.level': 'Niveau : {pct} % du seuil',
|
||
'inertia.name.1': 'très basse',
|
||
'inertia.name.2': 'basse',
|
||
'inertia.name.3': 'moyenne',
|
||
'inertia.name.4': 'haute',
|
||
'inertia.name.5': 'très haute',
|
||
'inertia.level': '{k} / 5 · {name}',
|
||
'inertia.badge': 'inertie {level}',
|
||
|
||
|
||
'panel.propose': 'Proposer',
|
||
'panel.details': 'Détails',
|
||
'panel.close': 'Fermer le panneau',
|
||
'panel.inforce': 'En vigueur',
|
||
'panel.proposal': 'Proposition',
|
||
'panel.by': 'proposé par {name}',
|
||
'author.invited': 'sur invitation',
|
||
'panel.seed.origin': 'texte issu du seed',
|
||
'panel.changes': 'Voir les changements',
|
||
'panel.text': 'Voir le texte',
|
||
|
||
'vote.yours': 'Ton vote',
|
||
'vote.for': 'Pour',
|
||
'vote.against': 'Contre',
|
||
'vote.retract': 'Retirer mon vote',
|
||
'vote.saved': 'Vote enregistré.',
|
||
'vote.saved.simulated': 'Vote simulé.',
|
||
'vote.simulated.mark': 'vote simulé',
|
||
'vote.others': 'Autres versions',
|
||
'vote.others.count': 'Autres versions ({n})',
|
||
'vote.need': '{yes} oui pour passer · {no} non pour bloquer',
|
||
'vote.need.quorum': '{yes} oui pour passer · le quorum la bloque',
|
||
'vote.need.first.one': '{yes} oui sur {quorum} votant pour passer',
|
||
'vote.need.first.other': '{yes} oui sur {quorum} votants pour passer',
|
||
'vote.need.short': 'passe à {yes} oui · bloquée à {no} non',
|
||
'vote.need.short.quorum': 'passe à {yes} oui',
|
||
'vote.need.short.first': '{yes} oui sur {quorum}',
|
||
'vote.need.title.one': 'Quorum : {n} votant. En dessous, les votants qui manquent comptent comme « non ».',
|
||
'vote.need.title.other': 'Quorum : {n} votants. En dessous, les votants qui manquent comptent comme « non ».',
|
||
'vote.retracted': 'Vote retiré.',
|
||
'vote.stale': "Le texte a changé de fond depuis ton vote : ton vote ne compte plus tant que tu ne l'as pas reconfirmé.",
|
||
'vote.reconfirm': 'Reconfirmer : {choice}',
|
||
'vote.private': 'Ton vote ne se montre à personne : seuls les totaux sont visibles.',
|
||
'vote.held': "Une objection retient cette version : jusqu'à sa levée, personne ne peut plus voter pour. Tu peux voter contre ou retirer ton vote ; à la levée, elle n'entre en vigueur qu'avec les voix encore là.",
|
||
'vote.held.redit': 'Elle redit « {other} ».',
|
||
'vote.held.contredit': 'Elle contredit « {other} ».',
|
||
'vote.held.author.redit': "Pour qu'elle se vote à nouveau, modifie l'article visé. La personne qui a fait l'objection la lève alors, ou la réitère ; sans réponse de sa part sous 3 jours, elle est levée.",
|
||
'vote.held.author.contredit': "Pour qu'elle se vote à nouveau, reformule-la. La personne qui a fait l'objection la lève alors, ou la réitère ; sans réponse de sa part sous 3 jours, elle est levée.",
|
||
'vote.held.waiting': "Une réponse est arrivée : {name} lève ou réitère l'objection d'ici le {date} ; sans réponse, elle est levée.",
|
||
'vote.held.mine': 'Tu as fait cette objection : lève-la quand la réponse te convient.',
|
||
'vote.held.mine.asked': "Une réponse est arrivée : lève ton objection si elle te convient, ou réitère-la, d'ici le {date}. Sans réponse de ta part, elle est levée.",
|
||
'vote.entered': '« {title} » est entré en vigueur.',
|
||
'vote.entered.remove': '« {title} » est retiré du texte en vigueur.',
|
||
'vote.entered.inertia': "L'inertie de « {title} » a changé.",
|
||
'vote.entered.order': 'Le nouvel ordre de « {section} » est entré en vigueur.',
|
||
'vote.entered.title': 'Le titre « {title} » est entré en vigueur.',
|
||
'vote.closed': 'Cette version ne se vote plus.',
|
||
'vote.fold': 'Le vote de « {title} »',
|
||
'vote.mine.none': "Tu n'as pas voté sur cette version.",
|
||
'vote.mine.for': 'Ton vote : pour',
|
||
'vote.mine.against': 'Ton vote : contre',
|
||
'vote.mine.chain': 'inscrit sur la chaîne Ğ1',
|
||
'vote.mine.saved': 'enregistré',
|
||
'vote.mine.pending': 'En attente de la chaîne Ğ1 : {choice}.',
|
||
'vote.mine.simulated': 'simulé',
|
||
'vote.simulated.note': "La chaîne Ğ1 n'est pas encore ouverte : ton vote est simulé. Il compte comme un vote, marqué « simulé », tant qu'une décision humaine n'efface pas les votes simulés.",
|
||
'vote.tally.simulated.one': 'dont {n} simulé',
|
||
'vote.tally.simulated.other': 'dont {n} simulés',
|
||
'vote.mine.refused': "Ton dernier vote n'a pas été compté : {reason}",
|
||
'vote.mine.expired': "Ton dernier vote n'a pas été vu sur la chaîne Ğ1 à temps : il ne compte pas.",
|
||
'vote.mine.receipts': 'Tes bulletins et reçus',
|
||
'vote.choice.for': 'pour',
|
||
'vote.choice.against': 'contre',
|
||
'vote.choice.none': 'retrait de ton vote',
|
||
'vote.chain.note': 'Ton vote part de ton portefeuille Ğ1 : {amount} Ğ1, en un seul geste. La chaîne montre que tu as voté, jamais ce que tu as voté.',
|
||
'vote.chain.counts': "Ta voix compte pour l'identité Ğ1 du portefeuille qui signe, si elle est membre de la toile de confiance.",
|
||
'vote.chain.off': "Le vote par la chaîne Ğ1 n'est pas encore ouvert : le compte qui reçoit les votes reste à créer. Tu peux lire, proposer et faire une objection.",
|
||
'vote.members': 'Seuls les membres de ce groupe votent ici.',
|
||
'vote.details': 'Coquilles, traductions, objections, historique',
|
||
'quorum.heading.one': 'Quorum · {n} votant',
|
||
'quorum.heading.other': 'Quorum · {n} votants',
|
||
'quorum.default.one': 'Par défaut, celui de son cran : {n} votant.',
|
||
'quorum.default.other': 'Par défaut, celui de son cran : {n} votants.',
|
||
'quorum.explain': "Tu fixes le quorum de cet article tant que personne n'a voté. En dessous, les votants qui manquent comptent comme « non ».",
|
||
'quorum.field': "Quorum de l'article",
|
||
'quorum.set': 'Fixer ce quorum',
|
||
'quorum.reset': 'Revenir au défaut ({n})',
|
||
'quorum.done.one': 'Quorum fixé : {n} votant.',
|
||
'quorum.done.other': 'Quorum fixé : {n} votants.',
|
||
'quorum.reset.done.one': 'Quorum revenu au défaut : {n} votant.',
|
||
'quorum.reset.done.other': 'Quorum revenu au défaut : {n} votants.',
|
||
'quorum.error.quorum': "Ce quorum sort des bornes : au moins 2 votants (1 dans le groupe d'essai), au plus {w}, l'électorat.",
|
||
'quorum.error.voted': "Quelqu'un a déjà voté sur cet article : son quorum ne change pas.",
|
||
'quorum.error.forbidden': "Seule la personne qui a écrit l'article fixe son quorum, avant le premier vote.",
|
||
'ballot.reason.not_member': "le portefeuille qui a signé n'est pas celui d'un membre de la toile de confiance Ğ1.",
|
||
'ballot.reason.no_identity': "le portefeuille qui a signé n'est rattaché à aucune identité Ğ1.",
|
||
'ballot.reason.transfer': 'le virement vers le compte des votes manque, ou son montant est trop faible.',
|
||
'ballot.reason.objection': "une objection retenait cette version quand la chaîne Ğ1 a confirmé ton vote ; ton vote d'avant reste.",
|
||
'basket.title': 'Panier de vote',
|
||
'basket.intro': 'Choisis article par article, une section entière ou tout le document : tout part en un seul geste.',
|
||
'basket.doc': 'Tout le document',
|
||
'basket.for': 'Tout pour',
|
||
'basket.against': 'Tout contre',
|
||
'basket.clear': 'Vider',
|
||
'basket.pick': 'Ton choix pour « {title} »',
|
||
'basket.pick.retract': 'Retirer',
|
||
'basket.versions': 'Plusieurs versions : choisis la tienne.',
|
||
'basket.waiting.one': '{n} article a plusieurs versions : un geste groupé ne le remplit pas, choisis ta version.',
|
||
'basket.waiting.other': '{n} articles ont plusieurs versions : un geste groupé ne les remplit pas, choisis ta version.',
|
||
'basket.inforce': 'en vigueur',
|
||
'basket.count.one': '{n} choix',
|
||
'basket.count.other': '{n} choix',
|
||
'basket.send.server': 'Voter ({n})',
|
||
'basket.send.chain': 'Signer et envoyer ({n})',
|
||
'basket.note.server': "Tes votes comptent dès l'envoi, en une seule fois.",
|
||
'basket.note.chain': 'Une seule transaction de {amount} Ğ1, signée par ton portefeuille, pour tous tes choix.',
|
||
'basket.empty': "Rien dans le panier pour l'instant.",
|
||
'basket.sent.one': '{n} vote enregistré.',
|
||
'basket.sent.other': '{n} votes enregistrés.',
|
||
'basket.sent.simulated.one': '{n} vote simulé.',
|
||
'basket.sent.simulated.other': '{n} votes simulés.',
|
||
'basket.section': 'Voter cette section',
|
||
'basket.mine': 'ton vote : {choice}',
|
||
'basket.held': 'une objection la retient : contre ou retrait, pas de « pour »',
|
||
'basket.held.skipped.one': "Tu as tout mis pour, sauf {n} version qu'une objection retient : sur elle, tu peux voter contre ou retirer ton vote.",
|
||
'basket.held.skipped.other': "Tu as tout mis pour, sauf {n} versions qu'une objection retient : sur elles, tu peux voter contre ou retirer ton vote.",
|
||
'sign.title': 'Voter avec ton portefeuille Ğ1',
|
||
'sign.summary.one': '{n} vote, en une transaction : {amount} Ğ1 vers le compte des votes, avec ton bulletin scellé.',
|
||
'sign.summary.other': '{n} votes, en une transaction : {amount} Ğ1 vers le compte des votes, avec ton bulletin scellé.',
|
||
'sign.wallet': 'Avec quel portefeuille ?',
|
||
'sign.account': 'Avec quel compte ?',
|
||
'sign.opening': "Ton portefeuille s'ouvre…",
|
||
'sign.signing': 'Confirme dans ton portefeuille.',
|
||
'sign.waiting': "La chaîne Ğ1 confirme ton vote, en général en moins d'une minute.",
|
||
'sign.confirmed': 'Ton vote compte : il est inscrit sur la chaîne Ğ1.',
|
||
'sign.confirmed.as': "Compté pour l'identité Ğ1 « {name} ».",
|
||
'sign.refused': "Ton vote n'a pas été compté : {reason}",
|
||
'sign.expired': "Ton vote n'a pas été vu sur la chaîne Ğ1 à temps : il ne compte pas. Recommence quand tu veux.",
|
||
'sign.error.cancelled': "Tu as refusé la signature : rien n'est parti.",
|
||
'sign.error.funds': "Ton portefeuille n'a pas assez de Ğ1 : il doit lui rester au moins 1 Ğ1 après le vote.",
|
||
'sign.error.node': 'La chaîne Ğ1 ne répond pas. Réessaie dans un moment.',
|
||
'sign.error.account': "Ce compte n'est plus dans ton portefeuille.",
|
||
'sign.error.wallet': "Ton portefeuille n'a pas pu signer. Réessaie, ou passe par Ğecko.",
|
||
'sign.none': "Aucun portefeuille n'est branché à ce navigateur (duniter-connect, par exemple). Sur ton téléphone, Ğecko fait l'affaire.",
|
||
'sign.gecko': 'Passer par Ğecko',
|
||
'sign.gecko.scan': 'Scanne ce code avec Ğecko, ou touche le lien sur ton téléphone. Vérifie le montant et le commentaire, puis valide.',
|
||
'sign.gecko.open': 'Ouvrir dans Ğecko',
|
||
'sign.gecko.amount': 'Montant',
|
||
'sign.gecko.comment': 'Commentaire',
|
||
'sign.gecko.qr': 'Code à scanner avec Ğecko',
|
||
'sign.close': 'Fermer',
|
||
'sign.later': "Tu peux fermer : la confirmation arrivera seule, et ton vote apparaîtra sous l'article.",
|
||
'sign.retry': 'Réessayer',
|
||
'sign.error.chain': "La chaîne Ğ1 a refusé la transaction : ton vote n'est pas parti. Réessaie quand tu veux.",
|
||
'sign.receipt': 'Télécharger ton reçu',
|
||
'sign.history': 'Tes bulletins',
|
||
'sign.receipt.note': 'Ton reçu garde ton bulletin et son sel : avec lui, tu vérifies toi-même que la chaîne porte ton vote. Garde-le pour toi.',
|
||
|
||
'ballots.title': 'Tes bulletins de vote',
|
||
'ballots.intro': "Chaque vote par la chaîne Ğ1 part dans un bulletin scellé : la chaîne montre que tu as voté, jamais ce que tu as voté. Ton reçu garde le bulletin et son sel ; avec lui, tu vérifies toi-même ton vote. Personne d'autre ne le reçoit.",
|
||
'ballots.mine': 'Tes bulletins',
|
||
'ballots.signin': 'Connecte-toi pour retrouver tes bulletins.',
|
||
'ballots.none': "Tu n'as encore envoyé aucun bulletin par la chaîne Ğ1.",
|
||
'ballots.lines.one': '{n} vote',
|
||
'ballots.lines.other': '{n} votes',
|
||
'ballots.status.pending': 'En attente de la chaîne Ğ1',
|
||
'ballots.status.confirmed': "Compté pour l'identité Ğ1 « {name} »",
|
||
'ballots.status.simulated': 'Simulé : compté pour « {name} » tant que les votes simulés ne sont pas effacés',
|
||
'ballots.status.refused': 'Pas compté : {reason}',
|
||
'ballots.status.expired': 'Pas vu sur la chaîne Ğ1 à temps : il ne compte pas',
|
||
'ballots.block': 'bloc {n}',
|
||
'ballots.receipt': 'Télécharger le reçu',
|
||
'ballots.verify.title': 'Vérifier un reçu',
|
||
'ballots.verify.intro': "Choisis le fichier d'un reçu, ou colle son contenu : la page recalcule l'empreinte du bulletin ici même, sans rien demander au serveur.",
|
||
'ballots.verify.file': 'Fichier du reçu',
|
||
'ballots.verify.paste': 'Ou colle le reçu',
|
||
'ballots.verify.go': 'Vérifier',
|
||
'ballots.verify.ok': 'Le reçu tient : ses votes et son sel donnent bien ce commentaire.',
|
||
'ballots.verify.line': 'Version {version}, révision {revision} : {choice}',
|
||
'ballots.verify.line.label': '{label} — noté dans le reçu, hors du sceau',
|
||
'ballots.verify.where': "Cherche ce commentaire dans l'historique de ton portefeuille : c'est ton vote, inscrit sur la chaîne Ğ1.",
|
||
'ballots.verify.where.block': "Cherche ce commentaire dans l'historique de ton portefeuille, ou sur la chaîne Ğ1 (le reçu indique le bloc {block}, hors du sceau) : s'il y figure, signé de ton compte, c'est ton vote.",
|
||
'ballots.verify.bad': 'Le reçu ne tient pas : ses votes et son sel ne donnent pas son commentaire.',
|
||
'ballots.verify.computed': 'Recalculé :',
|
||
'ballots.verify.expected': 'Dans le reçu :',
|
||
'ballots.verify.unreadable': "Ce n'est pas un reçu de vote lisible.",
|
||
|
||
'inertia.title': 'Inertie',
|
||
'inertia.explain': "Plus l'inertie est haute, plus il faut de voix pour changer ce texte. Sous le quorum, les votants qui manquent comptent comme « non » ; au-delà, la part de « pour » demandée baisse quand la participation monte.",
|
||
'inertia.change': "Proposer un changement d'inertie",
|
||
'inertia.change.to': 'Nouvelle inertie',
|
||
'inertia.change.note': "Un changement d'inertie se vote lui-même à l'inertie de l'article : {level}.",
|
||
'inertia.change.submit': 'Soumettre au vote',
|
||
'inertia.change.open': "Changement d'inertie en cours : vers {level}",
|
||
'inertia.change.current': 'actuelle',
|
||
'inertia.history.vote': 'Passée de {from} à {to} le {date}, par un vote.',
|
||
'inertia.history.amendment': 'Passée de {from} à {to} le {date} : réglage de départ du texte.',
|
||
|
||
'formula.title': 'La formule du seuil',
|
||
'formula.intro': 'Le nombre de voix pour exigé, R, dépend de la participation :',
|
||
'formula.W': "W — électorat : {n} ({source})",
|
||
'formula.W.wot': 'membres de la toile de confiance Ğ1',
|
||
'formula.W.group': 'membres du groupe',
|
||
'formula.T': 'T — voix exprimées : {n}',
|
||
'formula.M': 'M — majorité à pleine participation : {n} %',
|
||
'formula.G': 'G — gradient : {n}',
|
||
'formula.B': 'B — base : {n}',
|
||
'formula.Q': 'Q — quorum : {n}',
|
||
'formula.R': 'R — seuil actuel : {n} voix pour',
|
||
'formula.reading': "Sous le quorum Q, les votants qui manquent comptent comme « non ». Au-delà, la part de « pour » demandée, la plus haute au quorum, baisse quand la participation monte ; quand tout le monde vote, la majorité M suffit.",
|
||
'common.pct': '{n} %',
|
||
'settings.title': 'Réglages de la formule',
|
||
'settings.intro': "Pour changer un texte, le groupe demande un nombre de voix pour qui dépend de son électorat, de sa participation habituelle et de l'inertie de l'article.",
|
||
'settings.usual': 'Participation habituelle',
|
||
'settings.usual.median.one': '{n} votant sur {electorate} ({pct}) : la médiane des {sample} propositions votées depuis un an.',
|
||
'settings.usual.median.other': '{n} votants sur {electorate} ({pct}) : la médiane des {sample} propositions votées depuis un an.',
|
||
'settings.usual.reference.one': "{n} votant sur {electorate} ({pct}), deux fois {q}, le quorum de référence : la participation de référence, tant que le groupe n'a pas voté sur {min} propositions ({sample} pour l'instant).",
|
||
'settings.usual.reference.other': "{n} votants sur {electorate} ({pct}), deux fois {q}, le quorum de référence : la participation de référence, tant que le groupe n'a pas voté sur {min} propositions ({sample} pour l'instant).",
|
||
'settings.usual.bounded.one': "Ramenée entre {lo} et {hi} de l'électorat : le groupe demande ses voix pour comme si {n} personne votait ({pct}).",
|
||
'settings.usual.bounded.other': "Ramenée entre {lo} et {hi} de l'électorat : le groupe demande ses voix pour comme si {n} personnes votaient ({pct}).",
|
||
'settings.usual.when': 'Mesurée une fois par jour, la dernière fois le {date}.',
|
||
'settings.usual.never': 'Mesurée une fois par jour.',
|
||
'settings.levels': 'Les cinq crans',
|
||
'settings.col.level': 'Cran',
|
||
'settings.col.share': 'Part exigée',
|
||
'settings.col.quorum': 'Quorum',
|
||
'settings.col.required': 'Voix pour',
|
||
'settings.current': 'cet article',
|
||
'settings.share.note.one': "Part exigée : la part de « pour » demandée, à {n} votant comme d'habitude.",
|
||
'settings.share.note.other': "Part exigée : la part de « pour » demandée, à {n} votants comme d'habitude.",
|
||
'settings.quorum.note': "Quorum : en dessous, les votants qui manquent comptent comme « non ». C'est celui du cran ; l'auteur d'un article peut en fixer un autre avant le premier vote.",
|
||
'settings.required.version.one': 'Voix pour : à {n} votant, la participation de cette version.',
|
||
'settings.required.version.other': 'Voix pour : à {n} votants, la participation de cette version.',
|
||
'settings.required.usual.one': "Voix pour : à {n} votant, comme d'habitude.",
|
||
'settings.required.usual.other': "Voix pour : à {n} votants, comme d'habitude.",
|
||
'settings.reading': "À chaque cran, le groupe demande sa part de « pour » quand il vote comme d'habitude ; au-delà du quorum, plus il y a de votants, plus elle se rapproche de M. Sous le quorum du cran, les votants qui manquent comptent comme « non ».",
|
||
|
||
'history.title': 'Corrections',
|
||
'history.initial': 'texte initial',
|
||
'history.typo': 'coquille corrigée',
|
||
'history.substantive': 'changement de fond (votes à reconfirmer)',
|
||
'history.amendment': 'texte de départ remplacé',
|
||
'history.revert': "correction retirée par l'auteur",
|
||
'history.by': 'par {name}',
|
||
'history.typo.validated': 'validée par {name}',
|
||
'history.typo.deadline': 'appliquée sans réponse sous 3 jours',
|
||
|
||
'typo.title': 'Corriger une coquille',
|
||
'typo.note': "Accents, majuscules, faute de frappe, mot collé ou coupé : la correction ne se vote pas. Sur ton texte, elle s'applique tout de suite. Sur celui d'une autre personne, son auteur la valide (un administrateur pour un texte du seed) ; sans réponse sous 3 jours, elle s'applique. La ponctuation, les chiffres, les formules, les adresses et tout changement de sens passent par une proposition.",
|
||
'typo.save': 'Enregistrer la correction',
|
||
'typo.done': 'Coquille corrigée, sans toucher aux votes.',
|
||
'typo.substantive': 'Ce changement touche au sens : propose-le comme modification.',
|
||
'typo.asProposal': 'En faire une proposition',
|
||
'typo.pending.author': "Ta correction attend l'auteur du texte : elle s'applique quand il la valide, ou d'elle-même le {date}.",
|
||
'typo.pending.admin': "Ta correction attend un administrateur, ce texte venant du seed : elle s'applique quand il la valide, ou d'elle-même le {date}.",
|
||
'typo.list': 'Coquilles proposées',
|
||
'typo.by': 'proposée par {name}',
|
||
'typo.status.pending': "en attente : s'applique d'elle-même le {date}",
|
||
'typo.status.applied': 'appliquée',
|
||
'typo.status.refused': 'refusée',
|
||
'typo.status.stale': 'périmée : le texte a changé entre-temps',
|
||
'typo.settled.by': 'par {name}',
|
||
'typo.settled.deadline': 'sans réponse sous 3 jours',
|
||
'typo.validate': 'Valider',
|
||
'typo.refuse': 'Refuser',
|
||
'typo.undo': "Revenir au texte d'avant",
|
||
'typo.redo': 'Appliquer finalement',
|
||
'typo.validated': 'Correction appliquée.',
|
||
'typo.refused': 'Correction refusée.',
|
||
|
||
'objection.title': 'Objections',
|
||
'objection.none': 'Aucune objection.',
|
||
'objection.add': 'Faire une objection',
|
||
'objection.kind': 'Ton objection',
|
||
'objection.kind.redit': 'Redit',
|
||
'objection.kind.contredit': 'Contredit',
|
||
'objection.kind.redit.hint': 'ce texte répète un autre article',
|
||
'objection.kind.contredit.hint': "ce texte dit le contraire d'un autre article",
|
||
'objection.target': 'Quel article ?',
|
||
'objection.reason.redit': 'En quoi ces deux textes disent la même chose',
|
||
'objection.reason.contredit': 'En quoi ces deux textes se contredisent',
|
||
'objection.send': "Envoyer l'objection",
|
||
'objection.sent': "Objection enregistrée : jusqu'à sa levée, personne ne peut plus voter pour la dernière arrivée des deux versions.",
|
||
'objection.note': "Une objection retient la dernière arrivée des deux versions jusqu'à sa levée — jamais un texte en vigueur : personne ne peut plus voter pour elle, chacun peut voter contre ou retirer son vote. Son auteur répond : pour une redite, il modifie l'article visé ; pour une contradiction, il reformule. Tu lèves alors l'objection ou tu la réitères ; sans réponse de ta part sous 3 jours, elle est levée.",
|
||
'objection.says.redit': '« {held} » redit « {other} »',
|
||
'objection.says.contredit': '« {held} » contredit « {other} »',
|
||
'objection.by': 'objection de {name}',
|
||
'objection.held.here': 'personne ne peut plus voter pour cette version',
|
||
'objection.phase.author': "en attente d'une réponse de l'auteur",
|
||
'objection.phase.objector': "réponse arrivée : levée ou réitérée d'ici le {date}, sinon levée d'elle-même",
|
||
'objection.answer.revision': 'réponse : le texte retenu a été reformulé',
|
||
'objection.answer.other': "réponse : l'autre texte a changé",
|
||
'objection.answer.proposal': 'réponse : une proposition liée',
|
||
'objection.lifted.objector': "levée par la personne qui l'a faite",
|
||
'objection.lifted.admin': 'levée par un administrateur',
|
||
'objection.lifted.deadline': 'levée : 3 jours sans suite',
|
||
'objection.lifted.withdrawn': 'levée : la proposition a été retirée',
|
||
'objection.lifted.revision': 'tombée : le texte a changé',
|
||
'objection.lift': "Lever l'objection",
|
||
'objection.lift.admin': "Lever l'objection (administrateur)",
|
||
'objection.reiterate': "Réitérer l'objection",
|
||
'objection.done.lifted': 'Objection levée.',
|
||
'objection.done.reiterated': 'Objection réitérée : une nouvelle réponse est attendue.',
|
||
'objection.respond.redit': "Modifier l'article visé",
|
||
'objection.respond.contredit': 'Reformuler',
|
||
'objection.linked': "Cette proposition répond à une objection : une fois soumise, la personne qui l'a faite la lève ou la réitère.",
|
||
'messages.title': 'Messages',
|
||
'messages.intro': "Ce qui attend un geste de toi : une objection à laquelle répondre, une correction de coquille à valider. Chaque message porte son échéance ; un message traité ne demande plus rien. Tu y lis aussi ce qu'il advient d'un vote qui n'a pas été compté.",
|
||
'messages.none': "Aucun message pour l'instant.",
|
||
'messages.readAll': 'Tout marquer comme lu',
|
||
'messages.read': 'Marquer comme lu',
|
||
'messages.unread': 'non lu',
|
||
'messages.due': 'échéance : {date}',
|
||
'messages.open': 'Voir dans le texte',
|
||
'messages.topic.objection': 'Objection',
|
||
'messages.topic.typo': 'Coquille',
|
||
'messages.topic.ballot': 'Vote',
|
||
'messages.objection_raised.redit': "{name} fait une objection : ta version « {held} » redit « {other} ». Jusqu'à sa levée, personne ne peut plus voter pour elle. Pour répondre, modifie l'article visé.",
|
||
'messages.objection_raised.contredit': "{name} fait une objection : ta version « {held} » contredit « {other} ». Jusqu'à sa levée, personne ne peut plus voter pour elle. Pour répondre, reformule-la.",
|
||
'messages.objection_reiterated': '{name} réitère son objection : personne ne peut encore voter pour « {held} ». Réponds à nouveau.',
|
||
'messages.objection_answered': 'Ton objection sur « {held} » a reçu une réponse. Lève-la si elle te convient, ou réitère-la. Sans réponse de ta part, elle est levée.',
|
||
'messages.typo_pending.author': '{name} propose une correction de coquille dans ta version « {title} ».',
|
||
'messages.typo_pending.admin': '{name} propose une correction de coquille dans « {title} », un texte du seed : un administrateur la valide.',
|
||
'messages.ballot_expired': "Ton vote du {date} ({articles}) n'a pas été vu sur la chaîne Ğ1 en 24 heures : il est écarté. Tu peux voter à nouveau.",
|
||
'messages.ballot_refused': "Ton vote du {date} ({articles}) n'a pas été compté : {reason} Tu peux voter à nouveau.",
|
||
'messages.ballot_objection': "Ton « pour » sur {articles} est écarté : une objection retenait cette version quand la chaîne Ğ1 a confirmé ton vote. Ton vote d'avant reste.",
|
||
'messages.respond': 'Répondre',
|
||
'messages.outcome.answered': 'réponse donnée',
|
||
'messages.outcome.reiterated': 'objection réitérée',
|
||
'messages.outcome.lifted': 'objection levée',
|
||
'messages.outcome.admin': 'objection levée par un administrateur',
|
||
'messages.outcome.deadline.objection': 'objection levée : 3 jours sans suite',
|
||
'messages.outcome.deadline.typo': 'correction appliquée : 3 jours sans réponse',
|
||
'messages.outcome.withdrawn': 'proposition retirée',
|
||
'messages.outcome.applied': 'correction appliquée',
|
||
'messages.outcome.refused': 'correction refusée',
|
||
'messages.outcome.stale': 'correction périmée : le texte a changé',
|
||
'messages.outcome.done': 'traité',
|
||
|
||
'propose.mode.replace': 'Modifier ce texte',
|
||
'propose.mode.remove': 'Retirer cet article',
|
||
'propose.mode.new': 'Nouvel article',
|
||
'propose.section': 'Dans la section',
|
||
'propose.section.note': 'Le nouvel article se place à la fin de la section ; son ordre se vote à part, en fin de section.',
|
||
'propose.title': 'Titre',
|
||
'propose.body': 'Texte',
|
||
'propose.remove.note': 'La proposition de retrait se vote comme une autre ; si elle passe, l’article sort du texte en vigueur.',
|
||
'propose.draft': 'Enregistrer le brouillon',
|
||
'propose.submit': 'Soumettre au vote',
|
||
'propose.drafted': 'Brouillon enregistré.',
|
||
'propose.submitted': 'Proposition soumise au vote.',
|
||
'propose.rule': "Tant que c'est un brouillon, tu le modifies librement. Une fois soumis, une coquille se corrige sans toucher aux votes ; un changement de fond demande aux votants de reconfirmer.",
|
||
'propose.edit': 'Modifier',
|
||
'propose.withdraw': 'Retirer ma proposition',
|
||
'propose.withdrawn': 'Proposition retirée.',
|
||
'propose.saved.typo': 'Correction enregistrée, les votes restent.',
|
||
'propose.saved.substantive': 'Nouvelle version enregistrée : les votants devront reconfirmer.',
|
||
|
||
'assist.title': 'Assistant',
|
||
'assist.quiet': 'Rien à signaler : une proposition, une décision.',
|
||
'assist.split': 'Ce texte semble porter {n} décisions. Une proposition = une décision : les découper ?',
|
||
'assist.split.do': 'Découper en {n} brouillons',
|
||
'assist.split.done': 'Découpé en {n} brouillons.',
|
||
'assist.similar': 'Proche de « {title} »{where}.',
|
||
'assist.similar.inForce': ' (en vigueur)',
|
||
'assist.similar.variant': 'En faire une variante de cet article',
|
||
'assist.long': 'Texte long ({n} signes) : un article court se vote mieux.',
|
||
|
||
'translate.title': 'Traduire ({lang})',
|
||
'translate.save': 'Enregistrer la traduction',
|
||
'translate.saved': 'Traduction enregistrée.',
|
||
'translate.note': 'Les traductions ne se votent pas. Elles passent « à revoir » quand le texte français change de fond.',
|
||
|
||
'feedback.title': 'Faire un retour',
|
||
'feedback.prompt': "Ce que tu as fait, ce que tu attendais, ce qui s'est passé.",
|
||
'feedback.send': 'Envoyer le retour',
|
||
'feedback.sent': 'Retour envoyé. Merci.',
|
||
'feedback.context': "L'adresse de la page, la langue et la taille de l'écran sont jointes.",
|
||
|
||
'access.title': 'trustinWallet — accès',
|
||
'access.intro': "Qui ouvre quel groupe. Monnaie libre s'ouvre de lui-même aux membres de la toile de confiance Ğ1 ; les autres groupes s'ouvrent un par un.",
|
||
'access.groups': 'Groupes',
|
||
'access.members.none': 'Aucun membre accordé.',
|
||
'access.members.wot': '+ tous les membres de la toile Ğ1',
|
||
'access.grant': 'Accorder',
|
||
'access.revoke': 'Retirer',
|
||
'access.choose': 'Choisir une identité',
|
||
'access.invitations': 'Invitations',
|
||
'access.invite.label': 'Pour qui',
|
||
'access.invite.groups': 'Groupes ouverts par le lien',
|
||
'access.invite.admin': 'administrateur des accès',
|
||
'access.invite.create': "Créer le lien d'invitation",
|
||
'access.invite.link': "Lien d'invitation, à usage unique, valable 14 jours. Il ne s'affichera plus : copie-le maintenant.",
|
||
'access.invite.copy': 'Copier le lien',
|
||
'access.invite.copied': 'Lien copié.',
|
||
'access.invite.cancel': 'Annuler',
|
||
'access.invite.pending': 'En attente',
|
||
'access.team': "Liens d'équipe",
|
||
'access.team.intro': "Un lien à partager avec une équipe, jusqu'à une date. Chaque personne qui l'ouvre donne son nom et reçoit sa propre identité, jamais le rôle d'administrateur. Révoquer ferme le lien ; les personnes déjà venues gardent leurs accès, à retirer une par une.",
|
||
'access.team.label': 'Pour quelle équipe',
|
||
'access.team.days': 'Valable combien de jours',
|
||
'access.team.uses': 'Combien de personnes au plus',
|
||
'access.team.create': "Créer le lien d'équipe",
|
||
'access.team.link': "Lien d'équipe, à partager : il sert jusqu'à sa date ou à sa dernière place. Il ne s'affichera plus : copie-le maintenant.",
|
||
'access.team.state': '{uses} / {max} personnes · jusqu’au {date}',
|
||
'access.team.revoke': 'Révoquer',
|
||
'access.team.via': 'venue par « {label} »',
|
||
'access.identities': 'Identités',
|
||
'access.admin': 'administrateur',
|
||
'access.admin.give': 'Rendre administrateur',
|
||
'access.admin.take': 'Retirer le rôle',
|
||
'access.relink': 'Nouveau lien de connexion',
|
||
'access.relink.link': "Lien de connexion pour {name}, à usage unique, valable 14 jours — pour ouvrir sa session sur un autre appareil. Il ne s'affichera plus : copie-le maintenant.",
|
||
'access.sessions.close': 'Fermer ses sessions ({n})',
|
||
'access.sessions.closeMine': 'Fermer mes autres sessions ({n})',
|
||
'access.sessions.closed.one': '{n} session fermée.',
|
||
'access.sessions.closed.other': '{n} sessions fermées.',
|
||
'access.sessions.links.one': 'Le lien de connexion encore en attente est annulé.',
|
||
'access.sessions.links.other': 'Les {n} liens de connexion encore en attente sont annulés.',
|
||
'access.kind.g1': 'Ğ1',
|
||
'access.kind.invite': 'invitation',
|
||
'access.kind.dev': 'dev',
|
||
'access.member': 'membre de la toile',
|
||
'access.feedback': 'Retours',
|
||
'access.feedback.none': 'Aucun retour.',
|
||
'access.feedback.seen': 'Vu',
|
||
'access.feedback.done': 'Traité',
|
||
'access.publication': "Publication des textes",
|
||
'access.publication.remote': "Dépôt : {remote}",
|
||
'access.publication.key': "Clé de déploiement du serveur. Ajoute-la avec le droit d'écriture sur ce dépôt (Paramètres › Dépôt › Clés de déploiement) : sans elle, les publications attendent.",
|
||
'access.publication.none': "La publication n'est pas configurée sur ce serveur.",
|
||
'access.publication.pending.one': '{n} envoi en attente',
|
||
'access.publication.pending.other': '{n} envois en attente',
|
||
'access.publication.last': 'Dernière publication : {date} (commit {commit})',
|
||
'access.publication.never': "Rien n'a encore été publié sur ce dépôt.",
|
||
'access.publication.error': 'Dernier échec : {error}',
|
||
'access.publication.now': 'Publier maintenant',
|
||
'access.publication.queued': 'Publication relancée.',
|
||
'access.denied': 'La gestion des accès est réservée aux administrateurs de trustinWallet.',
|
||
|
||
|
||
'error.unauthenticated': 'Connecte-toi pour continuer.',
|
||
'error.forbidden': "Tu n'as pas accès à cette page.",
|
||
'error.not_found': "Cette page n'existe pas, ou elle ne t'est pas visible.",
|
||
'error.network': 'Le serveur ne répond pas. Vérifie ta connexion et réessaie.',
|
||
'error.internal': 'Quelque chose a échoué de notre côté. Réessaie dans un moment.',
|
||
'error.title': 'Le titre est vide ou trop long (120 signes au plus).',
|
||
'error.body': 'Le texte est vide ou trop long (4 000 signes au plus).',
|
||
'error.reason': 'Dis en quelques mots ce qui fonde ton objection (10 à 600 signes).',
|
||
'error.substantive_not_author': "Ce changement touche au sens : seul l'auteur de la proposition peut le faire. Propose ta propre version.",
|
||
'error.substantive_in_force': 'Ce changement touche au sens : propose-le comme modification.',
|
||
'error.same_unit': "Ces deux textes visent le même article : ils ne peuvent de toute façon pas être en vigueur ensemble.",
|
||
'error.last_admin': 'Il faut garder au moins un administrateur.',
|
||
'error.g1_not_configured': "La connexion Ğ1 n'est pas encore active.",
|
||
'error.invitation_invalid': "Ce lien d'invitation n'est plus valable.",
|
||
'error.identity_kind': "Un nouveau lien ne peut viser qu'une personne invitée, jamais une identité Ğ1.",
|
||
'error.hidden_characters': "Le texte contient des caractères invisibles (inversion du sens d'écriture, espace de largeur nulle, trait d'union conditionnel, sélecteur de couleur d'un emoji…) : retire-les.",
|
||
'error.changed': 'Le texte a changé entre-temps : recharge-le, puis recommence.',
|
||
'error.label': 'Le nom est vide ou trop long (60 signes au plus).',
|
||
'error.name': "Ton nom fait de 2 à 60 signes, sur une ligne : lettres, chiffres, espaces, trait d'union, apostrophe ou point.",
|
||
'error.name_taken': 'Ce nom est déjà pris. Choisis-en un autre, en ajoutant une initiale par exemple.',
|
||
'error.team_limits': "Un lien d'équipe vaut de 1 à 90 jours, pour 1 à 500 personnes.",
|
||
'error.groups': 'Choisis au moins un groupe.',
|
||
'error.publication_off': "La publication n'est pas configurée sur ce serveur.",
|
||
'error.chain_vote_off': "Le vote par la chaîne Ğ1 n'est pas encore ouvert.",
|
||
'error.chain_only': 'Ici, le vote passe par la chaîne Ğ1, avec ton portefeuille.',
|
||
'error.server_vote': 'Ici, le vote se fait directement, sans portefeuille.',
|
||
'error.too_many_ballots': 'Tu as déjà beaucoup de bulletins en attente, ou laissés en route depuis une heure : attends leur confirmation, ou réessaie un peu plus tard.',
|
||
'error.lines': 'Ce vote ne tient plus : recharge la page, puis recommence.',
|
||
'error.choice': "Ce choix n'existe pas.",
|
||
'error.author': "Ce compte n'est pas une adresse Ğ1.",
|
||
'error.not_votable': 'Cette version ne se vote plus.',
|
||
'error.members_only': 'Seuls les membres de ce groupe votent ici.',
|
||
'error.module': "Un module se propose à sa place : le titre en tête du document, l'ordre en fin de section.",
|
||
'error.order': 'Cet ordre doit reprendre chaque article de la section, une seule fois : recharge la page, puis recommence.',
|
||
'error.same_order': "C'est déjà l'ordre en vigueur.",
|
||
'error.order_fixed': 'Un ordre ne se corrige pas : propose un autre ordre.',
|
||
'error.not_an_order': "Ce module n'est pas l'ordre d'une section.",
|
||
'error.not_a_title': "Ce module n'est pas le titre du document.",
|
||
'error.same_title': "C'est déjà le titre en vigueur.",
|
||
'error.section': "Cette section n'existe pas dans ce document.",
|
||
'error.objection': "Une objection retient cette version : jusqu'à sa levée, tu peux voter contre ou retirer ton vote, pas voter pour.",
|
||
'error.kind': "Dis si ce texte redit l'autre ou le contredit.",
|
||
'error.other': 'Choisis un autre article, en vigueur ou proposé.',
|
||
'error.both_in_force': 'Ces deux textes sont en vigueur : une objection vise toujours une version qui ne l’est pas encore.',
|
||
'error.objection_exists': 'Tu as déjà une objection en cours sur ces deux textes.',
|
||
'error.nothing_to_reiterate': "Rien à réitérer : aucune réponse n'est encore arrivée.",
|
||
'error.lifted': 'Cette objection est déjà levée.',
|
||
'error.settled': 'Cette correction est déjà tranchée.',
|
||
'error.link': 'Cette proposition ne peut pas répondre à cette objection : elle vise un autre article, ou l’objection est levée.',
|
||
'error.retry': 'Réessayer',
|
||
|
||
'common.cancel': 'Annuler',
|
||
'common.close': 'Fermer',
|
||
'common.save': 'Enregistrer',
|
||
'common.loading': 'Chargement…',
|
||
'common.back': 'Retour',
|
||
} as const;
|
||
|
||
export type Key = keyof typeof fr;
|
||
export type Messages = Record<Key, string>;
|