github项目地址:https://github.com/xutongbao/my-app-intl

参考链接:https://www.npmjs.com/package/react-intl-universal

目录结构:

App.js

import React, { Component } from 'react';

import intl from 'react-intl-universal'

import { withRouter } from "react-router-dom";

class App extends Component {

constructor(props) {

super(props)

this.state = {

initDone: false

}

}

render() {

return (

{intl.get('login.username')}

{intl.get('editor.item.name')}

);

}

}

//生命周期

Object.assign(App.prototype, {

componentDidMount() {

let { location } = this.props

let ps = this.parseQueryString(location.search)

let currentLocale = ps.language || 'zh-CN'

intl.init({

currentLocale: currentLocale,

commonLocaleDataUrls: {

'zh': false,

'en': false

},

locales: {

[currentLocale]: require(`./locales/${currentLocale}`).default

}

}).then(() => {

this.setState({ initDone: true })

})

},

handleLanguage() {

let { location } = this.props

let ps = this.parseQueryString(location.search)

if (ps.language === 'en-US') {

this.props.history.push('?language=zh-CN')

} else if (ps.language === 'zh-CN') {

this.props.history.push('?language=en-US')

} else {

this.props.history.push('?language=en-US')

}

window.location.reload()

},

parseQueryString(url) {

var params = {};

var arr = url.split("?");

if (arr.length <= 1) {

return params;

}

arr = arr[1].split("&");

for (var i = 0, l = arr.length; i < l; i++) {

var a = arr[i].split("=");

params[a[0]] = a[1];

}

return params;

}

})

export default withRouter(App);

 

zh-CH.js

import editor from './zh-CN_Editor.js'

export default ({

login: {

"username": "用户名",

},

editor: editor

})

zh-CN_Editor.js

export default ({

item: {

name: '徐同保'

}

})

en-US.js

import editor from './en-US_Editor.js'

export default ({

login: {

"username": "Username"

},

editor: editor

})

en-US_Editor.js

export default ({

item: {

name: 'Xutongbao'

}

})

 

 

 

参考链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。