Skip to main content

i18n y tema

Traducciones​

  • Librería: @ngx-translate/core con TranslateHttpLoader. Los archivos son src/assets/i18n/es.json y src/assets/i18n/en.json (unas 3900 líneas cada uno); se sirven como assets estáticos desde ./assets/i18n/.
  • Idiomas disponibles (AVAILABLE_LANGUAGES): es y en. El idioma por defecto es es (loadPreviewLanguage fija es).
  • Secciones de primer nivel relevantes: common, sidebarMenu, tickets, connections, messages, whaticket, settings, departments, internalChat, scheduledMessages, accessControl, auth, words, btn. El archivo conserva además secciones de un backoffice anterior (players, casinoManagement, sportManagement, financial, ...).
  • Las plantillas usan el pipe translate con claves como 'connections.instagram.reauthorize' | translate. Los parámetros se pasan con objeto: | translate: { days: expiry.days }.

Idioma efectivo​

  1. Al arrancar, AppComponent aplica el idioma del store (es por defecto).
  2. Tras autenticarse, LanguageEffects.tenantAuthenticatedLanguage$ toma user.tenantPreferences.language y lo cambia al del tenant si es es o en.
  3. Un query param ?lang= en la URL tiene prioridad: AppComponent llama a translate.use con él en la carga inicial y en cada NavigationEnd.
  4. DeviceTokenInterceptor envía el idioma activo al backend en el header X-Lang, y el socket envía lang en authenticate.

Tema y layout​

  • Tema: light-only (por defecto) o dark-only. ThemeEffects lee/escribe la clave Theme de localStorage; LayoutService añade o quita la clase dark-only en body.
  • Los estilos del chat usan variables CSS definidas en src/styles.scss con versión para body.dark-only, por ejemplo --zg-chat-ack-read, --zg-chat-text-muted, --zg-chat-tooltip-bg. La rama feat/meta_connections añade --zg-chat-ack-failed (#e5484d en claro, #ff6b60 en oscuro) para el estado failed.
  • La plantilla visual (ContentComponent) soporta varios layouts seleccionables con ?layout= (ver Rutas).

Cambios de i18n en la rama feat/meta_connections​

Ambos idiomas incorporan:

  • connections.instagram.*: setupTitle, linkedAs, completeSetup, namePlaceholder, reauthorize, connected, expiresSoon, expiresSoonOne y errors.* (notConfigured, denied, invalid_state, exchange_failed, subscription_failed, account_in_use, account_mismatch, connection_not_found, unknown).
  • messages.failure.*: out_of_window, auth_error, rate_limited, unsupported_media, recipient_unavailable, unknown.

Detalle de uso en Conexiones Meta y Estado failed. El diff de es.json es mayor que el de en.json (69 vs 31 líneas) porque además de las claves nuevas reescribe textos existentes del voseo (por ejemplo "Intentá de nuevo") a español neutro ("Inténtalo de nuevo"); el mismo cambio se hizo en el texto de notificaciones bloqueadas de header.component.ts.