metis-desk/docs/traducciones.md
David b45925f3e2 feat(assets): implement asset picker dialog and selection components
- Added `useAssetPickerController` for managing asset selection logic.
- Created `AssetSelectProps` type for defining asset selection properties.
- Implemented `AssetPickerDialog` for displaying the asset selection interface.
- Developed `AssetPickerList` for rendering the list of selectable assets.
- Introduced `AssetSelect` component for integrating the asset picker into forms.
- Created `AssetList` component for shared asset listing functionality.
- Added tests for workstation creation logic to ensure proper validation.
- Implemented workstation asset fields and association fields for managing workstation assets.
- Developed workstation lifecycle dialog for managing work profile states.
- Added form progress component for visualizing multi-step forms.
2026-10-14 19:42:59 +02:00

4.2 KiB

Traducciones de la interfaz

Las cadenas de interfaz se mantienen en JSON, con un fichero por idioma y módulo. Los componentes utilizan las claves existentes mediante i18next; no incorporan diccionarios de textos en TypeScript.

Ubicación y espacios de traducción

Módulo Ficheros Espacio de traducción
Core modules/core/src/common/locales/es.json, en.json core
Identidad modules/identity/src/common/locales/es.json, en.json identity
Compañías modules/companies/src/common/locales/es.json, en.json companies, access
Activos modules/assets/src/common/locales/es.json, en.json assets
Recursos modules/resources/src/common/locales/es.json, en.json resources
Biblioteca visual packages/shadcn-ui/src/locales/es.json, en.json Textos propios de componentes genéricos

Compañías conserva sus dos espacios existentes. Cada JSON contiene las propiedades raíz companies y access: la segunda reúne cuentas, accesos y ayuda contextual. Esta organización evita cambiar las claves utilizadas por las pantallas. Los demás módulos conservan su estructura de claves directa, igual que Core.

Los archivos web/i18n.ts solo exportan el contenido JSON. El adaptador de accesos también comprueba que la ayuda cubra todos los tipos previstos. apps/web/src/i18n.ts registra los módulos y mantiene castellano como idioma de reserva.

La biblioteca visual conserva sus textos en su propio paquete, sin depender de módulos de negocio ni de i18next. entityListLabels(locale) selecciona los textos y construye el rango de resultados. Los diálogos aceptan closeLabel para recibir el texto traducido del consumidor; el valor predeterminado procede del JSON inglés. Los formularios de Metis Desk utilizan sus acciones y etiquetas ya traducidas.

Añadir o modificar textos

  1. Elegir el módulo propietario del texto y una clave en inglés que describa su finalidad.
  2. Añadir la misma clave en es.json y en.json, dentro de la sección correspondiente.
  3. Utilizar t("clave") en el espacio del módulo. Conservar los parámetros {{nombre}} idénticos en ambos idiomas.
  4. Ejecutar las pruebas y la comprobación de tipos. Las pruebas de la aplicación comprueban todas las claves cargadas, textos no vacíos y equivalencia de parámetros entre idiomas.

No duplicar textos de componentes genéricos en los módulos. Los textos específicos de una entidad pertenecen al módulo consumidor.

Terminología de desactivación y eliminación

Desactivar (Deactivate en inglés) indica una baja lógica: el registro se conserva y queda inactivo. Eliminar (Delete en inglés) indica el borrado definitivo, sujeto a las restricciones de cada entidad. Las etiquetas, confirmaciones y errores utilizan estos términos de forma coherente; no se utiliza «Dar de baja» como etiqueta de desactivación.

Incorporar un idioma

Crear un JSON junto a los existentes en cada módulo y en la biblioteca visual, conservando las claves y parámetros. Exportar las traducciones desde los adaptadores del módulo, registrarlas en apps/web/src/i18n.ts y ampliar supportedLngs, el selector de apps/web/src/app.tsx y los nombres de idioma de Core. Ampliar también la selección de idioma de entityListLabels y las pruebas de paridad. La carga sigue siendo explícita, sin nuevas dependencias.

Alcance de la auditoría

Se consolidaron 1.350 claves por idioma que estaban distribuidas en Identidad, Compañías, Accesos, Activos y Recursos, incluyendo formularios, estados, errores de interfaz y ayuda contextual. Core ya utilizaba JSON; ahora también contiene los nombres del selector de idioma. Se extrajeron los textos comunes de tablas y el cierre de diálogos de la biblioteca visual.

Se revisaron los textos JSX, etiquetas, placeholders y diccionarios de los módulos y la aplicación. Se mantienen como datos o elementos técnicos los nombres propios, las siglas y protocolos, los símbolos de interfaz, las claves de traducción, los identificadores, las rutas y los datos iniciales de catálogos editables. Los mensajes internos de diagnóstico y los datos de pruebas no son traducciones de interfaz y conservan su ubicación. No se modifican datos persistidos ni valores de negocio.