i18n y tema
Traducciones
- Librería:
@ngx-translate/coreconTranslateHttpLoader. Los archivos sonsrc/assets/i18n/es.jsonysrc/assets/i18n/en.json(unas 3900 líneas cada uno); se sirven como assets estáticos desde./assets/i18n/. - Idiomas disponibles (
AVAILABLE_LANGUAGES):esyen. El idioma por defecto eses(loadPreviewLanguagefijaes). - 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
translatecon claves como'connections.instagram.reauthorize' | translate. Los parámetros se pasan con objeto:| translate: { days: expiry.days }.
Idioma efectivo
- Al arrancar,
AppComponentaplica el idioma del store (espor defecto). - Tras autenticarse,
LanguageEffects.tenantAuthenticatedLanguage$tomauser.tenantPreferences.languagey lo cambia al del tenant si esesoen. - Un query param
?lang=en la URL tiene prioridad:AppComponentllama atranslate.usecon él en la carga inicial y en cadaNavigationEnd. DeviceTokenInterceptorenvía el idioma activo al backend en el headerX-Lang, y el socket envíalangenauthenticate.
Tema y layout
- Tema:
light-only(por defecto) odark-only.ThemeEffectslee/escribe la claveThemedelocalStorage;LayoutServiceañade o quita la clasedark-onlyenbody. - Los estilos del chat usan variables CSS definidas en
src/styles.scsscon versión parabody.dark-only, por ejemplo--zg-chat-ack-read,--zg-chat-text-muted,--zg-chat-tooltip-bg. La ramafeat/meta_connectionsañade--zg-chat-ack-failed(#e5484den claro,#ff6b60en 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,expiresSoonOneyerrors.*(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.