Sistema De Internacionalizacion
Objetivo
Preparar OPS para operar en varios idiomas sin introducir complejidad innecesaria ni reescribir la interfaz de golpe.
Idiomas iniciales:
es: idioma por defecto.
en: primer idioma internacional.
Contrato Actual
- La preferencia se guarda en
localStorage con la clave ops_lang.
- El atributo
lang del documento se sincroniza con el idioma activo.
- Los textos estaticos se traducen con atributos declarativos:
- data-i18n para texto visible.
- data-i18n-title para title.
- data-i18n-aria para aria-label.
- data-i18n-placeholder para placeholder.
- El diccionario vive en
public/index.html como I18N mientras la aplicacion siga siendo una pagina unica.
- Si falta una traduccion, se usa primero el texto de
es, despues el texto original.
Criterio De Implementacion
- No mezclar internacionalizacion con cambios de negocio.
- No traducir pantallas dinamicas completas hasta estabilizar el contrato base.
- Todo texto nuevo visible debe nacer con clave i18n si forma parte de navegacion, acciones principales, formularios o estados.
- Las claves deben ser estables y descriptivas, por ejemplo
nav.queue o topbar.newTask.
- Evitar frameworks o loaders externos hasta que el volumen de textos lo justifique.
Estado
Primer corte implementado:
- selector
ES/EN en la barra superior;
- navegacion lateral;
- acciones principales de la barra superior;
- etiqueta dinamica de vista lista/Kanban;
- persistencia de idioma.
Pendiente:
- traducir pantallas dinamicas por bloques;
- mover diccionarios a ficheros separados si el volumen crece;
- anadir pruebas de humo visuales para
es y en;
- revisar copy final antes de abrir fase beta.