diff options
author | Tayane Fernandes <tayane.rmf@gmail.com> | 2017-02-07 14:19:13 -0200 |
---|---|---|
committer | Tayane Fernandes <tayane.rmf@gmail.com> | 2017-02-07 14:19:13 -0200 |
commit | 9cfc90ca67f5f46882ed21b460a01b6d50ffa79c (patch) | |
tree | 6c56b9aadcbb3806a7fb0484dd31cd5c10cbd06f /web-ui/app/js | |
parent | 3cd797a6da2f14d191006e5e110faf1f51ac3599 (diff) |
[#922] Add i18n translations for react
with @anikarni
Diffstat (limited to 'web-ui/app/js')
-rw-r--r-- | web-ui/app/js/account_recovery.js | 9 | ||||
-rw-r--r-- | web-ui/app/js/account_recovery/i18n.js | 41 | ||||
-rw-r--r-- | web-ui/app/js/account_recovery/page.js | 7 |
3 files changed, 52 insertions, 5 deletions
diff --git a/web-ui/app/js/account_recovery.js b/web-ui/app/js/account_recovery.js index 441a8936..cd01378d 100644 --- a/web-ui/app/js/account_recovery.js +++ b/web-ui/app/js/account_recovery.js @@ -1,13 +1,18 @@ import React from 'react' import { render } from 'react-dom' -import Page from 'js/account_recovery/page' import a11y from 'react-a11y' +import { I18nextProvider } from 'react-i18next' + +import Page from 'js/account_recovery/page' +import i18n from 'js/account_recovery/i18n' import 'font-awesome/scss/font-awesome.scss' if(process.env.NODE_ENV === 'development') a11y(React); render( - <Page/>, + <I18nextProvider i18n={ i18n }> + <Page/> + </I18nextProvider>, document.getElementById('root') ); diff --git a/web-ui/app/js/account_recovery/i18n.js b/web-ui/app/js/account_recovery/i18n.js new file mode 100644 index 00000000..968f7a6b --- /dev/null +++ b/web-ui/app/js/account_recovery/i18n.js @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2017 ThoughtWorks, Inc. + * + * Pixelated is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pixelated is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pixelated. If not, see <http://www.gnu.org/licenses/>. + */ +import i18n from 'i18next' +import i18nBackend from 'i18nextXHRBackend' +import i18nDetector from 'i18nextBrowserLanguageDetector' + +const detector = new i18nDetector(); +const detect = detector.detect.bind(detector); + +detector.detect = function(detectionOrder) { + let result = detect(detectionOrder); + return result.replace('-', '_'); +}; + +i18n + .use(i18nBackend) + .use(detector) + .init({ + fallbackLng: 'en_US', + ns: ['translation'], + defaultNS: 'translation', + backend: { + loadPath: 'assets/locales/{{lng}}/{{ns}}.json' + } + }); + +export default i18n; diff --git a/web-ui/app/js/account_recovery/page.js b/web-ui/app/js/account_recovery/page.js index 5d4f2c36..90cdb54f 100644 --- a/web-ui/app/js/account_recovery/page.js +++ b/web-ui/app/js/account_recovery/page.js @@ -1,8 +1,9 @@ import React from 'react' +import { translate } from 'react-i18next' import 'scss/account_recovery/page.scss' -const Page = () => ( +const Page = (props) => ( <div className='container'> <img src='assets/images/forgot-my-password.svg' alt="Esqueci minha senha!"/> <form> @@ -22,6 +23,6 @@ const Page = () => ( </div> </form> </div> -); +) -export default Page +export default translate('', { wait: true })(Page) |