Contenuto dinamico
Breve panoramica sul lavoro con il contenuto dinamico in GT.
Panoramica
Il contenuto dinamico è in generale qualsiasi contenuto che può cambiare in base all’utente, al contesto, all’ambiente, ecc. Questo è in contrasto con il contenuto statico, che rimane lo stesso a prescindere da utente, contesto, ambiente, ecc.
"Tradurre o non tradurre"
A volte vogliamo tradurre contenuti dinamici, altre volte preferiamo che restino invariati.
Un buon esempio è l’indirizzo email o il nome di un utente. Un altro esempio è il saldo di un conto bancario o il codice SSN di un utente. Questi elementi (1) di norma non richiedono traduzione quando l’app viene renderizzata in un’altra lingua e (2) possono variare (in questo caso da utente a utente).
Esempio
import { T, Var } from 'gt-next'
export default function Greeting(name) {
return (
<T id='greeting'>
Ciao, <Var>{name}</Var>!
</T>
);
}Per quanto riguarda la traduzione, questo offre due vantaggi:
- Non devi creare una traduzione per ogni possibile nome.
- Usando
<Var>, generiamo un’unica traduzione che in pratica sarebbe così:¡Hola, ${name}!
- Se non usiamo
<Var>, dovremmo eseguire una traduzione on demand per ogni nome univoco:- "¡Hola, Alice!", "¡Hola, Bob!", "¡Hola, Charlie!", "¡Hola, David!", ...
- Usando
- Inoltre, non devi preoccuparti che i nomi vengano trasformati in una versione tradotta: (ad es. "¡Hola, Alicia!", "¡Hola, Roberto!", ...).
Come puoi vedere, il componente <Var> dovrebbe essere usato per racchiudere qualsiasi contenuto che debba rimanere invariato a prescindere dalla lingua/locale.
In questo modo, evitiamo di dover creare traduzioni per ogni possibile valore del contenuto dinamico.
Racchiudendo le informazioni private in un componente <Var>, puoi assicurarti che tali informazioni non vengano inviate alla General Translations API.
Eccezioni
Le eccezioni a quanto sopra sono: (1) nel caso di un componente <T> annidato all’interno di un componente <Var> (i figli del componente <T> annidato verranno tradotti),
oppure (2) quando i dati vengono passati intenzionalmente alla nostra API tramite altri mezzi all’interno di un figlio del componente <Var> (ad es. una fetch).
Tuttavia, questo non è l’uso previsto del componente <Var> né della General Translations API e farlo può peggiorare i tempi di caricamento e le prestazioni.
Come valuti questa guida?