diff --git a/.eslintignore b/.eslintignore index 1ee2668e7..e69de29bb 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +0,0 @@ -src/components/SurahInfo/htmls/* diff --git a/karma.conf.js b/karma.conf.js index d21d97f4a..ac9b1aa40 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -13,17 +13,19 @@ module.exports = function(config) { 'karma-sinon', 'karma-webpack', 'karma-chrome-launcher', - 'karma-phantomjs-launcher' + 'karma-phantomjs-launcher', + 'karma-intl-shim' ], // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'chai-sinon', 'sinon'], + frameworks: ['mocha', 'chai-sinon', 'sinon', 'intl-shim'], // list of files / patterns to load in the browser files: [ './node_modules/phantomjs-polyfill/bind-polyfill.js', './tests/polyfill/Event.js', + './node_modules/Intl/locale-data/jsonp/en-US.js', {pattern: 'static/images/*', watched: false, included: false, served: true}, // Actual tests here diff --git a/package.json b/package.json index 6ffb5c67b..9c22ed569 100644 --- a/package.json +++ b/package.json @@ -113,6 +113,7 @@ "url-loader": "0.5.7", "webpack": "2.1.0-beta.20", "webpack-isomorphic-tools": "2.5.7", + "react-intl": "2.1.5", "winston": "1.1.2", "react-inlinesvg": "0.5.4" }, @@ -135,6 +136,7 @@ "karma-chai": "0.1.0", "karma-chai-sinon": "0.1.5", "karma-chrome-launcher": "0.2.0", + "karma-intl-shim": "1.0.3", "karma-junit-reporter": "0.3.4", "karma-mocha": "0.2.0", "karma-phantomjs-launcher": "~0.2.1", diff --git a/src/client.js b/src/client.js index 2be5baf31..92ccb4b3c 100644 --- a/src/client.js +++ b/src/client.js @@ -12,6 +12,7 @@ import applyRouterMiddleware from 'react-router/lib/applyRouterMiddleware'; import useScroll from 'react-router-scroll'; import { ReduxAsyncConnect } from 'redux-connect'; import { syncHistoryWithStore } from 'react-router-redux'; +import { IntlProvider } from 'react-intl'; import debug from 'debug'; @@ -19,6 +20,7 @@ import config from './config'; import ApiClient from './helpers/ApiClient'; import createStore from './redux/create'; import routes from './routes'; +import {getLocalMessages} from './helpers/setLocal'; const client = new ApiClient(); const store = createStore(browserHistory, client, window.reduxData); @@ -38,6 +40,9 @@ window.clearCookies = () => { reactCookie.remove('content'); reactCookie.remove('audio'); reactCookie.remove('isFirstTime'); + reactCookie.remove('currentLocale'); + reactCookie.remove('smartbanner-closed'); + reactCookie.remove('smartbanner-installed'); }; match({ history, routes: routes(store) }, (error, redirectLocation, renderProps) => { @@ -60,9 +65,11 @@ match({ history, routes: routes(store) }, (error, redirectLocation, renderProps) debug('client', 'React Rendering'); ReactDOM.render( - + + {component} - , mountNode, () => { + + , mountNode, () => { debug('client', 'React Rendered'); } ); diff --git a/src/components/Audioplayer/RepeatDropdown/index.js b/src/components/Audioplayer/RepeatDropdown/index.js index 3f222830f..ef90239ae 100644 --- a/src/components/Audioplayer/RepeatDropdown/index.js +++ b/src/components/Audioplayer/RepeatDropdown/index.js @@ -6,12 +6,14 @@ import NavItem from 'react-bootstrap/lib/NavItem'; import FormControl from 'react-bootstrap/lib/FormControl'; import Row from 'react-bootstrap/lib/Row'; import Col from 'react-bootstrap/lib/Col'; +import { intlShape, injectIntl } from 'react-intl'; import SwitchToggle from 'components/SwitchToggle'; +import LocaleFormattedMessage from 'components/LocaleFormattedMessage'; const style = require('../style.scss'); -export default class RepeatButton extends Component { +class RepeatButton extends Component { static propTypes = { surah: PropTypes.object.isRequired, repeat: PropTypes.shape({ @@ -20,7 +22,8 @@ export default class RepeatButton extends Component { times: PropTypes.number }).isRequired, setRepeat: PropTypes.func.isRequired, - current: PropTypes.number.isRequired + current: PropTypes.number.isRequired, + intl: intlShape.isRequired }; handleToggle = () => { @@ -59,9 +62,13 @@ export default class RepeatButton extends Component { return ( - From - To: