Lot U3 : l'interface de l'Acte d'engagement (Yvv, 03/11) — avant le texte, hors vote, « Info ouverture doc de réf. » (OpeningInfo, lib/opening.ts) : le paragraphe d'Yvv mot pour mot à la place de doc.empty.seeds (sa première phrase tant qu'aucun article n'est en vigueur, puis « entrent en vigueur » où « y » n'avait plus rien à reprendre), le cran d'ouverture des Propositions d'amorce, du titre, de l'ordre de chaque section et des autres articles (avant tout changement voté) et le quorum de chaque cran, lus dans l'API ; une séparation (un filet de la couleur de la clé de voûte, jamais une bordure) ; plus les titres « Introduction » et « Engagements fondamentaux » dans le texte. Les informations de F1, F1.1, F1.2, N1, N1.1 et O1 là où elles servent : vote.permanent, vote.rival, vote.others.rule, formula.Tprime, formula.round, formula.B.wot, formula.G, settings.share.note, settings.usual.quorum, settings.gradient, order.edit.effect ; les termes définis de T3c (« à la participation habituelle », « quorum de l'article », « part exigée », « repose sur moins de N propositions votées depuis un an »), plus de « comme d'habitude ». « Proposition d'amorce » (Starter proposal, Propuesta de arranque). Le mot d'Yvv pour qui n'est pas invité, à l'accueil sans session (à la place du bouton Ğ1 tant que la connexion Ğ1 n'est pas active) et sur « Se connecter » (signin.g1.pending sans redite). Réordonner : la ligne sous le pointeur lue dans la mise en page (offsetTop), pas là où animate:flip la montre — une poignée tirée sur plusieurs lignes ne revient plus en arrière ; le pointeur capturé par la liste. API : seedFeatured sur chaque version (seul changement sous crates/). C1, C3, C20, C27, C35, C38 suivent les mots

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-11-03 22:28:41 +01:00
co-authored by Claude Opus 5.5
parent 9d478d668a
commit 8528a269fc
20 changed files with 434 additions and 88 deletions
+41 -18
View File
@@ -42,8 +42,9 @@ export const es: Messages = {
'signin.g1': 'Iniciar sesión con Ğ1',
'signin.g1.how': 'Se te redirige a connect.monnaie-libre.fr, el servicio de conexión del foro Monnaie libre. Allí apruebas la conexión en Ğecko (enlace o código QR) y luego vuelves aquí. No se nos transmite ninguna contraseña ni ninguna clave.',
'signin.g1.members': 'Reservado a los miembros de la red de confianza Ğ1.',
'signin.g1.pending': 'La conexión Ğ1 llega pronto: el registro de libreDecision en connect.monnaie-libre.fr está en curso. Mientras tanto, se entra con un enlace de invitación.',
'signin.g1.pending': 'La conexión Ğ1 llega pronto: el registro de libreDecision en connect.monnaie-libre.fr está en curso.',
'signin.invite': '¿Has recibido un enlace de invitación? Ábrelo sin más: te conecta.',
'signin.uninvited': 'Para entrar en un grupo de decisiones, por ahora hay que pedir un enlace de invitación a Chiara o a Yvv. Este prototipo aún no está conectado a la cadena.',
'signin.dev': 'Conexión de desarrollo',
'signin.dev.name': 'Nombre',
'signin.dev.admin': 'administrador de accesos',
@@ -103,8 +104,8 @@ export const es: Messages = {
'docs.inForce.other': '{n} artículos en vigor',
'docs.open.one': '{n} propuesta en curso',
'docs.open.other': '{n} propuestas en curso',
'docs.seeds.one': '{n} propuesta semilla',
'docs.seeds.other': '{n} propuestas semilla',
'docs.seeds.one': '{n} propuesta de arranque',
'docs.seeds.other': '{n} propuestas de arranque',
'doc.view.label': 'Leer',
'doc.view.inforce': 'En vigor',
@@ -125,7 +126,7 @@ export const es: Messages = {
'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.seedProposal': 'Propuesta seed',
'doc.seedProposal': 'Propuesta de arranque',
'doc.seedProposal.long': 'Texto de partida destacado para lanzar la votación. No está en vigor: entra en vigor por la votación, como toda propuesta.',
'doc.confirmed': 'confirmado por la votación',
'doc.adopted': 'adoptado el {date}',
@@ -134,7 +135,21 @@ export const es: Messages = {
'doc.basket': 'Votar en bloque',
'doc.basket.count': 'Votar en bloque · {n}',
'doc.empty': 'Ningún artículo está en vigor. Las propuestas de abajo suben en cuanto alcanzan su umbral.',
'doc.empty.seeds': 'Ningún artículo está aún en vigor. Empieza por las propuestas semilla: entran en vigor por el voto, como cualquier propuesta.',
'opening.title': 'Info de apertura, doc. de referencia',
'opening.none': 'Ningún artículo está aún en vigor.',
'opening.amorce': 'Las propuestas de arranque entran en vigor por el voto, como las propuestas que siguen, con menos inercia para que el documento cobre vida más fácilmente. Se recomienda aumentar después la inercia, por el voto, para reducir la frecuencia de los cambios.',
'opening.amorce.after': 'Las propuestas de arranque entran en vigor por el voto, como las propuestas que siguen, con menos inercia para que el documento cobre vida más fácilmente. Se recomienda aumentar después la inercia, por el voto, para reducir la frecuencia de los cambios.',
'opening.inertia': 'Inercia en la apertura',
'opening.inertia.amorce': 'Propuestas de arranque',
'opening.inertia.title': 'Título del documento',
'opening.inertia.orders': 'Orden de cada sección',
'opening.inertia.others': 'Demás artículos',
'opening.quorum': 'Quórum',
'opening.quorum.levels': '{list} votantes, del nivel 1 al nivel 5.',
'opening.quorum.same.one': '{n} votante en cada nivel.',
'opening.quorum.same.other': '{n} votantes en cada nivel.',
'opening.quorum.rule': 'Por debajo del quórum de un artículo, los votantes que faltan cuentan como «no».',
'opening.quorum.author': 'El autor de la primera versión de un artículo, un administrador para los textos de partida, puede fijar otro mientras el artículo no guarde rastro de ningún voto.',
'doc.others.one': '{n} otra versión en curso',
'doc.others.other': '{n} otras versiones en curso',
'doc.published': 'Publicado en el repositorio de textos',
@@ -202,6 +217,7 @@ export const es: Messages = {
'order.proposed.one': '{n} orden propuesto',
'order.proposed.other': '{n} órdenes propuestos',
'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.edit.effect': 'Si entra en vigor, solo los artículos de esta sección cambian de lugar; ningún texto cambia.',
'order.submitted': 'Orden sometido a votación.',
'title.propose': 'Proponer otro título',
'title.propose.label': 'Nuevo título',
@@ -246,6 +262,7 @@ export const es: Messages = {
'vote.simulated.mark': 'voto simulado',
'vote.others': 'Otras versiones',
'vote.others.count': 'Otras versiones ({n})',
'vote.others.rule': 'Si varias versiones alcanzan su umbral, entra en vigor la que tiene el margen más amplio.',
'vote.need': '{yes} sí para aprobar · {no} no para bloquear',
'vote.need.quorum': '{yes} sí para aprobar · el quórum la bloquea',
'vote.need.first.one': '{yes} sí de {quorum} votante para aprobar',
@@ -259,6 +276,8 @@ export const es: Messages = {
'vote.stale': 'El texto ha cambiado de fondo desde tu voto: tu voto deja de contar hasta que lo reconfirmes.',
'vote.reconfirm': 'Reconfirmar: {choice}',
'vote.private': 'Tu voto no se muestra a nadie: solo se ven los totales.',
'vote.permanent': 'La votación sigue abierta, sin plazo: puedes cambiar o retirar tu voto en cualquier momento; el último es el que cuenta.',
'vote.rival': 'Ya hay un texto en vigor: para sustituirlo, esta versión necesita además un margen (votos a favor menos votos exigidos) más amplio que el de ese texto. El texto sustituido vuelve a ser una propuesta, con sus votos: puede volver.',
'vote.held': 'Una objeción retiene esta versión: hasta que se levante, nadie puede votar a favor. Puedes votar en contra o retirar tu voto; al levantarse, solo entra en vigor con los votos que sigan ahí.',
'vote.held.redit': 'Repite «{other}».',
'vote.held.contredit': 'Contradice «{other}».',
@@ -299,7 +318,7 @@ export const es: Messages = {
'quorum.heading.other': 'Quórum · {n} votantes',
'quorum.default.one': 'Por defecto, el de su nivel: {n} votante.',
'quorum.default.other': 'Por defecto, el de su nivel: {n} votantes.',
'quorum.explain': 'Fijas el quórum de este artículo mientras nadie haya votado. Por debajo, los votantes que faltan cuentan como «no».',
'quorum.explain': 'Fijas el quórum de este artículo mientras no guarde rastro de ningún voto. Por debajo, los votantes que faltan cuentan como «no».',
'quorum.field': 'Quórum del artículo',
'quorum.set': 'Fijar este quórum',
'quorum.reset': 'Volver al valor por defecto ({n})',
@@ -404,7 +423,7 @@ export const es: Messages = {
'ballots.verify.unreadable': 'No es un recibo de voto legible.',
'inertia.title': 'Inercia',
'inertia.explain': 'Cuanto más alta es la inercia, más votos hacen falta para cambiar este texto. Por debajo del quórum, los votantes que faltan cuentan como «no»; más allá, la proporción de «sí» pedida baja cuando sube la participación.',
'inertia.explain': 'Cuanto más alta es la inercia, más votos hacen falta para cambiar este texto. Por debajo del quórum del artículo, los votantes que faltan cuentan como «no»; más allá, la proporción exigida baja cuando sube la participación.',
'inertia.change': 'Proponer un cambio de inercia',
'inertia.change.to': 'Nueva inercia',
'inertia.change.note': 'Un cambio de inercia se vota a su vez con la inercia del artículo: {level}.',
@@ -420,38 +439,42 @@ export const es: Messages = {
'formula.W.wot': 'miembros de la red de confianza Ğ1',
'formula.W.group': 'miembros del grupo',
'formula.T': 'T — votos emitidos: {n}',
'formula.Tprime': 'T′ — votantes contados: {n}, T o Q si faltan',
'formula.M': 'M — mayoría con participación plena: {n} %',
'formula.G': 'G — gradiente: {n}',
'formula.G': 'G — gradiente: {n}, deducido de la participación habitual del grupo',
'formula.B': 'B — base: {n}',
'formula.B.wot': 'Elevada a la potencia W, B es tan pequeña que no cuenta en la red de confianza.',
'formula.Q': 'Q — quórum: {n}',
'formula.R': 'R — umbral actual: {n} votos a favor',
'formula.reading': 'Por debajo del quórum Q, los votantes que faltan cuentan como «no». Más allá, la proporción de votos a favor pedida, la más alta en el quórum, baja cuando sube la participación; cuando vota todo el mundo, basta la mayoría M.',
'formula.round': 'Una versión alcanza su umbral cuando sus votos a favor alcanzan R, redondeado al entero superior.',
'formula.reading': 'Por debajo del quórum Q del artículo, los votantes que faltan cuentan como «no»: hacen falta tantos votos a favor como si hubieran votado Q personas. Más allá, la proporción de votos a favor pedida, la más alta en el quórum, baja cuando sube la participación; cuando vota todo el mundo, basta la mayoría M.',
'common.pct': '{n} %',
'settings.title': 'Ajustes de la fórmula',
'settings.intro': 'Para cambiar un texto, el grupo pide un número de votos a favor que depende de su electorado, de su participación habitual y de la inercia del artículo.',
'settings.usual': 'Participación habitual',
'settings.usual.median.one': '{n} votante de {electorate} ({pct}): la mediana de las {sample} propuestas votadas en el último año.',
'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 {q}, el quórum de referencia: 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 {q}, el quórum de referencia: la participación de referencia, hasta que el grupo haya votado {min} propuestas ({sample} por ahora).',
'settings.usual.reference.one': '{n} votante de {electorate} ({pct}), dos veces {q}, el quórum de referencia: la participación de referencia, mientras se base en menos de {min} propuestas votadas en el último año ({sample} por ahora).',
'settings.usual.reference.other': '{n} votantes de {electorate} ({pct}), dos veces {q}, el quórum de referencia: la participación de referencia, mientras se base en menos de {min} propuestas votadas en el último año ({sample} por ahora).',
'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.usual.quorum': 'No depende del quórum de un artículo.',
'settings.levels': 'Los cinco niveles',
'settings.col.level': 'Nivel',
'settings.col.share': 'Proporción exigida',
'settings.col.quorum': 'Quórum',
'settings.col.required': 'Votos a favor',
'settings.current': 'este artículo',
'settings.share.note.one': 'Proporción exigida: la parte de votos a favor pedida, con {n} votante como de costumbre.',
'settings.share.note.other': 'Proporción exigida: la parte de votos a favor pedida, con {n} votantes como de costumbre.',
'settings.share.note': 'Proporción exigida: la que pide el nivel más allá del quórum del artículo, con la participación habitual.',
'settings.quorum.note': 'Quórum: por debajo, los votantes que faltan cuentan como «no». Es el del nivel; el autor de un artículo puede fijar otro antes del primer voto.',
'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 cuando vota como de costumbre; más allá del quórum, cuantos más votantes, más se acerca a M. Por debajo del quórum del nivel, los votantes que faltan cuentan como «no».',
'settings.required.version.one': 'Votos a favor: con {n} votante, la participación de esta versión, o con el quórum si es más alto.',
'settings.required.version.other': 'Votos a favor: con {n} votantes, la participación de esta versión, o con el quórum si es más alto.',
'settings.required.usual.one': 'Votos a favor: con {n} votante, la participación habitual redondeada, o con el quórum si es más alto.',
'settings.required.usual.other': 'Votos a favor: con {n} votantes, la participación habitual redondeada, o con el quórum si es más alto.',
'settings.reading': 'Más allá del quórum del artículo, cuantos más votantes, más baja la proporción exigida, hasta la mayoría M cuando vota todo el mundo. Por debajo del quórum del artículo, los votantes que faltan cuentan como «no», y hacen falta tantos votos a favor como si hubiera votado ese quórum.',
'settings.gradient': 'G se calcula para que la proporción exigida, más allá del quórum del artículo, sea exactamente la del nivel con la participación habitual.',
'history.title': 'Correcciones',
'history.initial': 'texto inicial',