en es la configuración regional de origen desde la que traduces y cualquier configuración regional que quede sin traducir volverá a esa configuración.
Tu aplicación tiene dos tipos de texto traducible, y ambos pasan por el mismo catálogo locales/:
- Etiquetas del manifiesto: nombres de objetos y campos, títulos de vistas, elementos de menú y otras cadenas declaradas en los metadatos de tu aplicación.
- Cadenas de componentes delanteros — la interfaz de texto de tus componentes frontales de React.
Marcando cadenas de componentes frontales
Importar los ayudantes de traducción detwenty-sdk/front-component:
Cuándo usar qué
Trans— texto estático en JSX. Usa las propsmessageyvaluespara la interpolación, como enTrans message="Hi {name}" values={{ name }}; la interpolación directamente en los children no se puede extraer de forma estática.useTranslate().t— cadenas dinámicas dentro de un componente. Se vuelve a procesar cuando el usuario cambia de idioma. Preferir esto dentro del render.t(...)(importado directamente) — una traducción entera utilizable en cualquier lugar, incluyendo controladores de eventos, ayudantes y ámbito del módulo — no solo dentro del render.msg(...)— un descriptor perezoso para cadenas declaradas como datos (constantes, configuración ). Resuelva más tarde cont(descriptor).
Contexto
Pasecontext para desambiguar cadenas de origen idénticas que traduzcan
de forma diferente:
"\<context>": { "\<message>": "\<translation>" }. Las etiquetas del manifiesto son
contextuales por construcción: cada una lleva el metadato del rol que desempeña (objectMetadata.labelSingular, fieldMetadata.label, view.name, …), por lo que
la misma palabra puede traducirse de manera diferente como nombre de objeto y como nombre de vista.
Extrayendo y traduciendo
Ejecutar el comando de extracción desde el directorio de la aplicación:t()/msg()/Trans de tu código fuente de front-component en locales/\<locale>.json, indexadas por la cadena de origen. Rellena las traducciones:
{name} se sustituyen en tiempo de ejecución — manténgalos en la traducción
. Cualquier cadena que quede vacía regresa al texto original.
Cómo funciona
twenty dev:build compila los catálogos y sirve el idioma correcto para el
usuario actual: las etiquetas del manifiesto se resuelven del lado del servidor y los catálogos de front-component se incluyen en cada paquete de componente. En tiempo de ejecución, un componente lee la configuración regional
desde su contexto de ejecución (el idioma actual del host) y resuelve
cada cadena contra su catálogo, volviendo a la fuente cuando falta una traducción
. Cambiar el idioma en el host vuelve a renderizar en tiempo real las cadenas de Trans y useTranslate().t.
Las etiquetas de manifiesto se compilan en cada sincronización — twenty dev:build, twenty apply
y también en el modo de observación continuo twenty dev —, por lo que basta con editar un archivo de configuración regional y
sincronizar para ver el nuevo texto. Los catálogos de componentes del front-end se incorporan en
cada paquete de componentes durante la compilación, por lo que cambiar uno de ellos sigue implicando
volver a ejecutar twenty dev:build (y volver a implementar).
Los nodos de texto hijos de Trans pueden abarcar varias líneas; los espacios en blanco se colapsan de la misma manera en que JSX los colapsa, por lo que ambos se extraen a la clave Welcome back: