Перевести значение TextField - PullRequest
0 голосов
/ 25 января 2019

Некоторые из моих полей хранятся на английском языке в базе данных и переводятся только в клиенте (в этом случае реагирует-администратор).Итак, как мне этого добиться?В моих переводах у меня есть записи для всех возможных значений member_category, и при отображении я хочу, чтобы значение из базы данных было переведено.

export const MemberList = withStyles(listStyles)(({ classes, 
  permissions, ...props }) => (
    <List {...props}>
     <Datagrid rowClick="show">
       <TextField source="full_name" />
       <TextField source="email" />
       <TextField source="telephone" />
       <TextField source="member_category" />
     </Datagrid>
    </List>
));

1 Ответ

0 голосов
/ 28 января 2019

Используйте пользовательский компонент, обертывающий FunctionField вместо TextField.

Используйте react-admin 'translate HOC на нем.

import React from 'react';
import PropTypes from 'prop-types';
import { translate, FunctionField } from 'react-admin';
import get from 'lodash/get';
const TranslateField = translate(( { translate, namespace, ...props } ) => {
    return (
        <FunctionField {...props}
            render={ (record, source) => translate(`${namespace}.${get(record, source)}`) }
        />
    )
});
TranslateField.propTypes = {
    namespace: PropTypes.string
}
TranslateField.defaultProps = {
    namespace: 'dbphrases',
};

export default TranslateField;
export const MemberList = withStyles(listStyles)(({ classes, 
  permissions, ...props }) => (
    <List {...props}>
     <Datagrid rowClick="show">
       <TextField source="full_name" />
       <TextField source="email" />
       <TextField source="telephone" />
       <TranslateField source="member_category" />
     </Datagrid>
    </List>
));

Тогдаэто просто вопрос загрузки правильных переводов в нужном пространстве имен в вашей конфигурации i18n.Здесь я поместил пространство имен dbphrases по умолчанию, чтобы принимать переводы из ${locale}.dbphrases.${value}

См. react-admin документ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...