react-admin 翻译输入字段的默认值

react-admin translate defaultValue for input field

我想按照 here. Also I want to have the default values translated as described here 所述为创建视图定义默认值。我导入了高阶组件并尝试将翻译用作函数。

import { translate } from 'react-admin';

export const PostCreate = (props) => (
<Create {...props}>
    <SimpleForm>
        <TextInput source="title" defaultValue={translate('resources.posts.defaultTitle')} />        
    </SimpleForm>
</Create> );

我收到以下错误:

TypeError: Cannot call a class as a function

也许这是一个缺失的功能?例如,标签属性会自动翻译。

resources变量从何而来?我没有在您的示例中看到它被导入。

或者,translate 的参数必须是一个字符串。 您是否尝试过类似的东西:

translate('resources.posts.defaultTitle')

你的做法似乎没有错。也就是说,我不知道 React Admin 的默认翻译 API 公开了 resources.posts.defaultTitle

不要忘记声明您的自定义翻译:

import React from 'react';
import { Admin, Resource } from 'react-admin';
import englishMessages from 'ra-language-english';
import frenchMessages from 'ra-language-french';

const customMessages = {
    fr: {}, // custom french
    en: {}, // custom english
};   

const messages = {
    fr: frenchMessages,
    en: englishMessages,
};
const i18nProvider = locale => { ...messages[locale], ...customMessages[locale] };

const App = () => (
    <Admin locale={resolveBrowserLocale()} i18nProvider={i18nProvider}>
        ...
    </Admin>
);

react-admin导出的translate函数是一个HOC

import { translate } from 'react-admin';

const PostCreateView = ({ translate, ...props }) => (
<Create {...props}>
    <SimpleForm>
        <TextInput source="title" defaultValue={translate('resources.posts.defaultTitle')} />        
    </SimpleForm>
</Create> );

const PostCreate = translate(PostCreateView);