You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React使用useTranslation()无法正常显示双大括号问题如何解决

问题原因

react-i18next 默认使用 {{ 和 }} 作为插值变量的标识,替换完第一层变量后,会继续扫描结果中的双大括号尝试二次插值。你传入的 param 中的 {{someString}} 会被识别为未定义的插值变量,最终被替换为空,所以无法得到预期输出。

解决方案

方案1:关闭二次插值(推荐)

在调用 t() 函数时添加配置,禁止对替换后的变量内容做二次插值处理,代码修改如下:

import React from 'react';
import { useTranslation } from 'react-i18next';

export function MyComponent() {
    const { t } = useTranslation()
    const param = "{{someString}}"
    return <p>{t('translate', {param}, { interpolation: { skipOnVariables: true } })}</p>   
}

这个方案不需要修改翻译配置,只调整当前调用的逻辑,不会影响其他翻译项的功能,适配你当前动态传入带双大括号参数的场景。

方案2:转义固定双大括号内容

如果是翻译文本里固定要输出双大括号,不需要动态传参替换,可以直接在翻译配置里用双反斜杠转义大括号:

"translate": "my output string \\{\\{someString\\}\\}"

调用时不需要传入param参数,直接写 t('translate') 即可输出预期结果。

方案3:修改全局插值标识

如果项目里大量需要原样输出双大括号,可以在i18next的初始化配置中修改插值的前缀和后缀,替换为其他不常用的符号:

i18n.init({
  // 其他原有配置
  interpolation: {
    prefix: '[[',
    suffix: ']]',
  }
})

调整后翻译配置里的插值变量统一用 [[param]] 写法即可,所有双大括号都会被默认原样保留。该改动是全局的,需要同步调整所有已有的翻译配置,更适配新项目或者全量改造的场景。

内容的提问来源于stack exchange,提问作者calvin fredicson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 20:15:03