summaryrefslogtreecommitdiff
path: root/web-ui
diff options
context:
space:
mode:
authorTayane Fernandes <tayane.rmf@gmail.com>2017-02-07 14:19:13 -0200
committerTayane Fernandes <tayane.rmf@gmail.com>2017-02-07 14:19:13 -0200
commit9cfc90ca67f5f46882ed21b460a01b6d50ffa79c (patch)
tree6c56b9aadcbb3806a7fb0484dd31cd5c10cbd06f /web-ui
parent3cd797a6da2f14d191006e5e110faf1f51ac3599 (diff)
[#922] Add i18n translations for react
with @anikarni
Diffstat (limited to 'web-ui')
-rw-r--r--web-ui/app/js/account_recovery.js9
-rw-r--r--web-ui/app/js/account_recovery/i18n.js41
-rw-r--r--web-ui/app/js/account_recovery/page.js7
-rw-r--r--web-ui/package.json3
4 files changed, 54 insertions, 6 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)
diff --git a/web-ui/package.json b/web-ui/package.json
index 6f9b03d4..ff4201c0 100644
--- a/web-ui/package.json
+++ b/web-ui/package.json
@@ -22,7 +22,7 @@
"handlebars": "^4.0.5",
"he": "^1.1.0",
"html-minifier": "2.1.6",
- "i18next": "^4.1.4",
+ "i18next": "^6.1.2",
"i18next-browser-languagedetector": "^1.0.1",
"i18next-xhr-backend": "^1.2.1",
"iframe-resizer": "^3.5.7",
@@ -53,6 +53,7 @@
"react-a11y": "^0.3.3",
"react-addons-test-utils": "^15.4.2",
"react-dom": "^15.4.2",
+ "react-i18next": "^2.1.0",
"requirejs": "2.2.0",
"sass-loader": "^4.1.1",
"style-loader": "^0.13.1",