Tradurre contenuti
Contrassegna il contenuto che vuoi tradurre con Magic Translate. Il contenuto originale viene mostrato fino al caricamento della traduzione.
L'elemento <t>
Inserisci il testo in un elemento <t> per tradurlo. Può contenere HTML:
<t>This content will be translated</t><t>Click <a href="/sale">here</a> to see <b>today's</b> deals.</t>
Anche <mt-translate> funziona, se preferisci un nome di elemento personalizzato.
L'attributo data-t
Se non riesci ad aggiungere un elemento wrapper, aggiungi data-t all'elemento esistente per tradurne il contenuto:
<title data-t>My online shop</title><select><option data-t>Small</option><option data-t>Large</option></select>
Attributi
Elenca gli attributi da tradurre in data-t-attrs, separati da spazi:
<input placeholder="Search products" data-t-attrs="placeholder" /><img src="team.jpg" alt="Our team" title="Say hi" data-t-attrs="alt title" />
Variabili
Inserisci i valori che cambiano, come un nome o un conteggio, in data-v come oggetto JSON e fai riferimento ad essi come $name:
<t data-v='{"name": "Bob", "count": 7}'>Hi $name, you have $count new messages</t><input placeholder="Search $count products" data-t-attrs="placeholder" data-v='{"count": 3}' />
Magic Translate traduce il testo attorno ai valori una volta, come Hi {0}, you have {1} new messages, e reinserisce i valori nella pagina. La traduzione è memorizzata nella cache e funziona per ogni nome e conteggio, e i valori stessi non vengono mai inviati a Magic Translate.
Per mostrare nuovi valori, cambia data-v. La traduzione memorizzata nella cache viene riutilizzata e non viene fatta alcuna richiesta:
element.dataset.v = JSON.stringify({ name: 'Bob', count: 8 });
I valori sono numerati nell'ordine in cui appaiono per la prima volta. La traduzione può spostarli ovunque la lingua ne abbia bisogno, ad esempio {1} neue Nachrichten für {0}.
Alcune regole:
- Vengono sostituite solo le chiavi
data-v, quindi un testo come$5rimane così com'è. Se due tasti iniziano nello stesso modo, ad esempiocountecounts, vince quello più lungo. - Lo stesso nome può apparire più di una volta.
- I valori vengono inseriti come testo, mai come HTML. Inserisci invece un markup nel testo che li circonda:
Hi <b>$name</b>. - Nel contenuto, le variabili vengono sostituite solo nel testo, non in attributi come
hrefotitle. - Se
data-vnon è un oggetto JSON valido, il testo non viene tradotto e viene registrato un avviso. Una chiave che non appare nel testo registra anche un avviso. $nameè visibile fino al caricamento dello script. Carica lo script all'inizio della pagina o nascondi questi elementi fino ad allora.
Opzioni
Usa questi attributi per impostare le opzioni per un singolo elemento:
| Attributo | Valore | Descrizione |
|---|---|---|
data-formality | informal o formal | Imposta la formalità della traduzione. |
data-lang | un codice linguistico | Sostituisce la lingua della pagina. |
data-t-id | un ID | Ti consente di modificare questo uso del testo da solo. Si applica al contenuto dell'elemento, non al suo data-t-attrs. |
<t data-lang="fr" data-formality="formal">How are you?</t>
Contenuti che cambiano
Anche i contenuti aggiunti alla pagina in un secondo momento, o modificati dai tuoi script, vengono tradotti. Funziona per i contenuti renderizzati da JavaScript, ad esempio con htmx o jQuery.
Tutte le traduzioni richieste contemporaneamente vengono inviate all'API in un'unica richiesta e le traduzioni vengono memorizzate nella cache. Puoi contrassegnare tutti gli elementi che desideri.
Limitazioni
Il contenuto di un singolo elemento non può superare i 10 KB, ovvero circa 5.000 caratteri. Gli elementi annidati vengono tradotti come parte dell'elemento <t> principale.