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.