Skip to content

feat(windows): elegir el idioma desde el inicio de la instalación #233

Open

Description

@egdev6

Pre-flight checks

  • I searched existing issues and found no duplicate.
  • I understand that this proposal requires product review before implementation.

La búsqueda de duplicados la realizó el agente; el mantenedor confirmó expresamente la revisión previa a implementación.

Problem to solve

El usuario que instala Quorb en Windows debe poder elegir el idioma desde el primer contacto, antes de ver la interfaz normal en un idioma predeterminado. Actualmente el idioma de la aplicación parte de español y se cambia desde Ajustes; eso obliga a recorrer la interfaz antes de elegirlo.

Petición del mantenedor: «yo quiero que la persona que lo instale elija desde le minuto 0 el idioma».

Proposed solution

Presentar Español / English como primera interacción del instalador interactivo de Windows, antes de sus demás pantallas. Continuar la instalación en el idioma elegido y trasladar esa elección al primer inicio de Quorb, de modo que la tira, los ajustes y las demás superficies no aparezcan primero en otro idioma.

Criterios propuestos:

  • La selección explícita precede al resto del flujo interactivo de instalación.
  • La elección se aplica tanto al instalador como al primer inicio de la aplicación, en las superficies que ya cuentan con traducción.
  • La selección queda guardada y sigue siendo modificable desde Ajustes.
  • Actualizar o reinstalar no sobrescribe una preferencia existente sin decisión del usuario.
  • La detección del idioma del sistema puede ayudar, pero no sustituye la elección solicitada.

Antes de implementar, concretar el alcance para EXE/NSIS y MSI y el comportamiento de instalaciones silenciosas. No asumir que el idioma del instalador se transfiere automáticamente a la configuración de la aplicación.

Affected area

Application behavior

Scope and non-goals

Windows. Selección inicial de los idiomas ya disponibles (español e inglés) y continuidad de esa elección en la aplicación. Esta propuesta no autoriza implementación, cambios de firma/publicación ni modificaciones en macOS o Linux. No incluye un asistente de proveedores, credenciales o configuraciones básicas, ni completar toda la traducción pendiente.

Alternatives considered

  • Elegir el idioma después desde Ajustes: no satisface la elección desde el primer contacto.
  • Detectarlo automáticamente sin pedir elección: no satisface la selección explícita solicitada.
  • Seleccionarlo solo en el primer inicio de la aplicación: alternativa si un formato de instalación no permite el requisito; requiere decisión explícita de producto.

