🌐 Translate the copy notices of the merge dialogs

Adds the Spanish texts of the copy notices in the compare panel and
the conflict dialog, and a line that names the component a copy
follows a change through.

AI-assisted-by: claude-opus-5-5
This commit is contained in:
Álvaro Tejero Cantero 2026-10-28 17:27:17 +01:00
parent 10c603dbee
commit 5255fa1d60
No known key found for this signature in database
6 changed files with 207 additions and 9 deletions

View File

@ -455,7 +455,7 @@
(when (and conflict? (:copies-affected item))
[:> brf/copies-affected* {:n (:copies-affected item)}])
(when copies-of
[:> brf/copies-facts* {:entry copies-of :data data}])
[:> brf/copies-facts* {:entry copies-of :copies copies :data data}])
;; an entry without a before and after says what it is, where it
;; lands and what it affects instead

View File

@ -363,7 +363,7 @@
(when (:copies-affected conflict)
[:> brf/copies-affected* {:n (:copies-affected conflict)}])
(when copies-of
[:> brf/copies-facts* {:entry copies-of :data data}])
[:> brf/copies-facts* {:entry copies-of :copies copies :data data}])
;; once decided, one quiet block says what the merge leaves behind,
;; with the way back; until then, a note says how the choice works

View File

@ -306,17 +306,28 @@
[copy]
(or (seq (brc/copy-keeps copy)) (seq (brc/copy-open-slots copy))))
(defn- component-name
"The name of component `id`: its own `:copies` entry, else the open
file's components, else a short id."
[copies data id]
(or (some #(when (= id (:component-id %)) (:component-name %)) copies)
(get-in data [:components id :name])
(subs (str id) 0 8)))
(mf/defc copies-facts*
"The copies of a component the integration changes (`entry`, one of the
summary's `:copies`), folded under how many follow it: each with its
page and what it keeps of its own."
[{:keys [entry data]}]
summary's `copies`), folded under how many follow it: each with its
page and what it keeps of its own. An entry with `:via` changes only
through a copy its main holds of another changed component, which
the head line names."
[{:keys [entry copies data]}]
(let [open* (mf/use-state false)
open? (deref open*)
on-toggle (mf/use-fn #(swap! open* not))
copies (:copies entry)
n (count copies)
keeping (count (filter keeps-own? copies))]
via (:via entry)
own (:copies entry)
n (count own)
keeping (count (filter keeps-own? own))]
(when (pos? n)
[:div {:class (stl/css :section)}
[:> brl/group-head*
@ -325,9 +336,13 @@
(dm/str " - " (tr "workspace.branches.review.copies.keeping" (i18n/c keeping))))
:is-open open?
:on-toggle on-toggle}]
(when via
[:> text* {:as "p" :typography t/body-small :class (stl/css :copy-via)}
(tr "workspace.branches.review.copies.via"
(:component-name entry) (component-name copies data via))])
(when open?
[:div {:class (stl/css :copy-list)}
(for [copy copies]
(for [copy own]
[:div {:class (stl/css :copy) :key (str (:id copy))}
[:div {:class (stl/css :copy-head)}
[:> i/icon* {:icon-id i/component-copy :size "s" :class (stl/css :copy-icon)}]

View File

@ -108,3 +108,8 @@
align-items: center;
gap: var(--sp-s);
}
.copy-via {
padding-inline-start: calc(var(--sp-xs) + $sz-16);
color: var(--color-foreground-secondary);
}

View File

@ -11966,3 +11966,7 @@ msgid "workspace.branches.review.copies.affected"
msgid_plural "workspace.branches.review.copies.affected"
msgstr[0] "Choosing a side here also decides 1 copy."
msgstr[1] "Choosing a side here also decides %s copies."
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.via"
msgstr "%s follows the change through its copy of %s"

View File

@ -6535,6 +6535,180 @@ msgstr "Ramas - %s"
msgid "workspace.branches.menu.create"
msgstr "Crear rama"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.affected"
msgid_plural "workspace.branches.review.copies.affected"
msgstr[0] "Elegir un lado aquí también decide 1 copia."
msgstr[1] "Elegir un lado aquí también decide %s copias."
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.follow"
msgid_plural "workspace.branches.review.copies.follow"
msgstr[0] "1 copia seguirá este componente"
msgstr[1] "%s copias seguirán este componente"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.follows"
msgstr "Sigue al componente en: %s"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.follows-all"
msgstr "Sigue todos los cambios"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.blur"
msgstr "Desenfoque"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.clip"
msgstr "Truncar contenido"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.constraints"
msgstr "Restricciones"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.content"
msgstr "Contenido"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.exports"
msgstr "Exportaciones"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.fill"
msgstr "Relleno"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.font"
msgstr "Fuente"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.geometry"
msgstr "Tamaño y posición"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.grids"
msgstr "Guías"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.layer"
msgstr "Opacidad y modo de fusión"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.layout"
msgstr "Layout"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.layout-item"
msgstr "Elemento de layout"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.lock"
msgstr "Bloqueo"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.mask"
msgstr "Máscara"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.name"
msgstr "Nombre"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.radius"
msgstr "Radio"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.shadow"
msgstr "Sombra"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.stroke"
msgstr "Borde"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.swap"
msgstr "Componente intercambiado"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.text-display"
msgstr "Espaciado y alineación del texto"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.group.visibility"
msgstr "Visibilidad"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.keeping"
msgid_plural "workspace.branches.review.copies.keeping"
msgstr[0] "1 mantiene modificaciones"
msgstr[1] "%s mantienen modificaciones"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.keeps-branch"
msgstr "Mantiene su modificación de %s, hecha en la rama"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.keeps-main"
msgstr "Mantiene su modificación de %s, hecha en main"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.open-note"
msgstr "Tu elección solo decide %s. La regla de copias decide el resto."
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.reason.follows-component"
msgstr "sigue al componente"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.reason.override-both"
msgstr "modificado en ambos lados"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.reason.override-branch"
msgstr "modificado en la rama"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.reason.override-main"
msgstr "modificado en main"
#: src/app/main/ui/workspace/sidebar/branch_review/compare.cljs
msgid "workspace.branches.review.copies.row-follow"
msgid_plural "workspace.branches.review.copies.row-follow"
msgstr[0] "1 copia lo sigue"
msgstr[1] "%s copias lo siguen"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.settled-notice"
msgstr ""
"La regla de copias decide todos los cambios de esta copia, así que no hay "
"nada que elegir ni dejar fuera."
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.settled-row"
msgstr "Decidido por la regla de copias"
#: src/app/main/ui/workspace/sidebar/branch_review/compare.cljs
msgid "workspace.branches.review.copies.settled-tag"
msgstr "Regla de copias"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.settled-title"
msgstr "Decidido por la regla de copias"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.slots-open"
msgstr "Ambos lados modifican el %s: tu elección decide"
#: src/app/main/ui/workspace/sidebar/branch_review/common.cljs
msgid "workspace.branches.review.copies.token-slot"
msgstr "Token de %s"
#: src/app/main/ui/workspace/sidebar/branch_review/facts.cljs
msgid "workspace.branches.review.copies.via"
msgstr "%s sigue el cambio a través de su copia de %s"
#: src/app/main/ui/workspace/branch_switcher.cljs:242
msgid "workspace.branches.switcher.all"
msgstr "Todas las ramas"