Andrey Antukh 4b978767ea
🌐 Clean up en translations (#11853)
Drop 277 keys nothing references from en.po (verified against
frontend/src and common/src) and let sync propagate the
deletions to every locale. Clear all 10 fuzzy entries: fill
the 5 empty translations, keep the 4 valid ones, and drop the
duplicated max-quote-reached in favor of max-quota-reached
(the backend code stays, the UI maps it to the quota text).

Recover 22 used-but-missing keys with translations: the 19
shortcuts section/subsection labels plus connected-to,
pixel-grid-color and tokens.add-set. Make the rest
statically visible to rehash instead: :label fns on shortcut
commands, sections and subsections (one debug-only and one
colorpicker-local id exempt); case branches in place of
dm/str-built keys (export modal, text decoration and
transform, undo history with raw-key fallback); hoist
conditionals out of tr calls; pre-translate modal props and
role labels; replace the lone (i18n/tr ...) site with tr.
Turn static :error/code data into eager :error/fn calls in
the common schemas and the auth/password forms. Rename the
two keys containing spaces and point team leave at
max-quota-reached. Backend-driven keys stay dynamic by
design, declared with (tr ...) comments: the five
weak-password details, team and organization notifications.

Tooling: rehash also scans common/src and no longer treats
a missing -l as no locale; new clj-kondo tr-dynamic warning
flags non-literal tr args (lint scripts use --fail-level
error so it never fails CI); tr docstring states the
literal-only rule. Tests cover the shortcut label wiring,
the undo-history fallback and the :error/fn schemas.
Translations memory rewritten to match; es check word list
gains three entries.

Rebased onto develop: adopt the register field-error UX
(the weak-password declarations move onto the :options
code), keep develop's newer keys (connection-error,
account-locked, save-retrying, tokens-source strings) with
fresh references, and reword the shortcuts.cljs prose
comment so rehash does not invent a "literal" key.

AI-assisted-by: muse-spark-1.3-contributor
2026-09-25 11:11:44 +02:00

389 lines
13 KiB
Plaintext

