Browse Source

added translation

Skylsmoi 6 years ago
parent
commit
7ebb9deb3d

+ 2 - 0
package.json View File

@@ -24,9 +24,11 @@
24 24
     "classnames": "^2.2.5",
25 25
     "css-loader": "^0.28.7",
26 26
     "file-loader": "^1.1.5",
27
+    "i18next": "^10.5.0",
27 28
     "prop-types": "^15.6.0",
28 29
     "react": "^16.0.0",
29 30
     "react-dom": "^16.0.0",
31
+    "react-i18next": "^7.5.0",
30 32
     "standard": "^11.0.0",
31 33
     "standard-loader": "^6.0.1",
32 34
     "style-loader": "^0.19.0",

+ 51 - 0
src/component/Input/SelectStatus/SelectStatus.jsx View File

@@ -0,0 +1,51 @@
1
+import React from 'react'
2
+import { translate } from 'react-i18next'
3
+import i18n from '../../../i18n.js'
4
+
5
+translate.setI18n(i18n)
6
+
7
+export const SelectStatus = props =>
8
+  <div className='wsFileGeneric__option__menu__status dropdown'>
9
+    <button className='wsFileGeneric__option__menu__status__dropdownbtn check btn dropdown-toggle' type='button' id='dropdownMenu2' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
10
+      {props.t('Input.SelectStatus.validated')}
11
+      <div className='wsFileGeneric__option__menu__status__dropdownbtn__icon'>
12
+        <i className='fa fa-check' />
13
+      </div>
14
+    </button>
15
+
16
+    <div className='wsFileGeneric__option__menu__status__submenu dropdown-menu' aria-labelledby='dropdownMenu2'>
17
+      <h6 className='dropdown-header'>{props.t('Input.SelectStatus.file_status')}</h6>
18
+
19
+      <div className='dropdown-divider' />
20
+
21
+      <button className='wsFileGeneric__option__menu__status__submenu__item current  dropdown-item' type='button'>
22
+        {props.t('Input.SelectStatus.ongoing')}
23
+        <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
24
+          <i className='fa fa-gears' />
25
+        </div>
26
+      </button>
27
+
28
+      <button className='wsFileGeneric__option__menu__status__submenu__item check dropdown-item' type='button'>
29
+        {props.t('Input.SelectStatus.validated')}
30
+        <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
31
+          <i className='fa fa-check' />
32
+        </div>
33
+      </button>
34
+
35
+      <button className='wsFileGeneric__option__menu__status__submenu__item invalid dropdown-item' type='button'>
36
+        {props.t('Input.SelectStatus.unvalidated')}
37
+        <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
38
+          <i className='fa fa-times' />
39
+        </div>
40
+      </button>
41
+
42
+      <button className='wsFileGeneric__option__menu__status__submenu__item ban dropdown-item' type='button'>
43
+        {props.t('Input.SelectStatus.obsolete')}
44
+        <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
45
+          <i className='fa fa-ban' />
46
+        </div>
47
+      </button>
48
+    </div>
49
+  </div>
50
+
51
+export default translate()(SelectStatus)

+ 8 - 38
src/component/PopinFixed/PopinFixedOption.jsx View File

@@ -1,6 +1,11 @@
1 1
 import React from 'react'
2 2
 // import classnames from 'classnames'
3 3
 // import PropTypes from 'prop-types'
4
+import { translate } from 'react-i18next'
5
+import i18n from '../../i18n.js'
6
+import SelectStatus from '../Input/SelectStatus/SelectStatus.jsx'
7
+
8
+translate.setI18n(i18n)
4 9
 
