React — Как изменить язык свойств компонента DataTable в пользовательском интерфейсе material?

#reactjs #datatable #translate

Вопрос:

Я использую компонент пользовательского интерфейса Material с именем DataTable, проблема в том, что поля фильтра на английском языке, и мне было интересно, есть ли какой-либо способ изменить их язык на португальский

ниже мой код компонента:

 import * as React from 'react';
import { DataGrid } from '@mui/x-data-grid';
import { PropTypes } from 'prop-types';

export default function DataTable({ rows, columns }) {
  return (
    <div style={{ height: 400, width: '100%' }}>
      <DataGrid
        rows={rows}
        columns={columns}
        pageSize={5}
        rowsPerPageOptions={[5]}
        checkboxSelection
      />
    </div>
  );
}

DataTable.propTypes = {
  rows: PropTypes.arrayOf(
    PropTypes.shape({
      conteudo: PropTypes.string,
      disciplina: PropTypes.string,
      curso: PropTypes.string,
      data: PropTypes.string,
    })
  ).isRequired,
  // eslint-disable-next-line react/forbid-prop-types
  columns: PropTypes.array.isRequired,
};

 

введите описание изображения здесь

Я хочу перевести «не сортировать, сортировать по Desc, фильтровать, скрывать …» на английский

Ответ №1:

Вы можете локализовать любую текстовую метку DataGrid , передав localeText объектный реквизит DataGrid , подобный этому:

 import { useState } from "react";
import { DataGrid } from "@mui/x-data-grid";

const localizedTextsMap = {
  columnMenuUnsort: "não classificado",
  columnMenuSortAsc: "Classificar por ordem crescente",
  columnMenuSortDesc: "Classificar por ordem decrescente",
  columnMenuFilter: "Filtro",
  columnMenuHideColumn: "Ocultar",
  columnMenuShowColumns: "Mostrar colunas"
};

export default function DataTable({ rows, columns }) {
  const [finalClickInfo, setFinalClickInfo] = useState(null);

  const handleOnCellClick = (params) => {
    setFinalClickInfo(params);
  };

  return (
    <div style={{ height: 400, width: "100%" }}>
      <DataGrid
        rows={rows}
        columns={columns}
        pageSize={5}
        rowsPerPageOptions={[5]}
        checkboxSelection
        onCellClick={handleOnCellClick}
        localeText={localizedTextsMap}
      />
      {finalClickInfo amp;amp;
        `Final clicked id = ${finalClickInfo.id}, 
        Final clicked field = ${finalClickInfo.field}, 
        Final clicked value = ${finalClickInfo.value}`}
      {!finalClickInfo amp;amp; `Click on a column`}
    </div>
  );
}
 

Здесь перечислены все ключи, которые могут быть локализованы.
Вы можете взглянуть на эту изолированную среду для живого рабочего примера такого использования.

Комментарии:

1. Я даже не знаю, как вас благодарить, я искал это веками, большое вам спасибо за вашу доступность

2. спасибо большое. вы знаете, как это использовать? footerTotalVisibleRows: (visibleCount, totalCount) => ${visibleCount.toLocaleString()} de ${totalCount.toLocaleString()} ,

Ответ №2:

Просто чтобы помочь кому-то, если это необходимо. (также меняется нижний колонтитул DataGrid)

В my .jsx я добавил :

 import { DataGrid, **ptBR** } from "@mui/x-data-grid";
<DataGrid localeText={ptBR.props.MuiDataGrid.localeText}
 

результат :

введите описание изображения здесь

поддерживаемые локали: https://material-ui.netlify.app/zh/components/data-grid/localization /