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.localStorage con la clave ops_lang.lang del documento se sincroniza con el idioma activo. - data-i18n para texto visible.
- data-i18n-title para title.
- data-i18n-aria para aria-label.
- data-i18n-placeholder para placeholder.
public/i18n/es.json y public/i18n/en.json, cargado por public/js/ops-i18n.js.es, despues el texto original.phrase.*: ops-i18n.js traduce frases exactas conocidas en texto visible, placeholder, title y aria-label.phrase.* no actua sobre Markdown, code, pre, textarea, contenido editable ni el log del asistente para no reescribir texto de usuario.nav.queue o topbar.newTask.npm run verify:frontend valida que toda clave declarativa data-i18n* exista en public/i18n/es.json y public/i18n/en.json.npm run verify:frontend valida que las claves phrase.* existan de forma simetrica en es y en, con una cobertura minima.Implementado:
ES/EN en la barra superior;phrase.* para frases dinamicas frecuentes en login, tareas, credenciales, despliegues, flujos, proyectos, bloqueos y SaaS/workspaces.Pendiente:
i18nText/data-i18n cuando se refactoricen los modulos;es y en;