Initial commit of Descrybe v2 without local scratch artifacts.
Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
This commit is contained in:
@@ -0,0 +1,238 @@
|
||||
/** Supplemental UI strings merged into gen-locale-packs.mjs (auth/settings/dashboard extras). */
|
||||
export const EXTRA = {
|
||||
es: {
|
||||
"common.askAdmin": "Pregunta a un administrador de la empresa",
|
||||
"common.you": "Tú",
|
||||
"common.active": "Activo",
|
||||
"common.pending": "Pendiente",
|
||||
"common.email": "Correo electrónico",
|
||||
"common.password": "Contraseña",
|
||||
"common.name": "Tu nombre",
|
||||
"common.viewPricing": "Ver precios",
|
||||
"common.backToSignIn": "Volver a iniciar sesión",
|
||||
"common.signingOut": "Cerrando sesión…",
|
||||
"common.signOutAndContinue": "Cerrar sesión y continuar",
|
||||
"common.staySignedIn": "Seguir conectado",
|
||||
"nav.section.feeds": "Feeds",
|
||||
"nav.section.marketing": "Marketing",
|
||||
"nav.feeds": "Feeds",
|
||||
"nav.seo": "SEO",
|
||||
"nav.admin": "Admin",
|
||||
"auth.login.title": "Iniciar sesión",
|
||||
"auth.login.description": "Usa tu correo y contraseña de Descrybe.",
|
||||
"auth.login.submit": "Iniciar sesión",
|
||||
"auth.login.submitting": "Iniciando sesión…",
|
||||
"auth.login.failed": "Error al iniciar sesión",
|
||||
"auth.login.passwordNotSet":
|
||||
"Esta cuenta aún necesita una contraseña. Abre el enlace de invitación o pide a un administrador que emita uno nuevo.",
|
||||
"auth.login.setPasswordFirstTitle": "Establece la contraseña primero:",
|
||||
"auth.login.setPasswordFirstBody":
|
||||
"usa el enlace de invitación de tu correo. Si el enlace fue a una dirección antigua (cambio de correo), pide a un administrador de la empresa que emita una nueva invitación para establecer contraseña a {email}.",
|
||||
"auth.login.yourEmail": "tu correo",
|
||||
"auth.login.platformAdminsReissue": "Los administradores de plataforma pueden reemitir desde",
|
||||
"auth.login.adminUsersLink": "Admin → Usuarios",
|
||||
"auth.login.haveToken": "¿Tienes un token? Abrir aceptar invitación",
|
||||
"auth.login.noAccount": "¿Sin cuenta?",
|
||||
"auth.login.createCompany": "Crear empresa",
|
||||
"auth.login.haveInvite": "¿Tienes una invitación o un enlace para establecer contraseña?",
|
||||
"auth.login.acceptInvite": "Aceptar invitación",
|
||||
"auth.register.title": "Crear empresa",
|
||||
"auth.register.description": "Registra una empresa y su usuario administrador.",
|
||||
"auth.register.companyName": "Nombre de la empresa",
|
||||
"auth.register.submit": "Crear cuenta",
|
||||
"auth.register.submitting": "Creando…",
|
||||
"auth.register.failed": "Error en el registro",
|
||||
"auth.register.haveAccount": "¿Ya tienes una cuenta?",
|
||||
"auth.register.signIn": "Iniciar sesión",
|
||||
"auth.invite.title": "Aceptar invitación",
|
||||
"auth.invite.setPasswordTitle": "Establecer contraseña",
|
||||
"auth.invite.description":
|
||||
"Establece tu contraseña para unirte a la empresa. Tu administrador asignó Miembro (trabajo diario) o Admin (equipo y facturación).",
|
||||
"auth.invite.setPasswordDescription":
|
||||
"Elige una contraseña para tu cuenta Descrybe migrada (al menos 8 caracteres).",
|
||||
"auth.invite.checking": "Comprobando invitación…",
|
||||
"auth.invite.forEmail": "Invitación para {email}.",
|
||||
"auth.invite.linkRecognized":
|
||||
"Enlace de invitación reconocido. Introduce una contraseña abajo para continuar — el secreto no se muestra en esta página.",
|
||||
"auth.invite.resetLinkRecognized":
|
||||
"Enlace de restablecimiento reconocido. Introduce una contraseña abajo para continuar — el secreto no se muestra en esta página.",
|
||||
"auth.invite.tokenLabel": "Token de invitación",
|
||||
"auth.invite.resetTokenLabel": "Token de restablecimiento",
|
||||
"auth.invite.tokenHelp":
|
||||
"Pega el token del correo de invitación. Se muestra enmascarado en este campo.",
|
||||
"auth.invite.passwordHint": "Al menos 8 caracteres. Sin otras reglas de complejidad.",
|
||||
"auth.invite.submit": "Aceptar invitación",
|
||||
"auth.invite.setPasswordSubmit": "Establecer contraseña",
|
||||
"auth.invite.accepting": "Aceptando…",
|
||||
"auth.invite.saving": "Guardando…",
|
||||
"auth.invite.verifyFailed": "No se pudo verificar la invitación",
|
||||
"auth.invite.verifySetPasswordFailed":
|
||||
"No se pudo verificar el enlace para establecer contraseña",
|
||||
"auth.invite.acceptFailed": "No se pudo aceptar la invitación",
|
||||
"auth.invite.setPasswordFailed": "No se pudo establecer la contraseña",
|
||||
"auth.invite.expired":
|
||||
"Esta invitación no es válida o ha caducado. Pide a tu administrador de la empresa que envíe una nueva invitación y abre el nuevo enlace (o pega el nuevo token abajo).",
|
||||
"auth.invite.setPasswordExpired":
|
||||
"Este enlace para establecer contraseña no es válido o ha caducado. Pide a un administrador de la empresa o de la plataforma que lo reemita y abre el nuevo enlace (o pega el nuevo token abajo).",
|
||||
"auth.invite.emailMismatchDefault":
|
||||
"Has iniciado sesión con un correo distinto al de esta invitación.",
|
||||
"auth.invite.expiredFooter":
|
||||
"¿Enlace caducado? Pide a un administrador que lo reemita — no hay API de reenvío autoservicio. Administradores de plataforma:",
|
||||
"auth.invite.adminUsersLink": "Admin → Usuarios",
|
||||
"auth.invite.doneTitle": "Ya formas parte del equipo",
|
||||
"auth.invite.doneSetPasswordTitle": "Contraseña guardada",
|
||||
"auth.invite.doneDescription":
|
||||
"Tu cuenta está lista. A continuación, abre el panel para trabajar con feeds y productos, o revisa la configuración de la empresa.",
|
||||
"auth.invite.doneSetPasswordDescription":
|
||||
"Inicia sesión con tu correo y la nueva contraseña para abrir tu espacio de trabajo.",
|
||||
"auth.invite.openDashboard": "Abrir panel",
|
||||
"auth.invite.companySettings": "Configuración de la empresa",
|
||||
"auth.invite.goToSignIn": "Ir a iniciar sesión",
|
||||
"auth.invite.afterSignInNote":
|
||||
"Tras iniciar sesión llegas a tu espacio de trabajo — se omite el recorrido de configuración inicial.",
|
||||
"auth.invite.mismatchTitle": "Cuenta incorrecta para esta invitación",
|
||||
"auth.invite.mismatchDescription":
|
||||
"Este enlace es para un correo distinto al de la sesión actual. Cierra sesión para continuar como el usuario invitado, o permanece conectado y pide a un administrador que reemita la invitación.",
|
||||
"auth.invite.mismatchDetail":
|
||||
"Sesión iniciada como {session}, pero esta invitación es para {invite}.",
|
||||
"auth.invite.mismatchFallback": "El correo de la sesión no coincide con esta invitación.",
|
||||
"auth.invite.switchAccountTitle": "Cambiar de cuenta:",
|
||||
"auth.invite.switchAccountBody":
|
||||
"cierra sesión y completa este formulario con el correo invitado{emailSuffix}.",
|
||||
"auth.invite.reissueTitle": "Vía de reemisión:",
|
||||
"auth.invite.reissueBody":
|
||||
"si cambió tu correo real de acceso (desfase de correo), pide a un administrador de la empresa que revoque esta invitación y envíe una nueva al correo con el que inicias sesión. Los administradores de plataforma también pueden reemitir enlaces para establecer contraseña desde Admin → Usuarios.",
|
||||
"settings.accessDenied":
|
||||
"No tienes permiso para abrir la configuración de la empresa. Pide ayuda a un administrador de la empresa.",
|
||||
"settings.profileHeading": "Perfil",
|
||||
"settings.personalInfo": "Información personal",
|
||||
"settings.personalInfoHelp": "Actualiza tus datos personales",
|
||||
"settings.firstName": "Nombre",
|
||||
"settings.firstNamePlaceholder": "Tu nombre",
|
||||
"settings.lastName": "Apellidos",
|
||||
"settings.lastNamePlaceholder": "Tus apellidos",
|
||||
"settings.email": "Correo electrónico",
|
||||
"settings.profileUpdated": "Perfil actualizado.",
|
||||
"settings.profileUpdateFailed": "No se pudo actualizar el perfil",
|
||||
"settings.role.member": "Miembro",
|
||||
"settings.role.admin": "Admin",
|
||||
"settings.teamHeading": "Miembros del equipo",
|
||||
"settings.inviteUser": "Invitar usuario",
|
||||
"settings.teamAdminOnly":
|
||||
"Solo los administradores de la empresa pueden invitar, ascender, degradar o eliminar compañeros.",
|
||||
"settings.shareAcceptLink": "Compartir enlace de aceptación",
|
||||
"settings.shareAcceptLinkHelp":
|
||||
"El correo saliente no está configurado. Copia este enlace de un solo uso y envíaselo al invitado. Establecerá una contraseña (al menos 8 caracteres) y se unirá con el rol que elegiste.",
|
||||
"settings.acceptLinkLabel": "Enlace de aceptación de invitación de un solo uso",
|
||||
"settings.copyLink": "Copiar enlace",
|
||||
"settings.linkCopied": "Enlace de aceptación copiado.",
|
||||
"settings.table.email": "Correo electrónico",
|
||||
"settings.table.role": "Rol",
|
||||
"settings.table.status": "Estado",
|
||||
"settings.table.joined": "Alta / caduca",
|
||||
"settings.table.actions": "Acciones",
|
||||
"settings.teamForbidden":
|
||||
"No tienes permiso para ver la lista del equipo. Pide ayuda a un administrador de la empresa.",
|
||||
"settings.noTeammates": "Aún no hay compañeros",
|
||||
"settings.noTeammatesHelp":
|
||||
"Invita a colegas como Miembro (productos y feeds) o Admin (equipo y configuración de la empresa). Las invitaciones pendientes aparecen aquí hasta que se acepten.",
|
||||
"settings.noTeammatesMemberHelp":
|
||||
"Aún no hay compañeros en la lista. Pide a un administrador de la empresa que envíe invitaciones.",
|
||||
"settings.memberActions": "Acciones del miembro",
|
||||
"settings.makeAdmin": "Hacer admin",
|
||||
"settings.makeMember": "Hacer miembro",
|
||||
"settings.removeMember": "Eliminar",
|
||||
"settings.revokeInvite": "Revocar invitación",
|
||||
"settings.needOneAdmin": "Las empresas necesitan al menos un administrador",
|
||||
"settings.expires": "Caduca el {date}",
|
||||
"settings.invalidEmail": "Introduce una dirección de correo válida.",
|
||||
"settings.inviteCreatedNoMail":
|
||||
"Invitación creada para {email} como {role}. Copia el enlace de aceptación abajo y compártelo — el correo saliente no está configurado.",
|
||||
"settings.inviteSent":
|
||||
"Invitación enviada a {email} como {role}. Debe abrir el correo y aceptar antes de que caduque.",
|
||||
"settings.inviteFailed": "No se pudo enviar la invitación",
|
||||
"settings.revokeConfirm": "¿Revocar esta invitación?",
|
||||
"settings.revoked": "Invitación revocada.",
|
||||
"settings.revokeFailed": "No se pudo revocar la invitación",
|
||||
"settings.removeConfirm": "¿Eliminar a {email} de esta empresa?",
|
||||
"settings.memberRemoved": "{email} eliminado.",
|
||||
"settings.removeFailed": "No se pudo eliminar al usuario",
|
||||
"settings.roleChangeConfirm": "¿{action} a {email} a {role}?",
|
||||
"settings.roleChanged": "{email} ahora es {role}.",
|
||||
"settings.roleChangeFailed": "No se pudo actualizar el rol",
|
||||
"settings.promote": "Ascender",
|
||||
"settings.demote": "Degradar",
|
||||
"settings.inviteTitle": "Invitar compañero",
|
||||
"settings.inviteDescription":
|
||||
"Recibirá un enlace para establecer una contraseña (al menos 8 caracteres) y unirse a esta empresa.",
|
||||
"settings.inviteEmail": "Correo electrónico",
|
||||
"settings.inviteEmailPlaceholder": "colega@ejemplo.com",
|
||||
"settings.inviteRole": "Rol",
|
||||
"settings.inviteRoleHint":
|
||||
"Los miembros gestionan productos y feeds. Los administradores también pueden invitar compañeros y cambiar la configuración de la empresa.",
|
||||
"settings.sendInvite": "Enviar invitación",
|
||||
"dashboard.demoEmptyHint":
|
||||
"La zona de pruebas demo está vacía — cambia a A1 o conecta un feed para ver estadísticas reales del catálogo.",
|
||||
"dashboard.workflowHint": "Importar → enriquecer → publicar. Salta al siguiente paso para {name}.",
|
||||
"dashboard.overviewHint": "Totales en vivo para {name}",
|
||||
"dashboard.demoEmptyMessage":
|
||||
"Cambia a A1 (u otra empresa con datos) en el encabezado, o conecta un feed aquí para poblar esta zona de pruebas.",
|
||||
"dashboard.emptyTitle": "Aún no hay datos de catálogo",
|
||||
"dashboard.emptyMessage": "Conecta un feed o sube un CSV para empezar a crear tu catálogo.",
|
||||
"dashboard.connectFeedAnyway": "Conectar feed de todos modos",
|
||||
"dashboard.connectFeedShort": "Conectar feed",
|
||||
"dashboard.uploadCsv": "Subir CSV",
|
||||
"dashboard.goToBilling": "Ir a Facturación",
|
||||
"dashboard.freePlanTitle": "Estás en el plan Free",
|
||||
"dashboard.freePlanMessageWithLimit":
|
||||
"{used} de {max} productos usados. El mapeo de feeds, la limpieza básica y las etiquetas energéticas de la UE (EPREL) están incluidos; actualiza para títulos y descripciones con IA, y más capacidad.",
|
||||
"dashboard.freePlanMessage":
|
||||
"El mapeo de feeds, la limpieza básica y las etiquetas energéticas de la UE (EPREL) están incluidos; actualiza para títulos y descripciones con IA, y más capacidad.",
|
||||
"dashboard.outOfCreditsTitle": "Te has quedado sin créditos de IA",
|
||||
"dashboard.outOfCreditsMessage":
|
||||
"Compra más créditos o actualiza tu plan para seguir procesando.",
|
||||
"dashboard.productLimitTitle": "Límite de productos alcanzado",
|
||||
"dashboard.productLimitMessage":
|
||||
"Tu plan {plan} permite {max} productos ({count} en el catálogo). Actualiza para procesar más.",
|
||||
"dashboard.productLimitMessageFull":
|
||||
"Se alcanzó el límite de productos de tu plan {plan}. Actualiza para procesar más.",
|
||||
"dashboard.comparePlans": "Comparar planes",
|
||||
"dashboard.viewPlans": "Ver planes",
|
||||
"dashboard.trialTitle": "Prueba · {plan}",
|
||||
"dashboard.trialMessageDated": "La prueba termina el {date}. {credits} créditos restantes.",
|
||||
"dashboard.trialMessage": "{credits} créditos restantes en tu prueba.",
|
||||
"dashboard.lowCreditsTitle": "Créditos bajos",
|
||||
"dashboard.lowCreditsMessage":
|
||||
"Quedan {remaining} de {total} créditos. Recarga o actualiza antes de que se detengan los trabajos.",
|
||||
"dashboard.latestJobs": "Últimos trabajos de procesamiento",
|
||||
"dashboard.noJobsEmpty": "Aún no hay trabajos — importa productos primero.",
|
||||
"dashboard.noJobsReady": "No hay trabajos recientes. Inicia uno desde Productos cuando estés listo.",
|
||||
"dashboard.startJob": "Iniciar un trabajo",
|
||||
"dashboard.quickLinksHint": "Feeds, productos, trabajos y exportación.",
|
||||
"dashboard.feedsImportMap": "Importar y mapear",
|
||||
"dashboard.productsBrowse": "Explorar y procesar",
|
||||
"dashboard.jobsMonitor": "Supervisar tareas",
|
||||
"dashboard.exportsTemplates": "Plantillas y descarga",
|
||||
"activation.step.enable-fields.title": "Activar campos",
|
||||
"activation.step.enable-fields.body":
|
||||
"Activa las columnas de producto estándar que Descrybe mapea y procesa.",
|
||||
"activation.step.connect-source.title": "Añadir o conectar un origen",
|
||||
"activation.step.connect-source.body":
|
||||
"Añade un feed CSV/XML o conecta una tienda para que entren productos.",
|
||||
"activation.step.map.title": "Mapear campos de origen",
|
||||
"activation.step.map.body":
|
||||
"Asocia las columnas del proveedor a los campos de Descrybe y guarda el mapeo.",
|
||||
"activation.step.sync-sample.title": "Sincronizar una muestra",
|
||||
"activation.step.sync-sample.body":
|
||||
"Extrae una muestra pequeña para verificar el mapeo antes de una ejecución completa.",
|
||||
"activation.step.process.title": "Procesar productos",
|
||||
"activation.step.process.body":
|
||||
"Ejecuta el procesamiento sobre productos sincronizados para generar contenido de catálogo limpio.",
|
||||
"activation.step.export.title": "Exportar",
|
||||
"activation.step.export.body":
|
||||
"Crea un feed de exportación para publicar productos limpios como XML o CSV.",
|
||||
"stats.feeds": "Feeds",
|
||||
"processing.step.eprel": "EPREL",
|
||||
"toast.support.replyRe": "Re: {subject}"
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user