v3 : inertie à cinq crans — interface (L10)

L'inertie se lit en crans, « 3 / 5 · moyenne » (très basse, basse,
moyenne, haute, très haute ; fr, en, es). Le sélecteur offre les cinq
crans, l'actuel marqué ; le changement se vote au cran de l'article.
L'article dit le passé de son inertie (vote ou réglage de départ).

« Réglages de la formule », en lecture seule, depuis l'en-tête du doc et
depuis le vote d'un article (onglet « Réglages » du panneau, dans
l'URL) : W et sa source, C, B, la participation habituelle (médiane ou
référence, sur combien de propositions, quand), et les cinq crans : M,
G, part exigée, voix pour exigées à la participation de la version
regardée (ou habituelle depuis l'en-tête).

Composants à part (InertiaPicker, FormulaSettings), branchés par
quelques lignes dans VoteView. La formule dépliée ne fait plus déborder
le panneau. e2e : C4 (cran de l'article dans la formule), C20 (réglages
et cinq crans), M1 (réglages lisibles sur mobile).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-10-30 16:42:11 +01:00
co-authored by Claude Opus 5.5
parent d762301706
commit db64405e1e
17 changed files with 671 additions and 109 deletions
+36 -10
View File
@@ -134,7 +134,7 @@ export const en: Messages = {
'deep.rival': 'would replace “{title}”',
'deep.addition': 'new article',
'deep.removal': 'removal of “{title}”',
'deep.inertia': 'inertia: {level}',
'deep.inertia': 'inertia to {level}',
'deep.blocked': 'blocked',
'deep.mine': 'your proposal',
'deep.stale': 'needs reconfirming',
@@ -163,19 +163,19 @@ export const en: Messages = {
'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}',
'inertia.low': 'low inertia',
'inertia.standard': 'standard inertia',
'inertia.high': 'high inertia',
'inertia.max': 'maximum inertia',
'inertia.level.low': 'low',
'inertia.level.standard': 'standard',
'inertia.level.high': 'high',
'inertia.level.max': 'maximum',
'panel.vote': 'Voting',
'panel.proposals': 'Proposals',
'panel.propose': 'Propose',
'panel.settings': 'Settings',
'panel.close': 'Close panel',
'panel.inforce': 'In force',
'panel.proposal': 'Proposal',
@@ -205,9 +205,12 @@ export const en: Messages = {
'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': 'An inertia change is itself voted on with the next inertia up: {level}.',
'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:',
@@ -221,6 +224,29 @@ export const en: Messages = {
'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': 'Kept between {lo} and {hi} of the electorate.',
'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 share of votes in favour beyond C when {n} person votes, as usual.',
'settings.share.note.other': 'Share asked: the share of votes in favour beyond C when {n} people vote, as usual.',
'settings.required.version.one': 'Votes for: those asked at the turnout of this version, {n} voter.',
'settings.required.version.other': 'Votes for: those asked at the turnout of this version, {n} voters.',
'settings.required.usual.one': 'Votes for: those asked at the usual turnout, {n} voter.',
'settings.required.usual.other': 'Votes for: those asked at the usual turnout, {n} voters.',
'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',