2013-04-16 25 views
21

私はウェブログのi18nに電源を供給するのにi18nextを使用しています。テキストのみのコンテンツではうまくいきますが、HTMLマークアップを含むコンテンツを翻訳しようとすると、テキストを翻訳するときに生のマークアップが表示されます。一例として、i18next translationのHTMLタグ

は、ここでは期待通りに動作していないポストからのマークアップの抜粋です:

<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> 

翻訳コードは次のようになります。翻訳がある場合は

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(); 
}); 

私はi18nextが目を変更してもらうにはどうすればよい

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

:レンダリング、HTMLタグがエスケープされており、テキストとして出力翻訳された要素のHTML?

答えて

30

この作業を行うためには、あなたが[html]に翻訳したい要素のdata-i18n属性の前に付ける必要があります:

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

が出典:​​3210からi18next.jquery.js

5

ヒント3:エスケープ:

// 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> 

接尾辞 'HTML__'を値に追加すると、 オプションが設定されていてもエスケープできなくなります。

i18n.init({escapeInterpolation: true});の初期設定でエスケープを有効にするか、サンプルのようにオプションにtオプションを渡すことで有効にすることができます。

+0

にも保たスラッシュ –

+0

これは動作しません、htmlはエスケープ –

7

あなたは脱出オフにする必要があります。私のために

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

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

作業日= '15/2020' 分の10場合は、、これにはない

+0

しかし、htmlはまだエスケープされて、私はあなたがエスケープされないようにHTMLのための他の設定をしたのだろうか? –