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

react-intl中formatMessage处理字符串数组翻译失效问题求助

问题分析与解决方案

问题根源

你的代码中,tableDataMapper处理roleNames时直接将整个数组传入formatMessage,但formatMessage的id参数需要单个字符串。当roleNames包含多个元素(数组)时,无法正确解析,导致翻译失效。

修复方案

修改tableDataMapper中roleNames的处理逻辑,遍历数组中的每个角色,逐个翻译后拼接:

tableDataMapper={(rows) => {
    return rows?.map((row: any) => {
        let translatedRoles = '';
        // 处理角色数组的翻译
        if (Array.isArray(row?.roleNames)) {
            translatedRoles = row.roleNames.map(role => {
                return formatMessage({ id: role });
            }).join(', '); // 用逗号分隔多个角色,可按需调整分隔符
        } else if (row?.roleNames) {
            // 单个角色的情况
            translatedRoles = formatMessage({ id: row.roleNames });
        }

        return {
            ...row,
            roleNames: translatedRoles
        };
    });
} }

额外说明

  • 代码中用逗号分隔多个翻译后的角色,你可以根据界面需求替换为其他分隔符(如换行符\n、分号等)。
  • 增加了空值判断,避免roleNames为undefined或空数组时出现报错。

内容的提问来源于stack exchange,提问作者Hiba Youssef

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:25:18