UNPKG

2.2 kBJavaScriptView Raw
1/**
2 *
3 * @title 项目中使用,及切换语言
4 * @description Locale组件通过context传递语言包,子组件通过contextTypes获取context上的beeLocale语言包对象。
5 *
6 */
7
8import React, {Component} from 'react';
9import Locale from '../../src';
10import PropTypes from 'prop-types';
11import Popconfirm from 'bee-popconfirm';
12import Button from 'bee-button';
13import ZhCn from "../../src/zh-cn";
14import En from "../../src/en_US";
15
16class DemoButton extends Component{
17 render() {
18 let localeText = this.context.beeLocale.DemoButton.text;
19 return (
20 <div style={{ marginBottom: 20}}>
21 <Button onClick={this.props.onChangeLang} colors="primary">
22 {localeText}
23 </Button>
24 </div>
25
26 )
27 }
28}
29DemoButton.contextTypes = {
30 beeLocale: PropTypes.object
31}
32
33let en = {
34 ...En,
35 DemoButton: {
36 text: 'Change Language'
37 },
38 PopconfirmContent: {
39 content: 'Do you like tinper-bee UI library?' ,
40 buttonText: 'see right'
41 }
42};
43
44let zhCn = {
45 ...ZhCn,
46 DemoButton: {
47 text: '切换语言'
48 },
49 PopconfirmContent: {
50 content: '你喜欢tinper-bee组件库吗?' ,
51 buttonText: '看右边'
52 }
53};
54
55
56
57class Demo1 extends Component {
58 state = {
59 lang: zhCn
60 }
61 handleChangeLang = () => {
62 let { lang } = this.state;
63 if(lang.lang === 'zh-cn'){
64 this.setState({
65 lang: en
66 })
67 }else{
68 this.setState({
69 lang: zhCn
70 })
71 }
72
73 }
74 render() {
75 let { lang } = this.state;
76
77 return (
78 <Locale locale={lang}>
79 <div>
80 <DemoButton onChangeLang={this.handleChangeLang} />
81 <Popconfirm
82 trigger="click"
83 placement="right"
84 content={lang.PopconfirmContent.content}>
85 <Button colors="primary">{lang.PopconfirmContent.buttonText}</Button>
86 </Popconfirm>
87 </div>
88
89 </Locale>
90 )
91 }
92}
93
94export default Demo1;
\No newline at end of file