v3 : modules d'ordre et de titre — l'interface, restes mineurs (L11, C25–C27)

Chaque section du lecteur finit par l'ordre de ses articles (inertie 2) : ses
articles numérotés, son vote déplié, « Proposer un autre ordre » — une liste où
l'on clique un article puis sa place, ses flèches, ou le clavier. Le titre du
document (inertie 4) se vote et se propose sous le titre, « traduction à
revoir » quand il a changé. Les deux sont dans la liste des propositions, le
panier et la chaîne Ğ1 ; un nouvel article se propose dans une section, à sa fin.
La liste du groupe compte les propositions ouvertes des modules.

Restes mineurs : la participation ramenée se dit en deux temps (la mesure, puis
ce que le groupe demande), les lignes « habituelle » des réglages resserrées, le
sélecteur d'inertie se parcourt aux flèches (le cran actuel atteignable, jamais
choisi), la marque « seed a minima » porte le vrai nombre de votes.

Contrôles : C25 (ordre, dont la chaîne et le téléphone), C26 (titre), C27
(participation ramenée) ; C3, C17 (41 modules), C20 mis à jour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-10-31 05:35:02 +01:00
co-authored by Claude Opus 5.5
parent 3831ddb1bf
commit 785580c78f
31 changed files with 1480 additions and 136 deletions
+51 -11
View File
@@ -116,7 +116,9 @@ export const en: Messages = {
'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: 0 votes so far.',
'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',
@@ -158,6 +160,34 @@ export const en: Messages = {
'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',
@@ -202,6 +232,8 @@ export const en: Messages = {
'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.',
@@ -305,8 +337,8 @@ export const en: Messages = {
'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: thresholds are worked out on {n} voter ({pct}).',
'settings.usual.bounded.other': 'Kept between {lo} and {hi} of the electorate: thresholds are worked out on {n} voters ({pct}).',
'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',
@@ -314,12 +346,12 @@ export const en: Messages = {
'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.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',
@@ -352,8 +384,8 @@ export const en: Messages = {
'propose.mode.replace': 'Change this text',
'propose.mode.remove': 'Remove this article',
'propose.mode.new': 'New article',
'propose.after': 'Place after',
'propose.after.end': 'at the end',
'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.',
@@ -483,6 +515,14 @@ export const en: Messages = {
'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.retry': 'Try again',
'common.cancel': 'Cancel',
+51 -11
View File
@@ -116,7 +116,9 @@ export const es: Messages = {
'doc.lang.stale': 'traducción por revisar',
'doc.lang.missing': 'aún sin traducir',
'doc.seed': 'seed a minima',
'doc.seed.long': 'Entró en vigor sin votación, para no partir de una página en blanco. Sigue en votación: 0 votos por ahora.',
'doc.seed.long': 'Entró en vigor sin votación, para no partir de una página en blanco. Sigue en votación, como todo texto.',
'doc.seed.votes.one': 'seed a minima · {n} voto',
'doc.seed.votes.other': 'seed a minima · {n} votos',
'doc.confirmed': 'confirmado por la votación',
'doc.adopted': 'adoptado el {date}',
'doc.action.vote': 'Votación',
@@ -158,6 +160,34 @@ export const es: Messages = {
'section.formule': 'Fórmula de votación',
'section.inertie': 'Inercia',
'section.ordonnancement': 'Ordenación',
'module.title.name': 'Título del documento',
'module.order.name': 'Orden de los artículos',
'module.order.named': 'Orden de los artículos · {section}',
'module.order.count.one': '{n} artículo',
'module.order.count.other': '{n} artículos',
'module.order.inforce': 'Orden en vigor',
'module.order.proposal': 'Orden propuesto',
'module.order.added.one': '{n} artículo añadido desde entonces, al final',
'module.order.added.other': '{n} artículos añadidos desde entonces, al final',
'module.order.dropped.one': '{n} artículo salido desde entonces',
'module.order.dropped.other': '{n} artículos salidos desde entonces',
'module.order.same': 'es el orden en vigor',
'module.order.rule': 'Un artículo nuevo se coloca al final de su sección. Si llega durante la votación de un orden, se añade al final, y los votos se mantienen.',
'order.propose': 'Proponer otro orden',
'order.edit.label': 'Nuevo orden de los artículos',
'order.edit.help': 'Haz clic en un artículo y luego en su nuevo lugar, o usa sus flechas. Con el teclado: Intro para elegirlo, flechas arriba y abajo para moverlo.',
'order.edit.up': 'Subir «{title}»',
'order.edit.down': 'Bajar «{title}»',
'order.edit.chosen': '«{title}» elegido: haz clic en su nuevo lugar.',
'order.edit.moved': '«{title}» en el lugar {n} de {total}.',
'order.edit.submit': 'Proponer este orden',
'order.edit.unchanged': 'Es el orden en vigor: mueve al menos un artículo.',
'order.edit.note': 'Un orden se vota con la inercia {level}, como un artículo: desplegado, en la cesta, por la cadena Ğ1 en Monnaie libre.',
'order.submitted': 'Orden sometido a votación.',
'title.propose': 'Proponer otro título',
'title.propose.label': 'Nuevo título',
'title.propose.note': 'El título del documento se vota con la inercia {level}. Sus traducciones siguen siendo editoriales: pasarán a «por revisar».',
'title.submitted': 'Título sometido a votación.',
'tally.short': '{for} a favor · {against} en contra',
'tally.required': 'Umbral: {n} votos a favor',
@@ -202,6 +232,8 @@ export const es: Messages = {
'vote.entered': '«{title}» ha entrado en vigor.',
'vote.entered.remove': '«{title}» se ha retirado del texto en vigor.',
'vote.entered.inertia': 'La inercia de «{title}» ha cambiado.',
'vote.entered.order': 'El nuevo orden de «{section}» ha entrado en vigor.',
'vote.entered.title': 'El título «{title}» ha entrado en vigor.',
'vote.closed': 'Esta versión ya no está en votación.',
'vote.fold': 'La votación de «{title}»',
'vote.mine.none': 'No has votado esta versión.',
@@ -305,8 +337,8 @@ export const es: Messages = {
'settings.usual.median.other': '{n} votantes de {electorate} ({pct}): la mediana de las {sample} propuestas votadas en el último año.',
'settings.usual.reference.one': '{n} votante de {electorate} ({pct}), dos veces C: la participación de referencia, hasta que el grupo haya votado {min} propuestas ({sample} por ahora).',
'settings.usual.reference.other': '{n} votantes de {electorate} ({pct}), dos veces C: la participación de referencia, hasta que el grupo haya votado {min} propuestas ({sample} por ahora).',
'settings.usual.bounded.one': 'Mantenida entre el {lo} y el {hi} del electorado: los umbrales se calculan sobre {n} votante ({pct}).',
'settings.usual.bounded.other': 'Mantenida entre el {lo} y el {hi} del electorado: los umbrales se calculan sobre {n} votantes ({pct}).',
'settings.usual.bounded.one': 'Mantenida entre el {lo} y el {hi} del electorado: el grupo pide sus votos a favor como si votara {n} persona ({pct}).',
'settings.usual.bounded.other': 'Mantenida entre el {lo} y el {hi} del electorado: el grupo pide sus votos a favor como si votaran {n} personas ({pct}).',
'settings.usual.when': 'Medida una vez al día, la última el {date}.',
'settings.usual.never': 'Medida una vez al día.',
'settings.levels': 'Los cinco niveles',
@@ -314,12 +346,12 @@ export const es: Messages = {
'settings.col.share': 'Proporción exigida',
'settings.col.required': 'Votos a favor',
'settings.current': 'este artículo',
'settings.share.note.one': 'Proporción exigida: la parte de votos a favor más allá de C cuando vota {n} persona, como de costumbre.',
'settings.share.note.other': 'Proporción exigida: la parte de votos a favor más allá de C cuando votan {n} personas, como de costumbre.',
'settings.required.version.one': 'Votos a favor: los exigidos con la participación de esta versión, {n} votante.',
'settings.required.version.other': 'Votos a favor: los exigidos con la participación de esta versión, {n} votantes.',
'settings.required.usual.one': 'Votos a favor: los exigidos con la participación habitual, {n} votante.',
'settings.required.usual.other': 'Votos a favor: los exigidos con la participación habitual, {n} votantes.',
'settings.share.note.one': 'Proporción exigida: los votos a favor pedidos más allá de C, con {n} votante como de costumbre.',
'settings.share.note.other': 'Proporción exigida: los votos a favor pedidos más allá de C, con {n} votantes como de costumbre.',
'settings.required.version.one': 'Votos a favor: con {n} votante, la participación de esta versión.',
'settings.required.version.other': 'Votos a favor: con {n} votantes, la participación de esta versión.',
'settings.required.usual.one': 'Votos a favor: con {n} votante, como de costumbre.',
'settings.required.usual.other': 'Votos a favor: con {n} votantes, como de costumbre.',
'settings.reading': 'En cada nivel, el grupo pide su parte de votos a favor más allá de C cuando vota como de costumbre; cuantos más votantes, más se acerca a M. Nada pasa con menos de C votos a favor.',
'history.title': 'Correcciones',
@@ -352,8 +384,8 @@ export const es: Messages = {
'propose.mode.replace': 'Modificar este texto',
'propose.mode.remove': 'Retirar este artículo',
'propose.mode.new': 'Artículo nuevo',
'propose.after': 'Colocar después de',
'propose.after.end': 'al final',
'propose.section': 'En la sección',
'propose.section.note': 'El nuevo artículo se coloca al final de la sección; su orden se vota aparte, al final de la sección.',
'propose.title': 'Título',
'propose.body': 'Texto',
'propose.remove.note': 'La propuesta de retirada se vota como cualquier otra; si se aprueba, el artículo sale del texto en vigor.',
@@ -483,6 +515,14 @@ export const es: Messages = {
'error.author': 'Esta cuenta no es una dirección Ğ1.',
'error.not_votable': 'Esta versión ya no está en votación.',
'error.members_only': 'Aquí solo votan los miembros de este grupo.',
'error.module': 'Un módulo se propone en su sitio: el título al principio del documento, el orden al final de su sección.',
'error.order': 'Este orden debe incluir cada artículo de la sección, una sola vez: recarga la página y vuelve a intentarlo.',
'error.same_order': 'Ya es el orden en vigor.',
'error.order_fixed': 'Un orden no se corrige: propón otro orden.',
'error.not_an_order': 'Este módulo no es el orden de una sección.',
'error.not_a_title': 'Este módulo no es el título del documento.',
'error.same_title': 'Ya es el título en vigor.',
'error.section': 'Esta sección no existe en este documento.',
'error.retry': 'Reintentar',
'common.cancel': 'Cancelar',
+51 -11
View File
@@ -119,7 +119,9 @@ export const fr = {
'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 : 0 vote pour l'instant.",
'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.confirmed': 'confirmé par le vote',
'doc.adopted': 'adopté le {date}',
'doc.action.vote': 'Le vote',
@@ -161,6 +163,34 @@ export const fr = {
'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.count.one': '{n} article',
'module.order.count.other': '{n} articles',
'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.propose': 'Proposer un autre ordre',
'order.edit.label': 'Nouvel ordre des articles',
'order.edit.help': 'Clique un article, puis sa nouvelle place, ou utilise ses flèches. Au clavier : Entrée pour le choisir, flèches haut et bas pour le déplacer.',
'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.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.',
'tally.short': '{for} pour · {against} contre',
'tally.required': 'Seuil : {n} voix pour',
@@ -205,6 +235,8 @@ export const fr = {
'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.",
@@ -308,8 +340,8 @@ export const fr = {
'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 C : 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 C : 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 : les seuils se calculent sur {n} votant ({pct}).",
'settings.usual.bounded.other': "Ramenée entre {lo} et {hi} de l'électorat : les seuils se calculent sur {n} votants ({pct}).",
'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',
@@ -317,12 +349,12 @@ export const fr = {
'settings.col.share': 'Part exigée',
'settings.col.required': 'Voix pour',
'settings.current': 'cet article',
'settings.share.note.one': "Part exigée : la part de « pour » au-delà de C quand {n} personne vote, comme d'habitude.",
'settings.share.note.other': "Part exigée : la part de « pour » au-delà de C quand {n} personnes votent, comme d'habitude.",
'settings.required.version.one': 'Voix pour : celles exigées à la participation de cette version, {n} votant.',
'settings.required.version.other': 'Voix pour : celles exigées à la participation de cette version, {n} votants.',
'settings.required.usual.one': 'Voix pour : celles exigées à la participation habituelle, {n} votant.',
'settings.required.usual.other': 'Voix pour : celles exigées à la participation habituelle, {n} votants.',
'settings.share.note.one': "Part exigée : les « pour » demandés au-delà de C, à {n} votant comme d'habitude.",
'settings.share.note.other': "Part exigée : les « pour » demandés au-delà de C, à {n} votants comme d'habitude.",
'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 » au-delà de C quand il vote comme d'habitude ; plus il y a de votants, plus elle se rapproche de M. Rien ne passe sous C voix pour.",
'history.title': 'Corrections',
@@ -355,8 +387,8 @@ export const fr = {
'propose.mode.replace': 'Modifier ce texte',
'propose.mode.remove': 'Retirer cet article',
'propose.mode.new': 'Nouvel article',
'propose.after': 'Placer après',
'propose.after.end': 'à la fin',
'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.',
@@ -486,6 +518,14 @@ export const fr = {
'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.retry': 'Réessayer',
'common.cancel': 'Annuler',