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

Greeting.jsx
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:

  1. Non devi creare una traduzione per ogni possibile nome.
    • Usando <Var>, generiamo un’unica traduzione che in pratica sarebbe così:
      • ¡Hola, $&#123;name&#125;!
    • Se non usiamo <Var>, dovremmo eseguire una traduzione on demand per ogni nome univoco:
      • "¡Hola, Alice!", "¡Hola, Bob!", "¡Hola, Charlie!", "¡Hola, David!", ...
  2. 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?

Contenuto dinamico