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

React-Admin:TranslatableInputs切换标签时标签未翻译的问题求助

解决React-Admin TranslatableInputs切换语言时标签不更新的问题

针对你遇到的<TranslatableInputs>切换语言后标签未同步更新的问题,这里有两个直接可行的解决办法:

方法1:通过key属性强制组件重渲染

利用React的key特性,将当前locale作为<TranslatableInputs>的key值,切换语言时会触发组件重新渲染,从而同步更新标签文本:

import { useLocale } from 'react-admin';
import { TranslatableInputs } from '@react-admin/ra-translate';

const CategoryEdit = () => {
  const locale = useLocale();
  
  return (
    <Edit>
      <SimpleForm>
        {/* 用当前locale作为key,切换语言时强制组件重新渲染 */}
        <TranslatableInputs locales={['en', 'fr', 'cn']} key={locale}>
          <TextInput source="description" />
        </TranslatableInputs>
      </SimpleForm>
    </Edit>
  );
};

方法2:手动控制标签翻译文本

通过useTranslate和useLocale钩子,实时获取当前语言下的标签翻译,直接传递给输入框的label属性:

import { useTranslate, useLocale } from 'react-admin';
import { TranslatableInputs } from '@react-admin/ra-translate';

const CategoryEdit = () => {
  const translate = useTranslate();
  const locale = useLocale();
  // 实时拉取对应语言的标签翻译
  const descriptionLabel = translate(`resources.categories.fields.description.${locale}`);

  return (
    <Edit>
      <SimpleForm>
        <TranslatableInputs locales={['en', 'fr', 'cn']}>
          <TextInput source="description" label={descriptionLabel} />
        </TranslatableInputs>
      </SimpleForm>
    </Edit>
  );
};

问题根源

React-Admin的TranslatableInputs组件默认没有将locale纳入依赖追踪,切换语言时不会自动触发重渲染,导致标签停留在之前的语言版本。上面两种方法分别通过强制重渲染或实时获取翻译文本的方式,解决了标签同步的问题。

另外必须给React-Admin团队点个赞,他们的工具确实极大提升了后台开发效率!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:05:22