在多语言i18next nextJs网站中使用JSON中的HTML

ali*_*eza 0 html json reactjs next.js

我有多语言的 next js 网站。

我使用 packge i18next。我像这样在 jsx 中定义变量。

{t("satisfied:title")}
Run Code Online (Sandbox Code Playgroud)

它的意思是

{t("JSONflieName:JSONvariable")}
Run Code Online (Sandbox Code Playgroud)

但在 json 文件中我不能使用 HTML,它显示像字符串一样

"title" : "this is my<br \/> <span class=\"test\"> test <\/span> title"
Run Code Online (Sandbox Code Playgroud)

小智 6

出于安全原因,React 对 HTML 实体进行了转义。为了让你的翻译呈现实际的 HTML,你可以这样做:

<div dangerouslySetInnerHTML={{ __html: t("satisfied:title")}} />
Run Code Online (Sandbox Code Playgroud)

但是,我强烈建议您不要上面那样做。您真正应该注意的是将 HTML 放入您的翻译文本中。如果这些翻译在某个时候由外部翻译人员管理,他们可能不熟悉 HTML 语法。您相信这些翻译人员不会意外破坏您的用户界面吗?你不应该。

相反,您应该使用高级概念来使用此技术处理上述情况:https://react.i18next.com/latest/trans-component