i18next翻译显示为unicode十六进制字符

时间:2017-07-17 09:30:53

标签: javascript unicode i18next

我正在使用i18next来处理我正在处理的项目中的翻译,并且当我将字符串传递给包含/的翻译时,我发现它正在转换为unicode十六进制代码/

我将title设置为:

const title = '2/Double/Twin/Triple/Quadrupple'

翻译的内容如下:

{i18n.t('foo', {
  title,
  amount: '$18'
})}

翻译的设置如下:

{
  "foo": "foo bar {{title}} howdee {{amount}}"
}

然而输出是:

Foo bar 2/Double/Twin/Triple/Quadrupple howdee $18

如何确保字符不会转换为十六进制代码?

1 个答案:

答案 0 :(得分:2)

默认情况下,i18next会撤消内容以避免基于用户输入的xss攻击。您可以通过添加-或提供转义标记来关闭转义。

{
  "foo": "foo bar {{- title}} howdee {{amount}}"
}

{i18n.t('foo', {
  title,
  amount: '$18',
  interpolation: { escapeValue: false }
})}

https://www.i18next.com/interpolation.html#unescape