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

i18next translation being displayed as unicode hex character

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

我将 title 设置为:

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

翻译调用如下:

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

翻译设置如下:

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

然而输出是:

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

我如何确保字符不会转换为它们的十六进制代码等价物?

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

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

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

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