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

Expo环境下React Native的i18n无法在Alert弹窗生效如何解决?

错误原因

你遇到的问题本质是JSX语法和普通JavaScript语法的使用场景混淆:

  • 花括号{}是JSX专属语法,仅用于在JSX标签的属性、子节点中插入JavaScript表达式,在JSX代码块外使用会被识别为对象声明符号,不符合Alert.alert的参数要求
  • Alert.alert是React Native提供的原生调用API,接收的标题、内容、按钮配置参数均为普通JavaScript值,直接传入表达式即可,不需要额外包裹花括号
修正方案

直接去掉i18n.t()外的花括号,将i18n.t()的返回值作为参数直接传入Alert.alert即可,按钮文本、JSX属性的多语言写法也可以参考下方示例:

<Menu.Item 
  onPress={() => {
    Alert.alert(
      i18n.t('gift_home.title_hide_a_gift'), // 弹窗标题
      i18n.t('gift_home.confirm_hide_gift_tip'), // 弹窗提示内容
      [
        { text: i18n.t('common.confirm'), onPress: () => console.log("确认") },
        { text: i18n.t('common.cancel'), onPress: () => console.log("取消") },
      ]
    )
  }} 
  title={i18n.t('common.report_user')} // JSX属性需要保留花括号包裹表达式
/>
异常排查

如果修改后仍无法正常显示翻译内容,可以优先排查两个常见问题:

  • 对应语言的多语言文件中,你调用的key是否存在,有没有拼写错误
  • 确认调用t方法时,i18n实例已经完成初始化,不存在异步加载语言包未完成就调用方法的情况

内容的提问来源于stack exchange,提问作者Yellow Clock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 21:45:04