2013-04-16 13 views
21

Sto usando i18next per alimentare i18n per il mio weblog. Funziona benissimo sui contenuti di solo testo, ma quando provo a tradurre contenuti che includono il markup HTML, viene visualizzato il markup raw quando traduco il testo.Tag HTML nella traduzione i18next

A titolo di esempio, ecco un frammento di markup da un post che non funziona come previsto:

codice
<div class="i18n" data-i18n="content.body"> 
    In Medellín they have many different types of <i>jugos naturales</i>&nbsp;(fruit juice) ... <br /> 
    <br /> 
    ... 
</div> 

La traduzione è simile al seguente:

var resources = { 
    "en": ..., 
    "es": { 
    "translation": { 
     "content": { 
     "body": "En Medellín hay varios tipos diferentes de <i>jugos naturales</i> ... <br /><br /> ... " 
     } 
    } 
    } 
} 

i18n.init({"resStore": resources}, function(t) { 
    $('.i18n').i18n(); 
}); 

Quando la traduzione è resi, tag HTML sono fuggiti e l'output come testo:

En Medellín hay varios tipos diferentes de &lt;i&gt;jugos naturales&lt;/i&gt;...&lt;br /&gt;&lt;br /&gt; 

come raggiungo i18next per cambiare ° e HTML degli elementi tradotti?

risposta

30

Per fare questo lavoro, è necessario anteporre l'attributo data-i18n degli elementi che si desidera tradurre con [html]:

<div class="i18n" data-i18n="[html]content.body"> 

Fonte: i18next.jquery.js

5

Dal documentation:

Suggerimento 3: In fuga:

// given resources 
{   
    'en-US': { 
    translation: { 
     key1: Not escaped __nameHTML__, 
     key2: Escaped __name__ 
    } 
    } 
}; 

i18n.t("key2", { name: '', escapeInterpolation: true }); // -> Escaped &lt;tag&gt; 
i18n.t("key1", { name: '', escapeInterpolation: false }); // -> Not escaped <tag> 

L'aggiunta del suffisso 'HTML__' al valore impedirà l'escaping anche se l'opzione è impostata su.

È possibile attivare l'escape su init i18n.init({escapeInterpolation: true}); o passare l'opzione alla funzione t come nell'esempio.

+0

Questo non lo fa lavoro –

+0

questo non funziona, l'html è sfuggito a –

7

È necessario disattivare la fuga:

i18n.t("key", { 'interpolation': {'escapeValue': false} })

3
i18n.t('key',{dateStr: date, interpolation: {escapeValue: false}}) 

lavoro per me se la data = '15/10/2020' , barre mantenuto così

+0

ma l'html è ancora scappato, mi chiedo, hai fatto altre impostazioni per l'html da non essere sfuggito? –