Activity

  1. added
    oddTrabajo coordinado mediante planificación ODD aprobada
    on Nov 5, 2026
  2. egdev6 commented on Nov 13, 2026

    @egdev6
    OwnerAuthor

    Revisión ODD aprobada: quorb-233-language-v1

    Objetivo y motivo

    Permitir elegir Español/English desde la primera interacción del instalador EXE/NSIS de Windows y trasladar esa elección al primer uso de Quorb sin mostrar antes la interfaz normal en otro idioma. Se aprueba expresamente la excepción de MSI y de instalaciones silenciosas descrita abajo, para mantener acotado este trabajo.

    Alcance vigente completo

    Camino Comportamiento aprobado
    EXE/NSIS interactivo Selector explícito Español/English antes de las demás pantallas. El instalador continúa en ese idioma. En una instalación nueva, la app recibe la elección y la guarda antes de mostrar la UI normal, sin preguntar dos veces.
    MSI interactivo Se mantiene la distribución MSI y su flujo de instalación actual. La elección explícita de idioma ocurre al primer inicio de la app, reutilizando el selector compartido. Esta es una excepción aprobada al requisito original de elegir dentro del instalador.
    Instalación silenciosa/pasiva Sin diálogos durante la instalación ni nuevos flags públicos. Se conservan las preferencias existentes; una instalación nueva deja la elección explícita para el primer inicio interactivo de Quorb.
    Actualización/reinstalación No sobrescribe el idioma guardado. La app sigue permitiendo cambiarlo desde Ajustes. La elección del idioma del instalador no fuerza un cambio en una configuración existente.

    El traspaso de la elección debe corresponder al mismo usuario y canal. El instalador no reescribe config.json ni datos de la app. La app valida la elección y reutiliza locale, localeSelected y el arranque compartido. F0 debe resolver el transporte y su ciclo de vida, incluida la cancelación, sin aplicar elecciones obsoletas ni confundir configuraciones existentes, legadas o ilegibles con una instalación nueva. No se da por hecho que Tauri haga ese traspaso automáticamente.

    Exclusiones

    Sin cambios de firma/notarización, política del updater, ejecución/publicación de releases, comportamiento de macOS/Linux, nuevo sistema i18n, asistente de proveedores/credenciales ni limpieza de datos existentes. No se elimina el artefacto MSI ni se incorpora un instalador o bootstrapper MSI personalizado en este alcance.

    Dependencias

    Criterios de aceptación

    • NSIS interactivo pide una elección explícita ES/EN antes del resto del instalador; la detección del sistema no sustituye esa elección.
    • En una instalación nueva por NSIS, instalador y primer uso normal de la app respetan la elección; esta queda guardada antes de mostrar la UI normal y no aparece un segundo selector.
    • En una instalación nueva por MSI, el selector compartido aparece antes de la UI normal; elegir ES/EN se conserva y sigue siendo modificable desde Ajustes.
    • La instalación silenciosa/pasiva no abre diálogos de idioma; la primera apertura interactiva pregunta sólo cuando corresponda a una instalación nueva.
    • Actualizaciones/reinstalaciones conservan el idioma y los demás datos. Se mantiene la política actual para configuraciones legadas o ilegibles, sin tratarlas como nuevas.
    • El traspaso acepta sólo los idiomas soportados, no cruza usuarios/canales y no reutiliza elecciones abandonadas o canceladas.
    • La primera muestra no expone textos del idioma contrario, incluso con carga lenta de configuración; se valida junto con bug(widget): la red de seguridad muestra la tira con el idioma por defecto antes de leer la configuración #271.
    • Se mantienen ambos artefactos Windows y no cambia el comportamiento de primer inicio de macOS/Linux.

    Orientación

    Puntos de entrada: src-tauri/tauri.conf.json, src-tauri/installer/hooks.nsh, src-tauri/src/config.rs, el arranque y choose_locale de src-tauri/src/lib.rs, y src/LocalePicker.tsx. Conservar la protección de datos existente en los hooks de desinstalación.

    La configuración estándar de Tauri ofrece selector multidioma en NSIS; en WiX, una lista de idiomas genera MSI separados. Eso no equivale a un selector dentro del mismo MSI. Referencia: https://v2.tauri.app/distribute/windows-installer/

    ODD progresivo

    Fase Resultado Validación Condición de salida
    F0: contrato técnico Resolver el traspaso por usuario/canal, cancelación y compatibilidad con configuraciones existentes. Inspección del flujo real de instalación y pruebas aisladas del mecanismo propuesto. Contrato verificable definido; cualquier cambio de este alcance requiere revisión antes de programar.
    F1: contratos y tests Cubrir instalación nueva, existente, legada, ilegible y elección inválida. Tests focalizados previos al cambio, con datos ficticios. Los casos prueban los comportamientos de aceptación y muerden antes del arreglo.
    F2: NSIS y consumo en la app Selector al inicio, traspaso seguro y persistencia antes de UI. ES/EN, ausencia de doble selector y conservación de preferencias. Flujo NSIS cumple el contrato de F0.
    F3: MSI y modos no interactivos Aplicar el selector compartido al primer inicio según la excepción aprobada. MSI interactivo, instalación silenciosa/pasiva y actualizaciones; regresión macOS/Linux. No aparecen diálogos indebidos ni se sobrescriben elecciones existentes.
    F4: validación Windows y documentación Comprobar instalación, actualización, reinstalación y cancelación en un entorno aislado. Suites automáticas, pruebas funcionales Windows con datos ficticios, documentación e inventario i18n. Evidencia de aceptación completa, incluida la coordinación con #271; entrega preparada para revisión, no integración automática.

    Comprobaciones previstas

    Tests focales de contratos/configuración/arranque y regresión, npm test, npm run typecheck, npm run build, cargo test --locked, formato Rust y comprobación del inventario i18n. Regenerar el inventario contra el árbol commiteado cuando corresponda. Añadir evidencia funcional del instalador Windows en un entorno aislado, sin cuentas ni credenciales reales.

    Estas comprobaciones están planificadas; no se han ejecutado como parte de la preparación ODD.

    Coordinación y entrega

    Milestone 3, sin cambiar su prioridad ni prometer una versión o fecha. Antes de empezar hay que revalidar issue, comentarios, dependencias y PR relacionadas; identificar al contribuidor y verificar la asignación según CONTRIBUTING. Esta revisión no presenta el trabajo como listo mientras falte el contrato de F0 y su validación.

    Tests y documentación acompañan el comportamiento en la futura PR. Asignación, implementación, commits, push, apertura de PR, merge y release son operaciones posteriores con sus autorizaciones y comprobaciones correspondientes.

    Enlace desde el roadmap

    El índice #45 enlazará esta revisión como alcance/ODD vigente de #233, conservando las demás entradas y el historial.

  3. self-assigned this
    on Nov 13, 2026
  4. added a commit that references this issue on Nov 13, 2026
  5. egdev6 commented on Nov 13, 2026

    @egdev6
    OwnerAuthor

    Estado: F0–F3 integradas, pendiente F4

    Pendiente para cerrar:

    Limitaciones conocidas (aceptadas):

    • Si NSIS recuerda un idioma de una instalación anterior, no vuelve a mostrar el selector (comportamiento estándar de MUI2).
    • Si la carpeta de configuración es un enlace simbólico roto y existe una configuración legada, Windows mostrará el selector.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

oddTrabajo coordinado mediante planificación ODD aprobadatype:featureNew functionality

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions