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

old*_*cho 3 javascript unicode i18next

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

我设置title为:

const title = '2/Double/Twin/Triple/Quadrupple'
Run Code Online (Sandbox Code Playgroud)

翻译的名称如下:

{i18n.t('foo', {
  title,
  amount: '$18'
})}
Run Code Online (Sandbox Code Playgroud)

翻译设置如下:

{
  "foo": "foo bar {{title}} howdee {{amount}}"
}
Run Code Online (Sandbox Code Playgroud)

但是输出是:

Foo bar 2/Double/Twin/Triple/Quadrupple howdee $18
Run Code Online (Sandbox Code Playgroud)

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

jam*_*uhl 6

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

{
  "foo": "foo bar {{- title}} howdee {{amount}}"
}
Run Code Online (Sandbox Code Playgroud)

或者

{i18n.t('foo', {
  title,
  amount: '$18',
  interpolation: { escapeValue: false }
})}
Run Code Online (Sandbox Code Playgroud)

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