msgid ""
msgstr ""
"PO-Revision-Date: 2026-09-15 17:19+0000\n"
"Last-Translator: Yessenia Villarte Vaca <yesseniavillarte@gmail.com>\n"
"Language-Team: Spanish (Latin America) "
"<https://hosted.weblate.org/projects/penpot/frontend/es_419/>\n"
"Language: es_419\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.10.dev0\n"
#: src/app/main/ui/auth/register.cljs:227, src/app/main/ui/static.cljs:191, src/app/main/ui/viewer/login.cljs:119
msgid "auth.already-have-account"
msgstr "¿Ya tienes una cuenta?"
#: src/app/main/ui/auth/recovery.cljs:83
msgid "auth.confirm-password"
msgstr "Confirmar Contraseña"
#: src/app/main/ui/auth/register.cljs:239
msgid "auth.create-demo-account"
msgstr "Crear cuenta demo"
#: src/app/main/ui/auth/login.cljs:41
msgid "auth.demo-warning"
msgstr ""
"Este es un servicio DEMO, NO LO UTILICE para trabajos reales, los proyectos "
"se borrarán periódicamente."
#: src/app/main/ui/auth/login.cljs:203, src/app/main/ui/viewer/login.cljs:105
msgid "auth.forgot-password"
msgstr "¿Has olvidado tu contraseña?"
#: src/app/main/ui/auth/register.cljs:175, src/app/main/ui/auth/register.cljs:335
msgid "auth.fullname"
msgstr "Nombre completo"
#: src/app/main/ui/auth/register.cljs:231, src/app/main/ui/static.cljs:194, src/app/main/ui/viewer/login.cljs:122
msgid "auth.login-here"
msgstr "Inicie sesión aquí"
#: src/app/main/ui/auth/login.cljs:254
msgid "auth.login-with-github-submit"
msgstr "GitHub"
#: src/app/main/ui/auth/login.cljs:260
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
#: src/app/main/ui/auth/login.cljs:248
msgid "auth.login-with-google-submit"
msgstr "Google"
#: src/app/main/ui/auth/login.cljs:213
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
#: src/app/main/ui/auth/login.cljs:266
msgid "auth.login-with-oidc-submit"
msgstr "Open ID"
#: src/app/main/ui/auth/recovery.cljs:76
msgid "auth.new-password"
msgstr "Escribe una nueva contraseña"
#: src/app/main/ui/auth/recovery.cljs:52
msgid "auth.notifications.password-changed-successfully"
msgstr "Contraseña cambiada correctamente"
#: src/app/main/ui/auth/recovery_request.cljs:50
msgid "auth.notifications.profile-not-verified"
msgstr "El perfil no está verificado, verifique el perfil antes de continuar."
#: src/app/main/ui/auth/recovery_request.cljs:33
msgid "auth.notifications.recovery-token-sent"
msgstr ""
"El enlace de recuperación de contraseña ha sido enviado a su bandeja de "
"entrada de su correo electrónico."
#: src/app/main/ui/auth/verify_token.cljs:85
msgid "auth.notifications.team-invitation-accepted"
msgstr "Se unió al equipo con éxito"
#: src/app/main/ui/auth/login.cljs:193, src/app/main/ui/auth/register.cljs:189
msgid "auth.password"
msgstr "Contraseña"
#: src/app/main/ui/auth/register.cljs:188
msgid "auth.password-length-hint"
msgstr "Al menos 8 carácteres"
#: src/app/main/ui/auth/register.cljs:272
msgid "auth.privacy-policy"
msgstr "Política de privacidad"
#: src/app/main/ui/auth/recovery_request.cljs:81
msgid "auth.recovery-request-submit"
msgstr "Recuperar contraseña"
#: src/app/main/ui/auth/recovery.cljs:95, src/app/main/ui/auth/recovery_request.cljs:94
msgid "auth.recovery-request-subtitle"
msgstr "Le enviaremos un correo electrónico con instrucciones"
#: src/app/main/ui/auth/recovery.cljs:94, src/app/main/ui/auth/recovery_request.cljs:93
msgid "auth.recovery-request-title"
msgstr "¿Has olvidado tu contraseña?"
#: src/app/main/ui/auth/recovery.cljs:86
msgid "auth.recovery-submit"
msgstr "cambia tu contraseña"
#: src/app/main/ui/auth/login.cljs:310, src/app/main/ui/static.cljs:177, src/app/main/ui/viewer/login.cljs:109
msgid "auth.register"
msgstr "¿No tienes cuenta aún?"
#: src/app/main/ui/auth/login.cljs:314, src/app/main/ui/auth/register.cljs:199, src/app/main/ui/auth/register.cljs:345, src/app/main/ui/static.cljs:181, src/app/main/ui/viewer/login.cljs:112
msgid "auth.register-submit"
msgstr "Crea una cuenta"
#: src/app/main/ui/auth/register.cljs:218
msgid "auth.register-title"
msgstr "Crea una cuenta"
#: src/app/main/ui/auth/register.cljs:264, src/app/main/ui/dashboard/sidebar.cljs:542, src/app/main/ui/workspace/main_menu.cljs:210
msgid "auth.terms-of-service"
msgstr "Términos de servicio"
#: src/app/main/ui/workspace/libraries.cljs:437, src/app/main/ui/workspace/libraries.cljs:838
msgid "common.publish"
msgstr "Publicar"
#: src/app/main/ui/viewer/share_link.cljs:304, src/app/main/ui/viewer/share_link.cljs:314
msgid "common.share-link.all-users"
msgstr "Todos los usuarios de Penpot"
#: src/app/main/ui/viewer/share_link.cljs:198
msgid "common.share-link.confirm-deletion-link-description"
msgstr ""
"¿Estás seguro de que deseas eliminar este enlace? Si lo haces ya no estará "
"disponible para nadie"
#: src/app/main/ui/viewer/share_link.cljs:259, src/app/main/ui/viewer/share_link.cljs:289
msgid "common.share-link.current-tag"
msgstr "(actual)"
#: src/app/main/ui/viewer/share_link.cljs:207, src/app/main/ui/viewer/share_link.cljs:214
msgid "common.share-link.destroy-link"
msgstr "Borrar enlace"
#: src/app/main/ui/viewer/share_link.cljs:221
msgid "common.share-link.get-link"
msgstr "Conseguir enlace"
#: src/app/main/ui/viewer/share_link.cljs:137
msgid "common.share-link.link-copied-success"
msgstr "Enlace copiado exitosamente"
#: src/app/main/ui/viewer/share_link.cljs:231
msgid "common.share-link.manage-ops"
msgstr "Administrar permisos"
#: src/app/main/ui/viewer/share_link.cljs:277
msgid "common.share-link.page-shared"
msgid_plural "common.share-link.page-shared"
msgstr[0] "1 página compartida"
msgstr[1] "%s paginas compartidas"
#: src/app/main/ui/viewer/share_link.cljs:298
msgid "common.share-link.permissions-can-comment"
msgstr "Puedes comentar"
#: src/app/main/ui/viewer/share_link.cljs:308
msgid "common.share-link.permissions-can-inspect"
msgstr "Puedes inspeccionar el código"
#: src/app/main/ui/viewer/share_link.cljs:193
msgid "common.share-link.permissions-hint"
msgstr "Cualquier persona con enlace tendrá acceso"
#: src/app/main/ui/viewer/share_link.cljs:241
msgid "common.share-link.permissions-pages"
msgstr "Páginas compartidas"
#: src/app/main/ui/viewer/share_link.cljs:183
msgid "common.share-link.placeholder"
msgstr "El enlace para compartir aparecerá aquí"
#: src/app/main/ui/viewer/share_link.cljs:303, src/app/main/ui/viewer/share_link.cljs:313
msgid "common.share-link.team-members"
msgstr "Solo miembros del equipo"
#: src/app/main/ui/viewer/share_link.cljs:171
msgid "common.share-link.title"
msgstr "Compartir prototipos"
#: src/app/main/ui/viewer/share_link.cljs:269
msgid "common.share-link.view-all"
msgstr "Seleccionar todo"
#: src/app/main/ui/workspace/libraries.cljs:432, src/app/main/ui/workspace/libraries.cljs:833
msgid "common.unpublish"
msgstr "Despublicar"
#: src/app/main/ui/dashboard/projects.cljs:90
msgid "dasboard.team-hero.management"
msgstr "Gestión de equipos"
#: src/app/main/ui/dashboard/projects.cljs:89
msgid "dasboard.team-hero.text"
msgstr ""
"Penpot está destinado a equipos. Invite a miembros a trabajar juntos en "
"proyectos y archivos"
#: src/app/main/ui/dashboard/projects.cljs:87
msgid "dasboard.team-hero.title"
msgstr "¡En equipo!"
#: src/app/main/ui/dashboard/file_menu.cljs:324, src/app/main/ui/workspace/main_menu.cljs:700
msgid "dashboard.add-shared"
msgstr "Agregar como biblioteca compartida"
#: src/app/main/ui/settings/profile.cljs:75
msgid "dashboard.change-email"
msgstr "Cambiar el correo electrónico"
#: src/app/main/data/dashboard.cljs:300, src/app/main/data/dashboard.cljs:535, src/app/main/data/workspace/pages.cljs:201
msgid "dashboard.copy-suffix"
msgstr "(copiar)"
#: src/app/main/ui/dashboard/organization_team_switch.cljs:280
msgid "dashboard.create-new-team"
msgstr "Crear nuevo equipo"
#: src/app/main/ui/components/context_menu_a11y.cljs:304
msgid "dashboard.default-team-name"
msgstr "Tu Penpot"
#: src/app/main/ui/dashboard/organization_team_switch_menus.cljs:274, src/app/main/ui/dashboard/team_form.cljs:153
msgid "dashboard.delete-team"
msgstr "Eliminar equipo"
#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/workspace/main_menu.cljs:737
msgid "dashboard.download-binary-file"
msgstr "Descargar el archivo Penpot (.penpot)"
#: src/app/main/ui/dashboard/file_menu.cljs:302, src/app/main/ui/dashboard/project_menu.cljs:94
msgid "dashboard.duplicate"
msgstr "Duplicar"
#: src/app/main/ui/dashboard/file_menu.cljs:269
msgid "dashboard.duplicate-multi"
msgstr "Duplicar %s archivos"
#: src/app/main/ui/dashboard/file_menu.cljs:279
msgid "dashboard.export-binary-multi"
msgstr "Descargar %s archivos Penpot (.penpot)"
#: src/app/main/ui/workspace/main_menu.cljs:745
msgid "dashboard.export-frames"
msgstr "Exportar tableros como PDF"
#: src/app/main/ui/exports/assets.cljs:202
msgid "dashboard.export-frames.title"
msgstr "Exportar como PDF"
#: src/app/main/ui/exports/assets.cljs:108
msgid "dashboard.export-multiple.selected"
msgstr "%s de %s elementos seleccionados"
#: src/app/main/ui/workspace/main_menu.cljs:728
msgid "dashboard.export-shapes"
msgstr "Exportar"
#: src/app/main/ui/exports/assets.cljs:179
msgid "dashboard.export-shapes.how-to"
msgstr ""
"Puede agregar configuraciones de exportación a elementos desde las "
"propiedades de diseño (en la parte inferior de la barra lateral derecha)."
#: src/app/main/ui/exports/assets.cljs:183
msgid "dashboard.export-shapes.how-to-link"
msgstr "Información sobre cómo configurar las exportaciones en Penpot."
#: src/app/main/ui/exports/assets.cljs:178
msgid "dashboard.export-shapes.no-elements"
msgstr "No hay elementos con configuración de exportación."
#: src/app/main/ui/exports/assets.cljs:189
msgid "dashboard.export-shapes.title"
msgstr "Selección de exportación"
#: src/app/main/ui/dashboard/import.cljs:137
msgid "dashboard.import.progress.process-typographies"
msgstr "Procesamiento de tipografías"
#: src/app/main/ui/dashboard/import.cljs:125
msgid "dashboard.import.progress.upload-data"
msgstr "Subiendo datos al servidor (%s/%s)"
#: src/app/main/ui/dashboard/import.cljs:128
msgid "dashboard.import.progress.upload-media"
msgstr "Subiendo archivo: %s"
#: src/app/main/ui/dashboard/team.cljs:149, src/app/main/ui/dashboard/team.cljs:860
msgid "dashboard.invite-profile"
msgstr "Invitar a la gente"
#: src/app/main/ui/dashboard/organization_team_switch_menus.cljs:257, src/app/main/ui/dashboard/organization_team_switch_menus.cljs:263, src/app/main/ui/dashboard/organization_team_switch_menus.cljs:268, src/app/main/ui/dashboard/team.cljs:464
msgid "dashboard.leave-team"
msgstr "dejar el equipo"
#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:166
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotecas y plantillas"
#: src/app/main/ui/dashboard/templates.cljs:167
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explore más de ellos y sepa cómo contribuir"
#: src/app/main/ui/dashboard/import.cljs:816, src/app/main/ui/workspace/libraries.cljs:229
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Hubo un problema al importar la plantilla. La plantilla no fue importada."
#: src/app/main/ui/dashboard/libraries.cljs:68
msgid "dashboard.libraries-title"
msgstr "Bibliotecas"
#: src/app/main/ui/dashboard/placeholder.cljs:142
msgid "dashboard.loading-files"
msgstr "cargando tus archivos…"
#: src/app/main/ui/dashboard/fonts.cljs:489
msgid "dashboard.loading-fonts"
msgstr "cargando tus fuentes…"
#: src/app/main/ui/dashboard/file_menu.cljs:308, src/app/main/ui/dashboard/project_menu.cljs:101
msgid "dashboard.move-to"
msgstr "Mover a"
#: src/app/main/ui/dashboard/file_menu.cljs:272
msgid "dashboard.move-to-multi"
msgstr "Mover %s archivos a"
#: src/app/main/ui/dashboard/file_menu.cljs:73
msgid "dashboard.move-to-other-team"
msgstr "Pasar a otro equipo"
#: src/app/main/ui/dashboard/files.cljs:117, src/app/main/ui/dashboard/projects.cljs:259
msgid "dashboard.new-file"
msgstr "+ Nuevo archivo"
#: src/app/main/data/dashboard.cljs:506, src/app/main/data/dashboard.cljs:618
msgid "dashboard.new-file-prefix"
msgstr "Archivo nuevo"
#: src/app/main/ui/dashboard/projects.cljs:59
msgid "dashboard.new-project"
msgstr "+ Nuevo proyecto"
#: src/app/main/data/dashboard.cljs:259, src/app/main/data/dashboard.cljs:621
msgid "dashboard.new-project-prefix"
msgstr "Nuevo proyecto"
#: src/app/main/ui/dashboard/search.cljs:76
msgid "dashboard.no-matches-for"
msgstr "No se encontraron coincidencias para \"%s\""
#: src/app/main/ui/dashboard/sidebar.cljs:400
msgid "dashboard.no-projects-placeholder"
msgstr "Los proyectos fijados aparecerán aquí"
#: src/app/main/ui/auth/verify_token.cljs:38
msgid "dashboard.notifications.email-changed-successfully"
msgstr "Su dirección de correo electrónico se ha actualizado correctamente"
#: src/app/main/ui/workspace/tokens/management/forms/shadow.cljs:302, src/app/main/ui/workspace/tokens/management/forms/typography.cljs:234, ../common/src/app/common/files/tokens.cljc:217, ../common/src/app/common/files/tokens.cljc:298, ../common/src/app/common/files/tokens.cljc:339, ../common/src/app/common/schema.cljc:1063
msgid "errors.field-max-length"
msgstr "El nombre debe contener como máximo %s caracteres."
#: ../common/src/app/common/schema.cljc:1076
msgid "errors.field-not-all-whitespace"
msgstr "El nombre debe contener algún carácter distinto al del espacio."
#: src/app/main/ui/auth/recovery.cljs:47
msgid "errors.invalid-recovery-token"
msgstr "El token de recuperación no es válido."