如何配置i18n避免特殊字符转为HTML转义格式?
解决i18n自动转义HTML特殊字符的问题
你的问题很典型——i18n默认会对翻译内容做HTML转义,目的是防范XSS风险,但如果你的输出场景不是HTML(比如API响应、非网页的文本输出),这个转义就会造成不必要的麻烦。
两种解决方式,按需选择:
1. 全局关闭转义(推荐,适合全项目不需要HTML转义的场景)
在初始化i18n的时候,添加escapeValue: false配置项,彻底关闭自动转义功能:
const i18n = require('i18n'); i18n.configure({ // 你的其他配置(比如 locales、directory 等) escapeValue: false // 关键配置:禁用HTML转义 });
配置完成后,所有i18n.__()的调用都不会再转义特殊字符,你的示例代码会直接得到预期的A & B is here。
2. 单条翻译跳过转义(适合仅部分场景需要关闭转义的情况)
如果只是个别翻译不需要转义,可以在调用__方法时,通过参数指定关闭转义:
var STRING_TO_TRANSLATE = "{{name}} is here"; var translation = i18n.__(STRING_TO_TRANSLATE, { name: "A & B", escape: false // 仅这条翻译跳过转义 });
补充说明
i18n默认开启escapeValue: true是为了安全,当翻译内容要输出到HTML页面时,转义可以避免恶意脚本注入。但像你这种非HTML场景,关闭转义完全没问题,不会有安全风险。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

