提交 998fa881 编写于 作者: B Benjy Cui

feat: Table should support i18n

上级 51a2798e
# 国际化
- order: 15
`locale` 设置表格的排序、过滤按钮的文字或 `title`
---
````jsx
import { Table } from 'antd';
const columns = [{
title: 'Name',
dataIndex: 'name',
filters: [{
text: 'Starts with A',
value: '^[aA]'
}, {
text: 'Starts with B',
value: '^[bB]'
}],
onFilter: function(value, record) {
return new RegExp(value).test(record.name);
},
}, {
title: 'Age',
dataIndex: 'age',
sorter: function(a, b) {
return a.age - b.age;
}
}, {
title: 'Address',
dataIndex: 'address'
}];
const data = [{
key: '1',
name: 'Alice',
age: 32,
address: 'Somewhere'
}, {
key: '2',
name: 'Bob',
age: 42,
address: 'Somewhere'
}, {
key: '3',
name: 'Candy',
age: 32,
address: 'Somewhere'
}];
const locale = {
sortAscend: 'Sort ascending',
sortDescend: 'Sort descending',
filterTitle: 'Filter',
filterConfirm: 'Confirm',
filterReset: 'Reset'
};
ReactDOM.render(
<Table columns={columns} dataSource={data} locale={locale} />,
document.getElementById('components-table-demo-locale')
);
````
......@@ -48,7 +48,7 @@ let FilterMenu = React.createClass({
return menuItems;
},
render() {
let column = this.props.column;
let {column, locale} = this.props;
// default multiple selection in filter dropdown
let multiple = true;
if ('filterMultiple' in column) {
......@@ -69,7 +69,7 @@ let FilterMenu = React.createClass({
pointerEvents: 'visible'
}}
onClick={this.handleConfirm}>
确定
{locale.filterConfirm}
</a>
<a className="ant-table-filter-dropdown-link clear"
style={{
......@@ -77,7 +77,7 @@ let FilterMenu = React.createClass({
pointerEvents: 'visible'
}}
onClick={this.handleClearFilters}>
重置
{locale.filterReset}
</a>
</Menu.Item>
</Menu>;
......@@ -92,7 +92,7 @@ let FilterMenu = React.createClass({
visible={this.state.visible}
onVisibleChange={this.onVisibleChange}
closeOnSelect={false}>
<Icon title="筛选" type="bars" className={dropdownSelectedClass} />
<Icon title={locale.filterTitle} type="bars" className={dropdownSelectedClass} />
</Dropdown>;
}
});
......
......@@ -16,6 +16,15 @@ function defaultResolve(data) {
return data || [];
}
const defaultLocale = {
sortAscend: '升序排序',
sortDescend: '降序排序',
filterTitle: '筛选',
filterConfirm: '确定',
filterReset: '重置'
};
class DataSource {
init(config) {
this.config = config;
......@@ -69,8 +78,8 @@ let AntTable = React.createClass({
size: 'default',
loading: false,
bordered: false,
onChange: function () {
}
onChange: noop,
locale: {}
};
},
......@@ -398,6 +407,7 @@ let AntTable = React.createClass({
},
renderColumnsDropdown(columns) {
let locale = objectAssign({}, defaultLocale, this.props.locale);
return columns.map((column, i) => {
column = objectAssign({}, column);
let key = this.getColumnKey(column, i);
......@@ -405,7 +415,7 @@ let AntTable = React.createClass({
if (column.filters && column.filters.length > 0) {
let colFilters = this.state.filters[key] || [];
filterDropdown =
<FilterDropdown column={column}
<FilterDropdown locale={locale} column={column}
selectedKeys={colFilters}
confirmFilter={this.handleFilter}/>;
}
......@@ -417,16 +427,17 @@ let AntTable = React.createClass({
column.className += ' ant-table-column-sort';
}
}
sortButton = <div className="ant-table-column-sorter">
<span className={'ant-table-column-sorter-up ' +
((isSortColumn && this.state.sortOrder === 'ascend') ? 'on' : 'off')}
title="升序排序"
title={locale.sortAscend}
onClick={this.toggleSortOrder.bind(this, 'ascend', column)}>
<Icon type="caret-up"/>
</span>
<span className={'ant-table-column-sorter-down ' +
((isSortColumn && this.state.sortOrder === 'descend') ? 'on' : 'off')}
title="降序排序"
title={locale.sortDescend}
onClick={this.toggleSortOrder.bind(this, 'descend', column)}>
<Icon type="caret-down"/>
</span>
......
......@@ -72,6 +72,7 @@ var dataSource = new Table.DataSource({
| expandIconAsCell | 设置展开 Icon 是否单独一列 | Boolean | | true |
| onChange | 分页、排序、筛选变化时触发 | Function(pagination, filters, sorter) | | |
| loading | 页面是否加载中 | Boolean | | false |
| locale | 设置排序、过滤按钮的文字或 `title` | Object | | [默认值](https://github.com/ant-design/ant-design/issues/575#issuecomment-159169511) |
### Column
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册