forked from yvv/decision
Sous l'article, une version retenue montre « Contre » et le retrait, avec la phrase qui dit pourquoi. Dans le panier, elle se choisit en « contre » ou en retrait ; « Tout pour » la saute et le dit, « Tout contre » la prend ; un « pour » gardé d'avant l'objection quitte le panier (basket.kept). Les phrases qui disaient « ne se vote plus » disent la règle d'Yvv, en fr, en et es. C28 ajusté. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
660 lines
40 KiB
TypeScript
660 lines
40 KiB
TypeScript
import type { Messages } from './fr';
|
||
|
||
export const en: Messages = {
|
||
'app.name': 'libreDecision',
|
||
'app.skip': 'Skip to content',
|
||
|
||
'nav.label': 'Toolbox',
|
||
'nav.home': 'Home',
|
||
'nav.decisions': 'Decisions',
|
||
'nav.docs': 'Reference documents',
|
||
'nav.mandates': 'Mandates',
|
||
'nav.protocols': 'Protocols',
|
||
'nav.groups': 'My groups',
|
||
'nav.messages': 'Messages',
|
||
'nav.messages.count.one': 'Messages, {n} unread',
|
||
'nav.messages.count.other': 'Messages, {n} unread',
|
||
'nav.docs.count.one': '{label}, {n} document in progress',
|
||
'nav.docs.count.other': '{label}, {n} documents in progress',
|
||
'nav.access': 'Access',
|
||
'nav.access.hint': 'trustinWallet',
|
||
'nav.feedback': 'Give feedback',
|
||
'nav.signin': 'Sign in',
|
||
'nav.signout': 'Sign out',
|
||
'nav.mood': 'Mood',
|
||
'mood.pierre': 'Stone',
|
||
'mood.calcaire': 'Limestone',
|
||
'mood.nuit': 'Night',
|
||
'mood.ardoise': 'Slate',
|
||
'nav.lang': 'Language',
|
||
'nav.menu': 'Menu',
|
||
'nav.close': 'Close',
|
||
|
||
'home.title': 'Making collective decisions possible',
|
||
'home.leitmotiv.context': 'context and framing',
|
||
'home.leitmotiv.process': 'processes and methods',
|
||
'home.leitmotiv.tools': 'a toolbox',
|
||
'home.signin': 'Sign in with your Ğ1 key',
|
||
'home.signin.note': 'The same access as the Monnaie libre forum: you sign with Ğecko, no password needed.',
|
||
|
||
'signin.title': 'Sign in',
|
||
'signin.g1': 'Sign in with Ğ1',
|
||
'signin.g1.how': "You'll be sent to connect.monnaie-libre.fr, the sign-in service of the Monnaie libre forum. There you approve the sign-in in Ğecko (link or QR code), then come back here. No password and no key is ever passed to us.",
|
||
'signin.g1.members': 'For members of the Ğ1 web of trust only.',
|
||
'signin.g1.pending': "Ğ1 sign-in is on its way: libreDecision's registration with connect.monnaie-libre.fr is in progress. Meanwhile, you get in with an invitation link.",
|
||
'signin.invite': 'Got an invitation link? Just open it: it signs you in.',
|
||
'signin.dev': 'Development sign-in',
|
||
'signin.dev.name': 'Name',
|
||
'signin.dev.admin': 'access administrator',
|
||
'signin.dev.go': 'Enter',
|
||
'signin.error.refus': 'The sign-in was declined on connect.monnaie-libre.fr.',
|
||
'signin.error.etat': 'The sign-in expired or came from another browser. Start again from this browser.',
|
||
'signin.error.incomplet': 'The response from connect.monnaie-libre.fr was incomplete. Start again.',
|
||
'signin.error.echange': "connect.monnaie-libre.fr isn't responding. Try again in a moment.",
|
||
'signin.error.interne': 'Sign-in failed on our side. Try again in a moment.',
|
||
|
||
'invite.title': 'Invitation',
|
||
'invite.working': 'Signing in…',
|
||
'invite.invalid': 'This invitation link is no longer valid: it has already been used or it has expired. Ask the person who sent it to you for a new link.',
|
||
'invite.missing': 'This link is incomplete. Open the whole invitation link, exactly as you received it.',
|
||
'team.title': 'Join a team',
|
||
'team.working': 'Reading the link…',
|
||
'team.invalid': 'This team link is no longer valid: it has expired, it has been revoked or all its places are taken. Ask the person who sent it to you for a new link.',
|
||
'team.missing': 'This link is incomplete. Open the whole team link, exactly as you received it.',
|
||
'team.opens': '“{label}” opens for you: {groups}.',
|
||
'team.until': 'Link valid until {date}.',
|
||
'team.name': 'Your name',
|
||
'team.name.hint': 'The name the group will see you under. One person, one identity: if you have already joined, come back in the browser where your session is open.',
|
||
'team.join': 'Join',
|
||
'team.signed': 'Your session is open under the name {name}: these groups are added to your identity.',
|
||
'team.add': 'Add these groups',
|
||
'team.notme': "It's not me: sign out",
|
||
|
||
'groups.title': 'My groups',
|
||
'groups.same.key': 'Groups that use the same key',
|
||
'groups.locked': 'Members only',
|
||
'groups.locked.long': 'This group opens to its members. Ask a trustinWallet administrator for access.',
|
||
'groups.test': 'For testing',
|
||
'groups.open': 'Open',
|
||
'groups.empty': 'No group is visible yet.',
|
||
|
||
'group.tools': 'Tools',
|
||
'group.current': 'In progress',
|
||
'group.current.none': 'No document in progress in this group yet.',
|
||
'group.upcoming': 'Coming up',
|
||
'group.upcoming.none': 'Nothing is announced here yet.',
|
||
|
||
'pillar.decisions': 'A guided path to choose the right decision methods, and to keep the decision log.',
|
||
'pillar.docs': 'Commitment act, license, charter, constitution: living texts, always open for voting.',
|
||
'pillar.mandates': 'Create and revoke any kind of mandate.',
|
||
'pillar.protocols': 'Workflows to organize without a statutory body: rotating roles and technical automations.',
|
||
'pillar.open': 'open',
|
||
'pillar.soon': 'coming soon',
|
||
|
||
'decisions.note': 'A module is an article of the document. It remains to be voted on until one of its versions has been adopted by a vote.',
|
||
'decisions.toVote.one': '{n} module to vote on',
|
||
'decisions.toVote.other': '{n} modules to vote on',
|
||
'decisions.withoutMyVote.one': 'of which {n} without your vote',
|
||
'decisions.withoutMyVote.other': 'of which {n} without your vote',
|
||
|
||
'docs.title': 'Reference documents',
|
||
'docs.inForce.one': '{n} article in force',
|
||
'docs.inForce.other': '{n} articles in force',
|
||
'docs.open.one': '{n} open proposal',
|
||
'docs.open.other': '{n} open proposals',
|
||
|
||
'doc.view.label': 'Read',
|
||
'doc.view.inforce': 'In force',
|
||
'doc.view.wellrated': 'If well-rated ones pass',
|
||
'doc.view.all': 'If everything passes',
|
||
'doc.view.wellrated.note': 'Preview: the text as it would be if the well-rated proposals came into force. Nothing is adopted.',
|
||
'doc.view.all.note': 'Preview: the text as it would be if all proposals came into force, even those with little support. Nothing is adopted.',
|
||
'doc.view.empty': 'No proposal changes the text in this preview.',
|
||
'doc.mark.added': 'added',
|
||
'doc.mark.replaced': 'changed',
|
||
'doc.mark.removed': 'removed',
|
||
'doc.lang.label': 'Text language',
|
||
'doc.lang.translation': 'Editorial translation, not voted on. The authoritative text is in French.',
|
||
'doc.lang.original': 'Read the original',
|
||
'doc.lang.stale': 'translation needs review',
|
||
'doc.lang.missing': 'not translated yet',
|
||
'doc.seed': 'seed a minima',
|
||
'doc.seed.long': 'Came into force without a vote, so as not to start from a blank page. It remains open for voting, like any text.',
|
||
'doc.seed.votes.one': 'seed a minima · {n} vote',
|
||
'doc.seed.votes.other': 'seed a minima · {n} votes',
|
||
'doc.confirmed': 'confirmed by vote',
|
||
'doc.adopted': 'adopted on {date}',
|
||
'doc.action.vote': 'Voting',
|
||
'doc.action.proposals': 'Proposals',
|
||
'doc.action.propose': 'Propose a change',
|
||
'doc.basket': 'Vote in bulk',
|
||
'doc.basket.count': 'Vote in bulk · {n}',
|
||
'doc.empty': 'No article is in force. The proposals below move up as soon as they reach their threshold.',
|
||
'doc.published': 'Published to the text repository',
|
||
'doc.publish.pending': 'Publication pending',
|
||
|
||
'deep.title': 'Open proposals',
|
||
'deep.note': 'Not in force yet. Each one moves up as soon as it reaches its threshold: at least {floor} votes in favor, then the majority its inertia requires.',
|
||
'deep.new': 'Propose a new article',
|
||
'deep.drafts': 'Your drafts',
|
||
'deep.drafts.note': 'Not submitted to vote. Only you can see them.',
|
||
'deep.rival': 'would replace “{title}”',
|
||
'deep.addition': 'new article',
|
||
'deep.removal': 'removal of “{title}”',
|
||
'deep.inertia': 'inertia to {level}',
|
||
'deep.held': 'held back by an objection',
|
||
'deep.mine': 'your proposal',
|
||
'deep.stale': 'needs reconfirming',
|
||
'deep.wellrated': 'well-rated',
|
||
'deep.filter.all': 'All',
|
||
'deep.filter.wellrated': 'Well-rated',
|
||
'deep.filter.mine': 'Mine',
|
||
'deep.none': 'No proposals in this filter.',
|
||
'deep.variant': 'variant {label}',
|
||
'deep.versions.one': '{n} version',
|
||
'deep.versions.other': '{n} versions',
|
||
'deep.version': 'version {n}',
|
||
'deep.lead': 'leading: {label}',
|
||
'section.introduction': 'Introduction',
|
||
'section.fondamental': 'Fundamental commitments',
|
||
'section.technique': 'Technical commitments',
|
||
'section.conclusion': 'Conclusion',
|
||
'section.annexe': 'Annexes',
|
||
'section.formule': 'Voting formula',
|
||
'section.inertie': 'Inertia',
|
||
'section.ordonnancement': 'Ordering',
|
||
'module.title.name': 'Title of the document',
|
||
'module.order.name': 'Order of the articles',
|
||
'module.order.named': 'Order of the articles · {section}',
|
||
'module.order.count.one': '{n} article',
|
||
'module.order.count.other': '{n} articles',
|
||
'module.order.inforce': 'Order in force',
|
||
'module.order.proposal': 'Order proposed',
|
||
'module.order.added.one': '{n} article added since, placed at the end',
|
||
'module.order.added.other': '{n} articles added since, placed at the end',
|
||
'module.order.dropped.one': '{n} article gone since',
|
||
'module.order.dropped.other': '{n} articles gone since',
|
||
'module.order.same': 'it is the order in force',
|
||
'module.order.rule': 'A new article goes at the end of its section. If it arrives while an order is under vote, it is added at its end, and the votes stay.',
|
||
'order.propose': 'Propose another order',
|
||
'order.edit.label': 'New order of the articles',
|
||
'order.edit.help': 'Click an article, then its new place, or use its arrows. With the keyboard: Enter to choose it, up and down arrows to move it.',
|
||
'order.edit.up': 'Move “{title}” up',
|
||
'order.edit.down': 'Move “{title}” down',
|
||
'order.edit.chosen': '“{title}” chosen: click its new place.',
|
||
'order.edit.moved': '“{title}” now in place {n} of {total}.',
|
||
'order.edit.submit': 'Propose this order',
|
||
'order.edit.unchanged': 'This is the order in force: move at least one article.',
|
||
'order.edit.note': 'An order is voted at inertia {level}, like an article: unfolded, in the basket, on the Ğ1 chain in Monnaie libre.',
|
||
'order.submitted': 'Order submitted to vote.',
|
||
'title.propose': 'Propose another title',
|
||
'title.propose.label': 'New title',
|
||
'title.propose.note': 'The title of the document is voted at inertia {level}. Its translations stay editorial: they will read “to review”.',
|
||
'title.submitted': 'Title submitted to vote.',
|
||
|
||
'tally.short': '{for} for · {against} against',
|
||
'tally.required': 'Threshold: {n} votes in favor',
|
||
'tally.missing.one': '{n} more vote in favor needed.',
|
||
'tally.missing.other': '{n} more votes in favor needed.',
|
||
'tally.reached': 'Threshold reached.',
|
||
'tally.level': 'Level: {pct}% of the threshold',
|
||
'inertia.name.1': 'very low',
|
||
'inertia.name.2': 'low',
|
||
'inertia.name.3': 'medium',
|
||
'inertia.name.4': 'high',
|
||
'inertia.name.5': 'very high',
|
||
'inertia.level': '{k} / 5 · {name}',
|
||
'inertia.badge': 'inertia {level}',
|
||
|
||
|
||
'panel.vote': 'Voting',
|
||
'panel.proposals': 'Proposals',
|
||
'panel.propose': 'Propose',
|
||
'panel.settings': 'Settings',
|
||
'panel.basket': 'Basket',
|
||
'panel.details': 'Details',
|
||
'panel.close': 'Close panel',
|
||
'panel.inforce': 'In force',
|
||
'panel.proposal': 'Proposal',
|
||
'panel.by': 'proposed by {name}',
|
||
'author.invited': 'by invitation',
|
||
'panel.seed.origin': 'text from the seed',
|
||
'panel.changes': 'View changes',
|
||
'panel.text': 'View text',
|
||
|
||
'vote.yours': 'Your vote',
|
||
'vote.for': 'For',
|
||
'vote.against': 'Against',
|
||
'vote.retract': 'Withdraw my vote',
|
||
'vote.saved': 'Vote saved.',
|
||
'vote.retracted': 'Vote withdrawn.',
|
||
'vote.stale': 'The text has changed in substance since you voted: your vote no longer counts until you reconfirm it.',
|
||
'vote.reconfirm': 'Reconfirm: {choice}',
|
||
'vote.private': 'Nobody sees your vote: only the totals are visible.',
|
||
'vote.held': 'An objection is holding this version back: until it is lifted, nobody can vote for it any more. You can vote against it or take your vote back; once lifted, it enters into force only with the votes still there.',
|
||
'vote.held.redit': 'It repeats “{other}”.',
|
||
'vote.held.contredit': 'It contradicts “{other}”.',
|
||
'vote.held.author.redit': 'For it to be voted on again, change the article it repeats. The person who raised the objection then lifts it or reiterates it; with no answer from them within 3 days, it is lifted.',
|
||
'vote.held.author.contredit': 'For it to be voted on again, reword it. The person who raised the objection then lifts it or reiterates it; with no answer from them within 3 days, it is lifted.',
|
||
'vote.held.waiting': 'An answer came: {name} lifts or reiterates the objection by {date}; with no answer, it is lifted.',
|
||
'vote.held.mine': 'You raised this objection: lift it when the answer suits you.',
|
||
'vote.held.mine.asked': 'An answer came: lift your objection if it suits you, or reiterate it, by {date}. With no answer from you, it is lifted.',
|
||
'vote.entered': '“{title}” has come into force.',
|
||
'vote.entered.remove': '“{title}” has been removed from the text in force.',
|
||
'vote.entered.inertia': 'The inertia of “{title}” has changed.',
|
||
'vote.entered.order': 'The new order of “{section}” has come into force.',
|
||
'vote.entered.title': 'The title “{title}” has come into force.',
|
||
'vote.closed': 'This version is no longer open for voting.',
|
||
'vote.fold': 'The vote on “{title}”',
|
||
'vote.mine.none': 'You have not voted on this version.',
|
||
'vote.mine.for': 'Your vote: for',
|
||
'vote.mine.against': 'Your vote: against',
|
||
'vote.mine.chain': 'recorded on the Ğ1 chain',
|
||
'vote.mine.saved': 'saved',
|
||
'vote.mine.pending': 'Waiting for the Ğ1 chain: {choice}.',
|
||
'vote.mine.refused': 'Your last vote was not counted: {reason}',
|
||
'vote.mine.expired': 'Your last vote was not seen on the Ğ1 chain in time: it does not count.',
|
||
'vote.mine.receipts': 'Your ballots and receipts',
|
||
'vote.choice.for': 'for',
|
||
'vote.choice.against': 'against',
|
||
'vote.choice.none': 'withdrawing your vote',
|
||
'vote.chain.note': 'Your vote leaves from your Ğ1 wallet: {amount} Ğ1, in a single gesture. The chain shows that you voted, never what you voted.',
|
||
'vote.chain.counts': 'Your voice counts for the Ğ1 identity of the wallet that signs, if it is a member of the web of trust.',
|
||
'vote.chain.off': 'Voting through the Ğ1 chain is not open yet: the account that receives the votes is still to be created. You can read, propose and raise an objection.',
|
||
'vote.members': 'Only members of this group vote here.',
|
||
'vote.details': 'Typos, translations, objections, history',
|
||
'ballot.reason.not_member': 'the wallet that signed is not that of a member of the Ğ1 web of trust.',
|
||
'ballot.reason.no_identity': 'the wallet that signed is linked to no Ğ1 identity.',
|
||
'ballot.reason.transfer': 'the transfer to the vote account is missing, or its amount is too low.',
|
||
'basket.title': 'Voting basket',
|
||
'basket.intro': 'Choose article by article, a whole section or the whole document: it all goes in a single gesture.',
|
||
'basket.doc': 'The whole document',
|
||
'basket.for': 'All for',
|
||
'basket.against': 'All against',
|
||
'basket.clear': 'Empty',
|
||
'basket.pick': 'Your choice for “{title}”',
|
||
'basket.pick.retract': 'Withdraw',
|
||
'basket.versions': 'Several versions: choose yours.',
|
||
'basket.waiting.one': '{n} article has several versions: a grouped gesture does not fill it, choose your version.',
|
||
'basket.waiting.other': '{n} articles have several versions: a grouped gesture does not fill them, choose your version.',
|
||
'basket.inforce': 'in force',
|
||
'basket.count.one': '{n} choice',
|
||
'basket.count.other': '{n} choices',
|
||
'basket.send.server': 'Vote ({n})',
|
||
'basket.send.chain': 'Sign and send ({n})',
|
||
'basket.note.server': 'Your votes count as soon as they are sent, all at once.',
|
||
'basket.note.chain': 'A single transaction of {amount} Ğ1, signed by your wallet, for all your choices.',
|
||
'basket.empty': 'Nothing in the basket yet.',
|
||
'basket.sent.one': '{n} vote saved.',
|
||
'basket.sent.other': '{n} votes saved.',
|
||
'basket.section': 'Vote on this section',
|
||
'basket.mine': 'your vote: {choice}',
|
||
'basket.held': 'an objection holds it back: against or withdraw, no “for”',
|
||
'basket.held.skipped.one': 'You put everything for, except {n} version an objection holds back: on it, you can vote against or take your vote back.',
|
||
'basket.held.skipped.other': 'You put everything for, except {n} versions an objection holds back: on them, you can vote against or take your vote back.',
|
||
'sign.title': 'Vote with your Ğ1 wallet',
|
||
'sign.summary.one': '{n} vote, in one transaction: {amount} Ğ1 to the vote account, with your sealed ballot.',
|
||
'sign.summary.other': '{n} votes, in one transaction: {amount} Ğ1 to the vote account, with your sealed ballot.',
|
||
'sign.wallet': 'With which wallet?',
|
||
'sign.account': 'With which account?',
|
||
'sign.opening': 'Your wallet is opening…',
|
||
'sign.signing': 'Confirm in your wallet.',
|
||
'sign.waiting': 'The Ğ1 chain is confirming your vote, usually in less than a minute.',
|
||
'sign.confirmed': 'Your vote counts: it is recorded on the Ğ1 chain.',
|
||
'sign.confirmed.as': 'Counted for the Ğ1 identity “{name}”.',
|
||
'sign.refused': 'Your vote was not counted: {reason}',
|
||
'sign.expired': 'Your vote was not seen on the Ğ1 chain in time: it does not count. Start again whenever you like.',
|
||
'sign.error.cancelled': 'You declined to sign: nothing was sent.',
|
||
'sign.error.funds': 'Your wallet does not have enough Ğ1: at least 1 Ğ1 must remain after the vote.',
|
||
'sign.error.node': 'The Ğ1 chain is not answering. Try again in a moment.',
|
||
'sign.error.account': 'This account is no longer in your wallet.',
|
||
'sign.error.wallet': 'Your wallet could not sign. Try again, or use Ğecko.',
|
||
'sign.none': 'No wallet is connected to this browser (duniter-connect, for example). On your phone, Ğecko does the job.',
|
||
'sign.gecko': 'Use Ğecko',
|
||
'sign.gecko.scan': 'Scan this code with Ğecko, or tap the link on your phone. Check the amount and the comment, then confirm.',
|
||
'sign.gecko.open': 'Open in Ğecko',
|
||
'sign.gecko.amount': 'Amount',
|
||
'sign.gecko.comment': 'Comment',
|
||
'sign.gecko.qr': 'Code to scan with Ğecko',
|
||
'sign.close': 'Close',
|
||
'sign.later': 'You can close: the confirmation will arrive on its own, and your vote will appear under the article.',
|
||
'sign.retry': 'Try again',
|
||
'sign.error.chain': 'The Ğ1 chain refused the transaction: your vote did not leave. Try again whenever you like.',
|
||
'sign.receipt': 'Download your receipt',
|
||
'sign.history': 'Your ballots',
|
||
'sign.receipt.note': 'Your receipt keeps your ballot and its salt: with it, you check for yourself that the chain carries your vote. Keep it to yourself.',
|
||
|
||
'ballots.title': 'Your ballots',
|
||
'ballots.intro': 'Each vote on the Ğ1 chain leaves in a sealed ballot: the chain shows that you voted, never what you voted. Your receipt keeps the ballot and its salt; with it, you check your vote for yourself. Nobody else receives it.',
|
||
'ballots.mine': 'Your ballots',
|
||
'ballots.signin': 'Sign in to find your ballots.',
|
||
'ballots.none': 'You have not sent any ballot on the Ğ1 chain yet.',
|
||
'ballots.lines.one': '{n} vote',
|
||
'ballots.lines.other': '{n} votes',
|
||
'ballots.status.pending': 'Waiting for the Ğ1 chain',
|
||
'ballots.status.confirmed': 'Counted for the Ğ1 identity “{name}”',
|
||
'ballots.status.refused': 'Not counted: {reason}',
|
||
'ballots.status.expired': 'Not seen on the Ğ1 chain in time: it does not count',
|
||
'ballots.block': 'block {n}',
|
||
'ballots.receipt': 'Download the receipt',
|
||
'ballots.verify.title': 'Check a receipt',
|
||
'ballots.verify.intro': 'Choose the file of a receipt, or paste its content: the page recomputes the seal of the ballot right here, without asking the server anything.',
|
||
'ballots.verify.file': 'Receipt file',
|
||
'ballots.verify.paste': 'Or paste the receipt',
|
||
'ballots.verify.go': 'Check',
|
||
'ballots.verify.ok': 'The receipt holds: its votes and its salt give this very comment.',
|
||
'ballots.verify.line': 'Version {version}, revision {revision}: {choice}',
|
||
'ballots.verify.line.label': '{label} — written in the receipt, outside the seal',
|
||
'ballots.verify.where': 'Look for this comment in the history of your wallet: it is your vote, written on the Ğ1 chain.',
|
||
'ballots.verify.where.block': 'Look for this comment in the history of your wallet, or on the Ğ1 chain (the receipt says block {block}, outside the seal): if it is there, signed by your account, it is your vote.',
|
||
'ballots.verify.bad': 'The receipt does not hold: its votes and its salt do not give its comment.',
|
||
'ballots.verify.computed': 'Recomputed:',
|
||
'ballots.verify.expected': 'In the receipt:',
|
||
'ballots.verify.unreadable': 'This is not a readable vote receipt.',
|
||
|
||
'inertia.title': 'Inertia',
|
||
'inertia.explain': 'The higher the inertia, the more votes it takes to change this text when few people vote.',
|
||
'inertia.change': 'Propose an inertia change',
|
||
'inertia.change.to': 'New inertia',
|
||
'inertia.change.note': "A change of inertia is itself voted at the article's inertia: {level}.",
|
||
'inertia.change.submit': 'Submit to vote',
|
||
'inertia.change.open': 'Inertia change in progress: to {level}',
|
||
'inertia.change.current': 'current',
|
||
'inertia.history.vote': 'Went from {from} to {to} on {date}, by a vote.',
|
||
'inertia.history.amendment': 'Went from {from} to {to} on {date}: starting setting of the text.',
|
||
|
||
'formula.title': 'The threshold formula',
|
||
'formula.intro': 'The number of votes in favor required, R, depends on turnout:',
|
||
'formula.W': 'W — electorate: {n} ({source})',
|
||
'formula.W.wot': 'members of the Ğ1 web of trust',
|
||
'formula.W.group': 'group members',
|
||
'formula.T': 'T — votes cast: {n}',
|
||
'formula.M': 'M — majority at full turnout: {n}%',
|
||
'formula.G': 'G — gradient: {n}',
|
||
'formula.B': 'B — base: {n}',
|
||
'formula.C': 'C — minimum votes in favor: {n}',
|
||
'formula.R': 'R — current threshold: {n} votes in favor',
|
||
'formula.reading': 'At low turnout, near-unanimity is needed; when everyone votes, majority M is enough. Nothing passes with fewer than C votes in favor.',
|
||
'common.pct': '{n}%',
|
||
'settings.title': 'Formula settings',
|
||
'settings.intro': 'To change a text, the group asks for a number of votes in favour that depends on its electorate, its usual turnout and the inertia of the article.',
|
||
'settings.usual': 'Usual turnout',
|
||
'settings.usual.median.one': '{n} voter out of {electorate} ({pct}): the median of the {sample} proposals voted on over the past year.',
|
||
'settings.usual.median.other': '{n} voters out of {electorate} ({pct}): the median of the {sample} proposals voted on over the past year.',
|
||
'settings.usual.reference.one': '{n} voter out of {electorate} ({pct}), twice C: the reference turnout, until the group has voted on {min} proposals ({sample} so far).',
|
||
'settings.usual.reference.other': '{n} voters out of {electorate} ({pct}), twice C: the reference turnout, until the group has voted on {min} proposals ({sample} so far).',
|
||
'settings.usual.bounded.one': 'Kept between {lo} and {hi} of the electorate: the group asks for its votes in favour as if {n} person voted ({pct}).',
|
||
'settings.usual.bounded.other': 'Kept between {lo} and {hi} of the electorate: the group asks for its votes in favour as if {n} people voted ({pct}).',
|
||
'settings.usual.when': 'Measured once a day, last on {date}.',
|
||
'settings.usual.never': 'Measured once a day.',
|
||
'settings.levels': 'The five levels',
|
||
'settings.col.level': 'Level',
|
||
'settings.col.share': 'Share asked',
|
||
'settings.col.required': 'Votes for',
|
||
'settings.current': 'this article',
|
||
'settings.share.note.one': 'Share asked: the votes in favour asked beyond C, at {n} voter as usual.',
|
||
'settings.share.note.other': 'Share asked: the votes in favour asked beyond C, at {n} voters as usual.',
|
||
'settings.required.version.one': "Votes for: at {n} voter, this version's turnout.",
|
||
'settings.required.version.other': "Votes for: at {n} voters, this version's turnout.",
|
||
'settings.required.usual.one': 'Votes for: at {n} voter, as usual.',
|
||
'settings.required.usual.other': 'Votes for: at {n} voters, as usual.',
|
||
'settings.reading': 'At each level, the group asks for its share of votes in favour beyond C when it votes as usual; the more voters, the closer it comes to M. Nothing passes below C votes in favour.',
|
||
|
||
'history.title': 'Corrections',
|
||
'history.initial': 'initial text',
|
||
'history.typo': 'typo fixed',
|
||
'history.substantive': 'substantive change (votes to reconfirm)',
|
||
'history.amendment': 'starting text replaced',
|
||
'history.revert': 'fix taken back by the author',
|
||
'history.by': 'by {name}',
|
||
'history.typo.validated': 'validated by {name}',
|
||
'history.typo.deadline': 'applied with no answer within 3 days',
|
||
|
||
'typo.title': 'Fix a typo',
|
||
'typo.note': "Accents, capitals, typos, words run together or split: the fix is not voted on. On your own text, it applies at once. On someone else's, its author validates it (an administrator for a seed text); with no answer within 3 days, it applies. Punctuation, figures, formulas, addresses and any change in meaning go through a proposal.",
|
||
'typo.save': 'Save the fix',
|
||
'typo.done': 'Typo fixed, votes untouched.',
|
||
'typo.substantive': 'This edit affects the meaning: propose it as a change.',
|
||
'typo.asProposal': 'Make it a proposal',
|
||
'typo.pending.author': 'Your fix waits for the author of the text: it applies when they validate it, or by itself on {date}.',
|
||
'typo.pending.admin': 'Your fix waits for an administrator, as this text comes from the seed: it applies when they validate it, or by itself on {date}.',
|
||
'typo.list': 'Suggested typo fixes',
|
||
'typo.by': 'suggested by {name}',
|
||
'typo.status.pending': 'waiting: applies by itself on {date}',
|
||
'typo.status.applied': 'applied',
|
||
'typo.status.refused': 'refused',
|
||
'typo.status.stale': 'out of date: the text changed meanwhile',
|
||
'typo.settled.by': 'by {name}',
|
||
'typo.settled.deadline': 'with no answer within 3 days',
|
||
'typo.validate': 'Validate',
|
||
'typo.refuse': 'Refuse',
|
||
'typo.undo': 'Go back to the text before',
|
||
'typo.redo': 'Apply after all',
|
||
'typo.validated': 'Fix applied.',
|
||
'typo.refused': 'Fix refused.',
|
||
|
||
'objection.title': 'Objections',
|
||
'objection.none': 'No objection.',
|
||
'objection.add': 'Raise an objection',
|
||
'objection.kind': 'Your objection',
|
||
'objection.kind.redit': 'Repeats',
|
||
'objection.kind.contredit': 'Contradicts',
|
||
'objection.kind.redit.hint': 'this text repeats another article',
|
||
'objection.kind.contredit.hint': 'this text says the opposite of another article',
|
||
'objection.target': 'Which article?',
|
||
'objection.reason.redit': 'How these two texts say the same thing',
|
||
'objection.reason.contredit': 'How these two texts contradict each other',
|
||
'objection.send': 'Send the objection',
|
||
'objection.sent': 'Objection saved: until it is lifted, nobody can vote for the later of the two versions any more.',
|
||
'objection.note': 'An objection holds back the later of the two versions until it is lifted — never a text in force: nobody can vote for it any more, anyone can vote against it or take their vote back. Its author answers: for a repetition, they change the article it repeats; for a contradiction, they reword. You then lift the objection or reiterate it; with no answer from you within 3 days, it is lifted.',
|
||
'objection.says.redit': '“{held}” repeats “{other}”',
|
||
'objection.says.contredit': '“{held}” contradicts “{other}”',
|
||
'objection.by': 'objection by {name}',
|
||
'objection.held.here': 'nobody can vote for this version any more',
|
||
'objection.phase.author': "waiting for the author's answer",
|
||
'objection.phase.objector': 'answer received: lifted or reiterated by {date}, otherwise lifted by itself',
|
||
'objection.answer.revision': 'answer: the held text was reworded',
|
||
'objection.answer.other': 'answer: the other text changed',
|
||
'objection.answer.proposal': 'answer: a linked proposal',
|
||
'objection.lifted.objector': 'lifted by the person who raised it',
|
||
'objection.lifted.admin': 'lifted by an administrator',
|
||
'objection.lifted.deadline': 'lifted: 3 days without follow-up',
|
||
'objection.lifted.withdrawn': 'lifted: the proposal was withdrawn',
|
||
'objection.lifted.revision': 'lapsed: the text changed',
|
||
'objection.lift': 'Lift the objection',
|
||
'objection.lift.admin': 'Lift the objection (administrator)',
|
||
'objection.reiterate': 'Reiterate the objection',
|
||
'objection.done.lifted': 'Objection lifted.',
|
||
'objection.done.reiterated': 'Objection reiterated: a new answer is awaited.',
|
||
'objection.respond.redit': 'Change the article it repeats',
|
||
'objection.respond.contredit': 'Reword',
|
||
'objection.linked': 'This proposal answers an objection: once submitted, the person who raised it lifts it or reiterates it.',
|
||
'messages.title': 'Messages',
|
||
'messages.intro': 'What waits for a gesture from you: an objection to answer, a typo fix to validate. Each message carries its deadline; a message dealt with asks nothing more.',
|
||
'messages.none': 'No messages for now.',
|
||
'messages.readAll': 'Mark all as read',
|
||
'messages.read': 'Mark as read',
|
||
'messages.unread': 'unread',
|
||
'messages.due': 'deadline: {date}',
|
||
'messages.open': 'See it in the text',
|
||
'messages.topic.objection': 'Objection',
|
||
'messages.topic.typo': 'Typo',
|
||
'messages.objection_raised.redit': '{name} raises an objection: your version “{held}” repeats “{other}”. Until it is lifted, nobody can vote for it any more. To answer, change the article it repeats.',
|
||
'messages.objection_raised.contredit': '{name} raises an objection: your version “{held}” contradicts “{other}”. Until it is lifted, nobody can vote for it any more. To answer, reword it.',
|
||
'messages.objection_reiterated': '{name} reiterates their objection: nobody can vote for “{held}” yet. Answer again.',
|
||
'messages.objection_answered': 'Your objection on “{held}” has been answered. Lift it if the answer suits you, or reiterate it. With no answer from you, it is lifted.',
|
||
'messages.typo_pending.author': '{name} suggests a typo fix in your version “{title}”.',
|
||
'messages.typo_pending.admin': '{name} suggests a typo fix in “{title}”, a seed text: an administrator validates it.',
|
||
'messages.respond': 'Answer',
|
||
'messages.outcome.answered': 'answered',
|
||
'messages.outcome.reiterated': 'objection reiterated',
|
||
'messages.outcome.lifted': 'objection lifted',
|
||
'messages.outcome.admin': 'objection lifted by an administrator',
|
||
'messages.outcome.deadline.objection': 'objection lifted: 3 days without follow-up',
|
||
'messages.outcome.deadline.typo': 'fix applied: 3 days without an answer',
|
||
'messages.outcome.withdrawn': 'proposal withdrawn',
|
||
'messages.outcome.applied': 'fix applied',
|
||
'messages.outcome.refused': 'fix refused',
|
||
'messages.outcome.stale': 'fix out of date: the text changed',
|
||
'messages.outcome.done': 'dealt with',
|
||
|
||
'propose.mode.replace': 'Change this text',
|
||
'propose.mode.remove': 'Remove this article',
|
||
'propose.mode.new': 'New article',
|
||
'propose.section': 'In the section',
|
||
'propose.section.note': 'The new article goes at the end of the section; its order is voted apart, at the end of the section.',
|
||
'propose.title': 'Title',
|
||
'propose.body': 'Text',
|
||
'propose.remove.note': 'A removal proposal is voted on like any other; if it passes, the article leaves the text in force.',
|
||
'propose.draft': 'Save draft',
|
||
'propose.submit': 'Submit to vote',
|
||
'propose.drafted': 'Draft saved.',
|
||
'propose.submitted': 'Proposal submitted to vote.',
|
||
'propose.rule': "While it's a draft, you edit it freely. Once it's submitted, a typo can be fixed without touching the votes; a substantive change asks voters to reconfirm.",
|
||
'propose.edit': 'Edit',
|
||
'propose.withdraw': 'Withdraw my proposal',
|
||
'propose.withdrawn': 'Proposal withdrawn.',
|
||
'propose.saved.typo': 'Fix saved, the votes stand.',
|
||
'propose.saved.substantive': 'New version saved: voters will have to reconfirm.',
|
||
|
||
'assist.title': 'Assistant',
|
||
'assist.quiet': 'Nothing to report: one proposal, one decision.',
|
||
'assist.split': 'This text seems to carry {n} decisions. One proposal = one decision: split it?',
|
||
'assist.split.do': 'Split into {n} drafts',
|
||
'assist.split.done': 'Split into {n} drafts.',
|
||
'assist.similar': 'Close to “{title}”{where}.',
|
||
'assist.similar.inForce': ' (in force)',
|
||
'assist.similar.variant': 'Make it a variant of this article',
|
||
'assist.long': 'Long text ({n} characters): a short article is easier to vote on.',
|
||
|
||
'translate.title': 'Translate ({lang})',
|
||
'translate.save': 'Save translation',
|
||
'translate.saved': 'Translation saved.',
|
||
'translate.note': 'Translations are not voted on. They switch to “needs review” when the French text changes in substance.',
|
||
|
||
'feedback.title': 'Give feedback',
|
||
'feedback.prompt': 'What you did, what you expected, what happened.',
|
||
'feedback.send': 'Send feedback',
|
||
'feedback.sent': 'Feedback sent. Thank you.',
|
||
'feedback.context': 'The page address, language and screen size are attached.',
|
||
|
||
'access.title': 'trustinWallet — access',
|
||
'access.intro': 'Who opens which group. Monnaie libre opens by itself to members of the Ğ1 web of trust; other groups open one by one.',
|
||
'access.groups': 'Groups',
|
||
'access.members.none': 'No members granted access.',
|
||
'access.members.wot': '+ all members of the Ğ1 web of trust',
|
||
'access.grant': 'Grant',
|
||
'access.revoke': 'Remove',
|
||
'access.choose': 'Choose an identity',
|
||
'access.invitations': 'Invitations',
|
||
'access.invite.label': "Who it's for",
|
||
'access.invite.groups': 'Groups opened by the link',
|
||
'access.invite.admin': 'access administrator',
|
||
'access.invite.create': 'Create invitation link',
|
||
'access.invite.link': "Invitation link, single use, valid for 14 days. It won't be shown again: copy it now.",
|
||
'access.invite.copy': 'Copy link',
|
||
'access.invite.copied': 'Link copied.',
|
||
'access.invite.cancel': 'Cancel',
|
||
'access.invite.pending': 'Pending',
|
||
'access.team': 'Team links',
|
||
'access.team.intro': 'A link to share with a team, until a date. Each person who opens it gives their name and receives their own identity, never the administrator role. Revoking closes the link; people who already came keep their access, to be removed one by one.',
|
||
'access.team.label': 'For which team',
|
||
'access.team.days': 'Valid for how many days',
|
||
'access.team.uses': 'How many people at most',
|
||
'access.team.create': 'Create the team link',
|
||
'access.team.link': 'Team link, to share: it works until its date or its last place. It will not be shown again: copy it now.',
|
||
'access.team.state': '{uses} / {max} people · until {date}',
|
||
'access.team.revoke': 'Revoke',
|
||
'access.team.via': 'came through “{label}”',
|
||
'access.identities': 'Identities',
|
||
'access.admin': 'administrator',
|
||
'access.admin.give': 'Make administrator',
|
||
'access.admin.take': 'Remove role',
|
||
'access.relink': 'New sign-in link',
|
||
'access.relink.link': 'Sign-in link for {name}, single use, valid for 14 days — to open their session on another device. It will not be shown again: copy it now.',
|
||
'access.sessions.close': 'Close their sessions ({n})',
|
||
'access.sessions.closeMine': 'Close my other sessions ({n})',
|
||
'access.sessions.closed.one': '{n} session closed.',
|
||
'access.sessions.closed.other': '{n} sessions closed.',
|
||
'access.sessions.links.one': 'The sign-in link still waiting is cancelled.',
|
||
'access.sessions.links.other': 'The {n} sign-in links still waiting are cancelled.',
|
||
'access.kind.g1': 'Ğ1',
|
||
'access.kind.invite': 'invitation',
|
||
'access.kind.dev': 'dev',
|
||
'access.member': 'web of trust member',
|
||
'access.feedback': 'Feedback',
|
||
'access.feedback.none': 'No feedback.',
|
||
'access.feedback.seen': 'Seen',
|
||
'access.feedback.done': 'Handled',
|
||
'access.publication': "Publishing the texts",
|
||
'access.publication.remote': "Repository: {remote}",
|
||
'access.publication.key': "The server's deploy key. Add it with write access on this repository (Settings › Repository › Deploy keys): until then, publications wait.",
|
||
'access.publication.none': "Publishing is not configured on this server.",
|
||
'access.publication.pending.one': '{n} sending waiting',
|
||
'access.publication.pending.other': '{n} sendings waiting',
|
||
'access.publication.last': 'Last publication: {date} (commit {commit})',
|
||
'access.publication.never': 'Nothing has been published to this repository yet.',
|
||
'access.publication.error': 'Last failure: {error}',
|
||
'access.publication.now': 'Publish now',
|
||
'access.publication.queued': 'Publication started again.',
|
||
'access.denied': 'Access management is for trustinWallet administrators only.',
|
||
|
||
|
||
'error.unauthenticated': 'Sign in to continue.',
|
||
'error.forbidden': "You don't have access to this page.",
|
||
'error.not_found': "This page doesn't exist, or isn't visible to you.",
|
||
'error.network': "The server isn't responding. Check your connection and try again.",
|
||
'error.internal': 'Something failed on our side. Try again in a moment.',
|
||
'error.title': 'The title is empty or too long (120 characters max).',
|
||
'error.body': 'The text is empty or too long (4,000 characters max).',
|
||
'error.reason': 'Say in a few words what your objection rests on (10 to 600 characters).',
|
||
'error.substantive_not_author': "This edit affects the meaning: only the proposal's author can make it. Propose your own version.",
|
||
'error.substantive_in_force': 'This edit affects the meaning: propose it as a change.',
|
||
'error.same_unit': "These two texts target the same article: they can't be in force together anyway.",
|
||
'error.last_admin': 'At least one administrator must remain.',
|
||
'error.g1_not_configured': "Ğ1 sign-in isn't active yet.",
|
||
'error.invitation_invalid': 'This invitation link is no longer valid.',
|
||
'error.identity_kind': 'A new link can only be for an invited person, never a Ğ1 identity.',
|
||
'error.hidden_characters': 'The text contains invisible characters (writing-direction override, zero-width space, soft hyphen, emoji colour selector…): remove them.',
|
||
'error.changed': 'The text has changed in the meantime: reload it, then try again.',
|
||
'error.label': 'The name is empty or too long (60 characters at most).',
|
||
'error.name': 'Your name has 2 to 60 characters, on one line: letters, figures, spaces, hyphen, apostrophe or dot.',
|
||
'error.name_taken': 'This name is already taken. Choose another one, adding an initial for instance.',
|
||
'error.team_limits': 'A team link lasts 1 to 90 days, for 1 to 500 people.',
|
||
'error.groups': 'Choose at least one group.',
|
||
'error.publication_off': 'Publication is not configured on this server.',
|
||
'error.chain_vote_off': 'Voting through the Ğ1 chain is not open yet.',
|
||
'error.chain_only': 'Here, the vote goes through the Ğ1 chain, with your wallet.',
|
||
'error.server_vote': 'Here, voting is direct, without a wallet.',
|
||
'error.too_many_ballots': 'You already have many ballots waiting, or left on the way within the hour: wait for them to be confirmed, or try again a little later.',
|
||
'error.lines': 'This vote no longer holds: reload the page, then start again.',
|
||
'error.choice': 'This choice does not exist.',
|
||
'error.author': 'This account is not a Ğ1 address.',
|
||
'error.not_votable': 'This version is no longer open for voting.',
|
||
'error.members_only': 'Only members of this group vote here.',
|
||
'error.module': 'A module is proposed in its own place: the title at the head of the document, the order at the end of its section.',
|
||
'error.order': 'This order must hold every article of the section, once each: reload the page, then try again.',
|
||
'error.same_order': 'This is already the order in force.',
|
||
'error.order_fixed': 'An order is not corrected: propose another order.',
|
||
'error.not_an_order': 'This module is not the order of a section.',
|
||
'error.not_a_title': 'This module is not the title of the document.',
|
||
'error.same_title': 'This is already the title in force.',
|
||
'error.section': 'This section does not exist in this document.',
|
||
'error.objection': 'An objection is holding this version back: until it is lifted, you can vote against it or take your vote back, not vote for it.',
|
||
'error.kind': 'Say whether this text repeats the other or contradicts it.',
|
||
'error.other': 'Choose another article, in force or proposed.',
|
||
'error.both_in_force': 'Both texts are in force: an objection always targets a version that is not in force yet.',
|
||
'error.objection_exists': 'You already have an objection standing on these two texts.',
|
||
'error.nothing_to_reiterate': 'Nothing to reiterate: no answer has come yet.',
|
||
'error.lifted': 'This objection is already lifted.',
|
||
'error.settled': 'This fix is already decided.',
|
||
'error.link': 'This proposal cannot answer this objection: it targets another article, or the objection is lifted.',
|
||
'error.retry': 'Try again',
|
||
|
||
'common.cancel': 'Cancel',
|
||
'common.close': 'Close',
|
||
'common.save': 'Save',
|
||
'common.loading': 'Loading…',
|
||
'common.back': 'Back',
|
||
};
|