5 10
 const PopinFixedOption = props => {
6 11
   return (
@@ -8,47 +13,12 @@ const PopinFixedOption = props => {
8 13
       <div className='wsFileGeneric__option__menu'>
9 14
 
10 15
         <div className='wsFileFile__option__menu__addversion btn mr-auto'>
11
-          Nouvelle version
16
+          {props.t('PopinFixedOption.new_version')}
12 17
           <i className='fa fa-plus-circle' />
13 18
         </div>
14 19
 
15
-        <div className='wsFileGeneric__option__menu__status dropdown'>
16
-          <button className='wsFileGeneric__option__menu__status__dropdownbtn check btn dropdown-toggle' type='button' id='dropdownMenu2' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
17
-            Validé
18
-            <div className='wsFileGeneric__option__menu__status__dropdownbtn__icon'>
19
-              <i className='fa fa-check' />
20
-            </div>
21
-          </button>
20
+        <SelectStatus />
22 21
 
23
-          <div className='wsFileGeneric__option__menu__status__submenu dropdown-menu' aria-labelledby='dropdownMenu2'>
24
-            <h6 className='dropdown-header'>Statut du fichier</h6>
25
-            <div className='dropdown-divider' />
26
-            <button className='wsFileGeneric__option__menu__status__submenu__item current  dropdown-item' type='button'>
27
-              En cours
28
-              <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
29
-                <i className='fa fa-gears' />
30
-              </div>
31
-            </button>
32
-            <button className='wsFileGeneric__option__menu__status__submenu__item check dropdown-item' type='button'>
33
-              Validé
34
-              <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
35
-                <i className='fa fa-check' />
36
-              </div>
37
-            </button>
38
-            <button className='wsFileGeneric__option__menu__status__submenu__item invalid dropdown-item' type='button'>
39
-              Invalidé
40
-              <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
41
-                <i className='fa fa-times' />
42
-              </div>
43
-            </button>
44
-            <button className='wsFileGeneric__option__menu__status__submenu__item ban dropdown-item' type='button'>
45
-              Obsolète
46
-              <div className='wsFileGeneric__option__menu__status__submenu__item__icon'>
47
-                <i className='fa fa-ban' />
48
-              </div>
49
-            </button>
50
-          </div>
51
-        </div>
52 22
         <div className='wsFileGeneric__option__menu__action'>
53 23
           <i className='fa fa-archive' />
54 24
         </div>
@@ -60,7 +30,7 @@ const PopinFixedOption = props => {
60 30
   )
61 31
 }
62 32
 
63
-export default PopinFixedOption
33
+export default translate()(PopinFixedOption)
64 34
 
65 35
 PopinFixedOption.propTypes = {
66 36
 

+ 26 - 0
src/i18n.js View File

@@ -0,0 +1,26 @@
1
+import i18n from 'i18next'
2
+import { reactI18nextModule } from 'react-i18next'
3
+import fr from './translate/fr.js'
4
+import en from './translate/en.js'
5
+
6
+i18n
7
+  .use(reactI18nextModule)
8
+  .init({
9
+    fallbackLng: 'fr',
10
+    // have a common namespace used around the full app
11
+    ns: ['translation'], // namespace
12
+    defaultNS: 'translation',
13
+    debug: true,
14
+    // interpolation: {
15
+    //   escapeValue: false, // not needed for react!!
16
+    // },
17
+    react: {
18
+      wait: true
19
+    },
20
+    resources: {
21
+      en,
22
+      fr
23
+    }
24
+  })
25
+
26
+export default i18n

+ 18 - 0
src/translate/en.js View File

@@ -0,0 +1,18 @@
1
+const en = {
2
+  translation: { // 'en' in the namespace 'translation'
3
+    Input: {
4
+      SelectStatus: {
5
+        file_status: 'File status',
6
+        validated: 'Validated',
7
+        unvalidated: 'Unvalidated',
8
+        obsolete: 'Obsolete',
9
+        ongoing: 'Ongoing'
10
+      }
11
+    },
12
+    PopinFixedOption: {
13
+      new_version: 'New version'
14
+    }
15
+  }
16
+}
17
+
18
+export default en

+ 18 - 0
src/translate/fr.js View File

@@ -0,0 +1,18 @@
1
+const fr = {
2
+  translation: { // 'fr' in the namespace 'translation'
3
+    Input: {
4
+      SelectStatus: {
5
+        file_status: 'Statut du fichier',
6
+        validated: 'Validé',
7
+        unvalidated: 'Invalidé',
8
+        obsolete: 'Obsolète',
9
+        ongoing: 'En cours'
10
+      }
11
+    },
12
+    PopinFixedOption: {
13
+      new_version: 'Nouvelle version'
14
+    }
15
+  }
16
+}
17
+
18
+export default fr