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

React i18n组件外翻译Questions数组prompt 初始化不渲染如何解决?

问题根源

你的代码核心问题是Questions数组在i18n实例初始化完成前就已经提前执行t函数计算了prompt字段的值,此时翻译资源还未加载完成,因此只能拿到原始的翻译key而非翻译内容。此外静态数组初始化后值就固定了,后续切换语言也不会自动更新翻译。


解决方案

方案1(最推荐):将静态数组改为函数返回,动态计算翻译

这种方式可以保证每次拿数组时都是调用当前最新的翻译结果,同时支持切换语言后自动更新:

import i18n from "i18next";

// 改为返回数组的函数,调用时才会执行翻译逻辑
export const getQuestions = () => [
  {
    // 注意你原有代码中字段名为promp,疑似拼写错误,需和你实际使用的字段名保持一致
    prompt: i18n.t("translation1"),
    type: "A",
    type2: "AC",
  },
  {
    prompt: i18n.t("translation2"),
    type: "A",
    type2: "AB",
  },
]

使用时直接调用getQuestions()获取数组即可,需要确保调用时i18n已经完成初始化。


方案2:数组内存储翻译key,使用时再翻译

如果你需要保持静态数组的结构,可以只在数组里存翻译key,在实际使用的位置再调用t函数翻译:

// 数组内仅存储翻译key,不提前执行翻译
export const Questions = [
  {
    promptKey: "translation1",
    type: "A",
    type2: "AC",
  },
  {
    promptKey: "translation2",
    type: "A",
    type2: "AB",
  },
]

在组件或其他逻辑中使用时,执行i18n.t(question.promptKey)即可拿到对应翻译内容。如果是在React组件内使用,推荐搭配react-i18next的useTranslation钩子获取t函数,会自动监听语言变化触发重渲染。


内容的提问来源于stack exchange,提问作者Çağın Berke İspir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:48:03