metis-desk/modules/assets/src/common/locales/es.json
David 832d69c6fa feat: enhance form components with field help and tabbed sections
- Added FieldHelp component to display help text for form fields.
- Integrated help text into AssetCharacteristicControl and ResourceCharacteristicControl.
- Updated AssetForm to utilize TabbedFieldSections for better organization of characteristics.
- Modified BrandSelect to include help text.
- Improved CatalogFieldForm with descriptive hints for the description field.
- Refactored FieldSections to support different layouts and improved styling.
- Introduced fieldHelpById utility to manage help text for fields.
- Updated localization files to include new help text strings.
- Enhanced tests to cover new features and ensure functionality.
2026-10-10 22:00:45 +02:00

333 lines
18 KiB
JSON

{
"brands": {
"title": "Marcas",
"introduction": "Gestiona las marcas disponibles para los activos de todas las compañías.",
"entityLabel": "marcas",
"new": "Añadir marca",
"edit": "Editar marca",
"delete": "Eliminar marca",
"deleting": "Eliminando…",
"deleteConfirm": "¿Quieres eliminar la marca «{{name}}»? Esta acción no se puede deshacer.",
"deleteGuidance": "Solo se pueden eliminar marcas personalizadas sin referencias en activos ni en su historial. Si está en uso, puedes desactivarla desde Editar.",
"deleteError": "No se ha podido eliminar la marca.",
"active": "Activa",
"inactive": "Inactiva",
"name": "Marca",
"logo": {
"label": "Logotipo",
"none": "Sin logotipo",
"help": "Opcional: SVG vectorial sin fondo, hasta 32 KiB. Exporta como SVG simple, con viewBox, sin scripts, animaciones, imágenes incrustadas ni referencias externas.",
"remove": "Quitar logotipo",
"invalid": "El archivo no es un SVG estático compatible o supera los 32 KiB.",
"readError": "No se ha podido leer el archivo. Selecciónalo de nuevo."
},
"all": "Todas",
"search": "Buscar por marca...",
"loading": "Cargando marcas…",
"loadError": "No se han podido cargar las marcas.",
"empty": "No hay marcas que coincidan con la búsqueda.",
"noBrand": "Sin especificar",
"legacy": "Valor anterior",
"quickNotice": "La marca se guardará en el catálogo global aunque después canceles el activo.",
"help": "Una marca identifica al fabricante de un activo. Es común a todas las compañías y no define sus modelos comerciales.",
"examples": "Ejemplos: LG, HP, Microsoft, Kyocera, Zebra o Clónico para equipos montados con componentes de distintos fabricantes.",
"guidance": "Puedes añadir marcas y cambiar su disponibilidad. Las marcas de serie conservan su nombre; las personalizadas se pueden renombrar. Desactivar no borra los activos ni su historial.",
"errors": {
"INVALID_REQUEST": "Indica un nombre de marca válido.",
"NAME_EXISTS": "Ya existe una marca con ese nombre, incluso si está desactivada.",
"BUILTIN_PROTECTED": "Las marcas de serie no se pueden eliminar ni renombrar.",
"BRAND_IN_USE": "Esta marca está vinculada a activos o a su historial y no se puede eliminar. Puedes desactivarla desde Editar.",
"BRAND_NOT_FOUND": "La marca ya no está disponible.",
"INTERNAL_ERROR": "No se ha podido completar la operación con la marca.",
"FORBIDDEN": "La sesión no permite esta operación. Vuelve a iniciar sesión.",
"UNAUTHENTICATED": "Vuelve a iniciar sesión."
}
},
"support": {
"title": "Asistencia técnica remota",
"new": "Añadir método",
"edit": "Editar método",
"tool": "Herramienta",
"choose": "Selecciona una herramienta",
"chooseState": "Selecciona un estado",
"newTool": "Nueva herramienta",
"destination": "Identificador o destino (opcional)",
"requiresVpn": "Requiere VPN",
"preferred": "Método preferido",
"state": "Estado",
"pending": "Pendiente de configurar",
"available": "Disponible",
"retired": "Retirado",
"notes": "Notas (opcional)",
"empty": "No hay métodos de asistencia registrados para este activo.",
"showRetired": "Mostrar métodos retirados",
"history": "Historial",
"loading": "Cargando asistencia remota…",
"loadError": "No se pudo cargar la asistencia remota.",
"help": "¿Para qué sirve este método?",
"description": "Registra cómo un técnico puede prestar soporte remoto a este activo.",
"guidance": "Puedes registrar varios métodos. Solo uno disponible puede ser el preferido. Documentar un método no establece una conexión ni concede permisos de teletrabajo.",
"examples": "AnyDesk: 123 456 789; Supremo Control: su identificador; Escritorio remoto: PORT-ANA-01, con VPN si es necesaria.",
"examplesLabel": "Ejemplos y recomendaciones",
"scope": "No introduzcas contraseñas ni claves de acceso en el identificador o las notas.",
"review": "Revisar: el activo está retirado o la herramienta está desactivada.",
"errors": {
"INVALID_REQUEST": "Revisa los campos. Solo un método disponible puede marcarse como preferido.",
"ASSET_NOT_FOUND": "El activo no pertenece a esta compañía o ya no está disponible.",
"ASSET_RETIRED": "En un activo retirado solo se pueden guardar métodos retirados.",
"TOOL_UNAVAILABLE": "Selecciona un recurso de asistencia activo de esta compañía.",
"CONNECTION_NOT_FOUND": "El método ya no está disponible.",
"PREFERRED_EXISTS": "Ya hay un método preferido. Desmárcalo antes de elegir otro.",
"CONNECTION_EXISTS": "Ya existe este método con el mismo identificador o destino.",
"INTERNAL_ERROR": "No se pudo completar la operación."
}
},
"assetPanel": "Ficha del activo seleccionado",
"closeAssetPanel": "Cerrar ficha lateral",
"showAssetPanel": "Mostrar ficha lateral",
"inventory": "Activos",
"chooseValue": "Selecciona una opción",
"relatedNotice": "El elemento se guarda por separado y se conserva aunque después canceles el formulario principal.",
"newAsset": "Nuevo activo",
"editAsset": "Editar activo",
"viewAsset": "Ficha e historial",
"template": "Plantilla",
"site": "Sede",
"person": "Persona asignada",
"status": "Estado",
"notes": "Notas",
"available": "Disponible",
"in_use": "En uso",
"maintenance": "En mantenimiento",
"retired": "Retirado",
"noAssets": "Esta compañía todavía no tiene activos.",
"noAssignment": "Sin asignar",
"noValue": "Sin indicar",
"characteristics": "Características",
"history": "Historial",
"recordedBy": "Registrado por {{name}}",
"snapshotNotice": "La plantilla queda fijada al crear el activo. Sus características se conservan aunque después cambie el catálogo.",
"newSite": "Nueva sede",
"newPerson": "Nueva persona",
"assetDescription": "Un activo es un elemento informático concreto de esta compañía. La plantilla indica qué características puedes registrar.",
"assetExamples": "Portátil de Ana, monitor de recepción o switch de la sede central.",
"assetGuidance": "Solo son obligatorios el nombre, la plantilla y los campos exigidos por tu plantilla. Puedes completar el resto más adelante. Retirar un activo conserva su historial y su pertenencia histórica a puestos.",
"assetScope": "El activo pertenece a esta compañía. La sede es opcional y debe pertenecer a ella; la relación con una persona se registra desde un puesto de trabajo o un perfil de usuario.",
"saveAssetError": "No se pudo guardar el activo.",
"inventoryErrors": {
"BRAND_UNAVAILABLE": "La marca no está disponible para nuevas asignaciones.",
"SELF_RELATIONSHIP": "Un activo no puede relacionarse consigo mismo.",
"RELATIONSHIP_EXISTS": "Ya existe esa relación entre estos activos.",
"RELATIONSHIP_NOT_FOUND": "La relación no existe en esta compañía.",
"RELATION_TYPE_UNAVAILABLE": "El tipo de relación debe estar activo en esta compañía.",
"INVALID_MEMBERS": "Selecciona activos distintos y válidos.",
"WORKSTATION_NOT_FOUND": "El puesto no existe en esta compañía.",
"ASSET_IN_WORKSTATION": "Un activo ya pertenece a otro puesto activo. Retíralo de allí antes de asignarlo.",
"INVALID_REQUEST": "Revisa los datos del formulario.",
"INVALID_CHARACTERISTICS": "Alguna característica no corresponde a su campo o tipo.",
"REQUIRED_CHARACTERISTICS": "Completa las características obligatorias de la plantilla.",
"TEMPLATE_FIXED": "No se puede cambiar la plantilla de un activo existente.",
"TEMPLATE_UNAVAILABLE": "La plantilla debe estar activa y disponible para esta compañía.",
"SITE_NOT_FOUND": "La sede no pertenece a esta compañía.",
"PERSON_UNAVAILABLE": "La persona debe estar activa y pertenecer a esta compañía.",
"COMPANY_NOT_FOUND": "Compañía no encontrada.",
"ASSET_NOT_FOUND": "Activo no encontrado en esta compañía.",
"INTERNAL_ERROR": "No se pudo completar la operación.",
"FORBIDDEN": "Vuelve a iniciar sesión.",
"UNAUTHENTICATED": "Vuelve a iniciar sesión."
},
"workstations": "Puestos de trabajo",
"newWorkstation": "Nuevo puesto",
"addSharedWorkstationAsset": "Añadir un recurso compartido",
"exclusiveWorkstationAssets": "Activos exclusivos",
"sharedWorkstationAssets": "Recursos compartidos",
"noSharedWorkstationAssets": "Sin recursos compartidos.",
"editWorkstation": "Editar puesto",
"workstationPerson": "Persona del puesto",
"workstationHistory": "Historial del puesto",
"workstationAssets": "Activos del puesto",
"noWorkstations": "Esta compañía todavía no tiene puestos de trabajo.",
"noWorkstationAssets": "Este puesto todavía no tiene activos.",
"addWorkstationAsset": "Añadir un activo exclusivo",
"workstationOccupied": "{{name}} · ocupado en otro puesto",
"removeWorkstationAsset": "Retirar {{name}} del puesto",
"workstationCount": "{{count}} activos",
"workstationCount_one": "{{count}} activo",
"workstationCount_other": "{{count}} activos",
"workstationDescription": "Un puesto reúne los activos que una persona utiliza habitualmente. Puede quedar sin persona o sede y puede crearse sin activos.",
"workstationExamples": "Puesto de Ana: portátil, dos monitores y una impresora. Una persona puede tener varios puestos.",
"workstationGuidance": "Los activos exclusivos solo pueden estar en un puesto activo. Los recursos compartidos pueden utilizarse en varios puestos, siempre que no estén reservados como exclusivos. Desactivar conserva la composición y libera sus activos; reactivar comprueba su disponibilidad. El puesto no cambia las asignaciones individuales de los activos.",
"workstationScope": "Todos los elementos deben pertenecer a esta compañía. Los cambios de persona, sede y composición conservan historial.",
"workstationInAsset": "Puesto de trabajo",
"noWorkstation": "Sin puesto activo",
"relations": "Relaciones",
"newRelation": "Nuevo tipo de relación",
"editRelation": "Editar tipo de relación",
"inverseName": "Nombre visto desde el otro activo",
"symmetric": "Mismo nombre en ambos sentidos",
"directional": "Relación con dirección",
"relationDescription": "Un tipo de relación describe cómo se vinculan dos activos de una misma compañía.",
"relationExamples": "Portátil → Conectado a → Monitor. Máquina virtual → Alojado en → Servidor; desde el servidor se lee «Aloja».",
"relationGuidance": "Puedes desactivar tipos sin perder los vínculos existentes. La dirección queda fija tras el alta. Las relaciones conservan los nombres que tenían al crearse.",
"linkAsset": "Relacionar activo",
"relationshipType": "Tipo de relación",
"targetAsset": "Otro activo",
"chooseRelation": "Selecciona una relación",
"chooseAsset": "Selecciona un activo",
"noRelationships": "Este activo no tiene relaciones vigentes.",
"endedRelationships": "Relaciones retiradas",
"endRelationship": "Retirar relación",
"endRelationshipConfirm": "Se conservará el historial de esta relación.",
"relationshipHelp": "Vincula equipos que trabajan juntos o dependen de otros. Solo se muestran activos de esta compañía.",
"relationshipExample": "Por ejemplo: este portátil está conectado a un monitor externo.",
"relationshipGuidance": "Selecciona primero el tipo y después el otro activo. Retirar una relación no elimina los activos.",
"quickRelationNotice": "El tipo se guardará para esta compañía aunque después canceles la relación.",
"relationCreated": "Creada por {{name}} · {{date}}",
"relationEnded": "Retirada por {{name}} · {{date}}",
"yes": "Sí",
"no": "No",
"title": "Catálogo de activos",
"companyTitle": "Catálogo de activos",
"introduction": "Define las características y plantillas que utilizarás al registrar activos.",
"companyIntroduction": "Utiliza las definiciones globales y añade las que necesite esta compañía.",
"fields": "Campos",
"templates": "Plantillas",
"newField": "Nuevo campo",
"editField": "Editar campo",
"newTemplate": "Nueva plantilla",
"editTemplate": "Editar plantilla",
"name": "Nombre",
"description": "Descripción (opcional)",
"type": "Tipo de dato",
"unit": "Unidad (opcional)",
"choices": "Valores de la lista",
"choicesHelp": "Escribe un valor por línea. Los valores existentes se conservan; puedes añadir otros.",
"text": "Texto",
"number": "Número",
"date": "Fecha",
"boolean": "Sí / No",
"choice": "Lista de valores",
"active": "Activo",
"inactive": "Inactivo",
"activate": "Activar",
"deactivate": "Desactivar",
"inherited": "Configuración global",
"overridden": "Personalizado en esta compañía",
"reset": "Usar configuración global",
"builtin": "De serie",
"global": "Global",
"own": "De la compañía",
"custom": "Personalizado",
"origin": "Origen",
"actions": "Acciones",
"edit": "Editar",
"copy": "Crear copia",
"copyName": "{{name}} (copia)",
"fieldCount": "{{count}} campos",
"search": "Buscar",
"empty": "No hay resultados.",
"loading": "Cargando catálogo…",
"retry": "Reintentar",
"save": "Guardar",
"saving": "Guardando…",
"cancel": "Cancelar",
"selectField": "Añadir un campo a la plantilla",
"choose": "Selecciona un campo",
"addField": "Nuevo campo",
"required": "Obligatorio",
"chooseType": "Selecciona un tipo",
"view": "Ver",
"close": "Cerrar",
"viewDefinition": "{{name}}",
"optional": "Opcional",
"remove": "Retirar campo: {{name}}",
"noFields": "Añade al menos un campo. Todos son opcionales inicialmente.",
"fieldHelpText": "Texto de ayuda (opcional)",
"fieldHelpHint": "Se muestra junto al campo al crear o editar un activo.",
"protected": "Las plantillas y campos de serie se pueden editar desde el catálogo global. El tipo de dato de un campo se mantiene fijo. Puedes cambiar la disponibilidad o crear una copia de una plantilla para una compañía.",
"helpTitle": "¿Qué es y para qué sirve?",
"examplesLabel": "Ver ejemplos y recomendaciones",
"fieldDescription": "Un campo describe una característica que podrás rellenar en un activo. Puedes reutilizarlo en varias plantillas.",
"fieldExamples": "Ejemplos: Procesador (texto), Pulgadas (número), Fin de garantía (fecha), PoE (sí/no) o Estado de batería (lista).",
"fieldGuidance": "Elige una unidad si ayuda, por ejemplo GB. No guardes contraseñas ni secretos. El tipo de dato queda fijo después del alta.",
"templateDescription": "Una plantilla reúne los campos que se mostrarán para un tipo de activo. No es un equipo concreto ni una marca o modelo comercial.",
"templateExamples": "Monitor: pulgadas, resolución y conexiones. Portátil: procesador, memoria RAM y almacenamiento.",
"templateGuidance": "Las características son opcionales por defecto. Marca como obligatorio solo lo que siempre se conozca. Retirar un campo de una plantilla no elimina el campo del catálogo.",
"globalHelp": "Ámbito global: disponible para todas las compañías.",
"companyHelp": "Ámbito de compañía: estas adiciones y cambios de disponibilidad solo afectan a esta compañía.",
"disabledField": "Campo inactivo: se conserva en esta plantilla.",
"disabledFieldsNotice": "Esta plantilla contiene campos inactivos. Puedes activarlos en el catálogo antes de utilizarla.",
"quickNotice": "El campo se guardará aunque después canceles la plantilla.",
"errors": {
"RELATION_DIRECTION_FIXED": "La dirección de una relación no se puede cambiar.",
"INVALID_REQUEST": "Revisa los datos del formulario.",
"INVALID_CHOICES": "Una lista necesita valores únicos y no vacíos. Los demás tipos no admiten valores de lista.",
"INVALID_FIELDS": "La plantilla necesita campos distintos y válidos.",
"NAME_EXISTS": "Ya existe una definición de este tipo con ese nombre.",
"FIELD_UNAVAILABLE": "Solo puedes añadir campos activos del catálogo global o de esta compañía.",
"FIELD_TYPE_FIXED": "El tipo de dato no se puede cambiar ni se pueden eliminar valores existentes de una lista.",
"BUILTIN_PROTECTED": "Los tipos de relación de serie no se pueden modificar.",
"DEFINITION_NOT_FOUND": "La definición no está disponible en este ámbito.",
"COMPANY_NOT_FOUND": "No se ha encontrado la compañía.",
"INTERNAL_ERROR": "No se ha podido completar la operación.",
"FORBIDDEN": "La sesión no permite esta operación. Vuelve a iniciar sesión.",
"UNAUTHENTICATED": "Vuelve a iniciar sesión.",
"INVALID_SECTIONS": "Las secciones deben tener nombres únicos y cada campo debe pertenecer a una sección de esta plantilla."
},
"sections": {
"title": "Secciones de la plantilla",
"add": "Añadir sección",
"name": "Nombre de la sección",
"description": "Descripción (opcional)",
"ungrouped": "Sin sección",
"moveUp": "Mover hacia arriba",
"moveDown": "Mover hacia abajo",
"remove": "Eliminar sección",
"removeField": "Quitar campo",
"required": "Obligatorio",
"assign": "Sección",
"help": "Organiza los campos sin cambiar sus valores ni su obligatoriedad. Al eliminar una sección, sus campos pasan a «Sin sección».",
"empty": "Esta sección aún no tiene campos."
},
"formLayout": {
"identity": "Identificación y asignación",
"template": "Datos de la plantilla"
},
"detailSections": {
"identification": "Identificación",
"assignment": "Ubicación y asignación",
"notes": "Observaciones"
},
"deleteRecord": {
"title": "Eliminar registro",
"description": "Se eliminarán este registro y su historial. Los activos, recursos, cuentas y personas relacionados se conservarán. Esta acción no se puede deshacer.",
"pending": "Eliminando…",
"error": "No se ha podido eliminar el registro. Inténtalo de nuevo."
},
"templateIcon": {
"label": "Icono (opcional)",
"none": "Sin icono",
"help": "Identifica visualmente la plantilla y sus activos. Puedes cambiarlo o quitarlo en las plantillas personalizadas.",
"options": {
"laptop": "Portátil",
"desktop": "Ordenador de sobremesa",
"monitor": "Monitor",
"printer": "Impresora",
"router": "Router",
"shield": "Seguridad / firewall",
"network": "Switch / red",
"wifi": "Wi-Fi",
"hard-drive": "NAS / almacenamiento",
"server": "Servidor",
"smartphone": "Smartphone",
"battery": "SAI / batería",
"tablet": "Tablet",
"keyboard": "Teclado",
"mouse": "Ratón",
"headphones": "Auriculares",
"camera": "Cámara",
"box": "Otro activo"
}
}
}