en è la locale di origine da cui traduci e
qualsiasi locale lasciato non tradotto usa quella come fallback.
La tua app ha due tipi di testo traducibile, e entrambi passano attraverso lo stesso
catalogo locales/:
- Etichette del manifest — nomi di oggetti e campi, titoli delle viste, voci di menu e altre stringhe dichiarate nei metadati della tua app.
- String dei front-component — il testo dell’interfaccia utente renderizzato dai tuoi front component React.
Contrassegnare le stringhe dei front-component
Importa gli helper di traduzione datwenty-sdk/front-component:
Quando usare cosa
<Trans>…</Trans>— testo statico in JSX. Usa le propmessageevaluesper l’interpolazione (<Trans message="Hi {name}" values={{ name }} />); l’interpolazione direttamente nei children non è estraibile staticamente.useTranslate().t— stringhe dinamiche all’interno di un componente. Esegue il re-render quando l’utente cambia lingua. Preferiscilo all’interno del render.t(...)(importato direttamente) — traduzione eager utilizzabile ovunque, inclusi gestori di eventi, helper e nello scope del modulo — non solo all’interno del render.msg(...)— un descrittore lazy per stringhe dichiarate come dati (costanti, configurazione). Risolvilo in un secondo momento cont(descriptor).
Contesto
Passacontext per distinguere stringhe sorgente identiche che si traducono
in modo diverso:
Estrazione e traduzione
Esegui il comando di estrazione dalla directory della tua app:t()/msg()/\<Trans>
dal sorgente dei tuoi front-component in locales/\<locale>.json, con chiave
la stringa sorgente. Compila le traduzioni:
{name} vengono sostituiti a runtime — mantienili nella
traduzione. Qualsiasi stringa lasciata vuota fa fallback al testo sorgente.
Come viene eseguito
twenty dev:build compila i cataloghi e serve la lingua corretta per l’utente
corrente: le etichette del manifest vengono risolte lato server e i cataloghi dei
front-component vengono inclusi in ogni bundle di componente. A runtime un componente legge la
locale dal proprio contesto di esecuzione (la lingua corrente dell’host) e risolve
ogni stringa rispetto al proprio catalogo, facendo fallback alla sorgente quando
una traduzione manca. Il cambio di lingua nell’host esegue il re-render delle stringhe \<Trans> e
useTranslate().t in tempo reale.
Poiché i cataloghi vengono compilati in fase di build, aggiornare una traduzione significa
eseguire nuovamente twenty dev:build (e ridistribuire), come per qualsiasi altra modifica.
Le traduzioni vengono compilate da
twenty dev:build (e twenty apply). La modalità watch continua di twenty dev mostra le stringhe sorgente, quindi testa l’output localizzato
con una build una tantum.<Trans> possono estendersi su più righe — gli spazi bianchi vengono compressi
nello stesso modo in cui JSX li comprime, quindi <Trans>Welcome\n back</Trans> e la chiave estratta
diventano entrambi Welcome back.