diff --git a/src/components/Action/ActionView.tsx b/src/components/Action/ActionView.tsx
index 330edec6423f4d2c182baf1d798ebf62e719bba5..228ceb05a23dc04b881455618b07deac63919924 100644
--- a/src/components/Action/ActionView.tsx
+++ b/src/components/Action/ActionView.tsx
@@ -34,10 +34,10 @@ const ActionView: React.FC = () => {
 
   return (
     <>
-      <CozyBar titleKey={'COMMON.APP_ACTION_TITLE'} displayBackArrow={true} />
+      <CozyBar titleKey={'common.title_action'} displayBackArrow={true} />
       <Header
         setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_ACTION_TITLE'}
+        desktopTitleKey={'common.title_action'}
         displayBackArrow={true}
       ></Header>
       <Content height={headerHeight}>
diff --git a/src/components/Challenge/ChallengeView.tsx b/src/components/Challenge/ChallengeView.tsx
index 69f44779e184f927bd796763e95ff580f39e3ede..031dbf4a6a87c0781ab964b0664315bf1f47b05f 100644
--- a/src/components/Challenge/ChallengeView.tsx
+++ b/src/components/Challenge/ChallengeView.tsx
@@ -129,10 +129,10 @@ const ChallengeView: React.FC = () => {
 
   return (
     <>
-      <CozyBar titleKey={'COMMON.APP_CHALLENGE_TITLE'} />
+      <CozyBar titleKey={'common.title_challenge'} />
       <Header
         setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_CHALLENGE_TITLE'}
+        desktopTitleKey={'common.title_challenge'}
       ></Header>
       <Content height={headerHeight}>
         <div
diff --git a/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap b/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap
index 03cae104ce128fb1b0fb8086fef12573529a71b8..6cceaac167bc2462eaceeaffca38a5a9a6b2fe61 100644
--- a/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap
+++ b/src/components/Challenge/__snapshots__/ChallengeView.spec.tsx.snap
@@ -3,10 +3,10 @@
 exports[`ChallengeView component should be rendered correctly 1`] = `
 <React.Fragment>
   <CozyBar
-    titleKey="COMMON.APP_CHALLENGE_TITLE"
+    titleKey="common.title_challenge"
   />
   <Header
-    desktopTitleKey="COMMON.APP_CHALLENGE_TITLE"
+    desktopTitleKey="common.title_challenge"
     setHeaderHeight={[Function]}
   />
   <Content
diff --git a/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.tsx b/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.tsx
index 74b734a2a61f1669d14c678da88ec2c397afd35d..67ce2865b9cd70e9d319f519059e39a431d83f3c 100644
--- a/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.tsx
+++ b/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.tsx
@@ -48,7 +48,7 @@ const DataloadConsumptionVisualizer = ({
                   <div
                     className={`dataloadvisualizer-novalue ${fluidStyle.toLowerCase()}-compare text-20-normal`}
                   >
-                    {t('COMMON.NODATA')}
+                    {t('consumption_visualizer.no_data')}
                   </div>
                 </div>
               ) : (
@@ -143,7 +143,7 @@ const DataloadConsumptionVisualizer = ({
                             load !== -1
                               ? `${formatNumberValues(load)} €`
                               : dateChartService.isDataToCome(dataload, index)
-                              ? t('COMMON.DATATOCOME')
+                              ? t('consumption_visualizer.data_to_come')
                               : '---- €'}
                           </div>
                         </div>
@@ -185,15 +185,15 @@ const DataloadConsumptionVisualizer = ({
             <div
               className={`dataloadvisualizer-content ${fluidStyle.toLowerCase()} text-22-normal`}
             >
-              {`${t('COMMON.LASTDATA')} : ${lastDataDate.toFormat(
-                "dd'/'MM'/'yy"
-              )}`}
+              {`${t(
+                'consumption_visualizer.last_data'
+              )} : ${lastDataDate.toFormat("dd'/'MM'/'yy")}`}
             </div>
           ) : (
             <div
               className={`dataloadvisualizer-content ${fluidStyle.toLowerCase()} text-22-normal`}
             >
-              {`${t('COMMON.NODATA')}`}
+              {`${t('consumption_visualizer.no_data')}`}
             </div>
           )}
         </>
diff --git a/src/components/ConsumptionVisualizer/ErrorDataConsumptionVisualizer.tsx b/src/components/ConsumptionVisualizer/ErrorDataConsumptionVisualizer.tsx
index f3684e75c790b367395df46cc26f129b8231caa6..e2f7780658ba528f8ec6761c9e248cc6c66fb059 100644
--- a/src/components/ConsumptionVisualizer/ErrorDataConsumptionVisualizer.tsx
+++ b/src/components/ConsumptionVisualizer/ErrorDataConsumptionVisualizer.tsx
@@ -1,76 +1,76 @@
-import React from 'react'
-import './errorDataConsumptionVisualizer.scss'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useDispatch, useSelector } from 'react-redux'
-import { AppStore } from 'store'
-import { setCurrentIndex, setSelectedDate } from 'store/chart/chart.actions'
-import { DateTime } from 'luxon'
-import DateChartService from 'services/dateChart.service'
-import warning from 'assets/icons/ico/warning.svg'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import { FluidType } from 'enum/fluid.enum'
-
-interface ErrorDataConsumptionVisualizerProps {
-  fluidType: FluidType
-}
-const ErrorDataConsumptionVisualizer: React.FC<ErrorDataConsumptionVisualizerProps> = ({
-  fluidType,
-}: ErrorDataConsumptionVisualizerProps) => {
-  const { t } = useI18n()
-  const dispatch = useDispatch()
-  const { currentTimeStep } = useSelector(
-    (state: AppStore) => state.ecolyo.chart
-  )
-  const { fluidStatus, fluidTypes } = useSelector(
-    (state: AppStore) => state.ecolyo.global
-  )
-
-  const getLastDateWithAllData = (): DateTime | null => {
-    let lastDay: DateTime | null = null
-    const lastDays: DateTime[] = []
-    if (fluidType === FluidType.MULTIFLUID) {
-      for (const _fluidType of fluidTypes) {
-        const date: DateTime | null = fluidStatus[_fluidType].lastDataDate
-        if (date) {
-          lastDays.push(date)
-        }
-      }
-      if (lastDays.length > 0) {
-        lastDay = lastDays.reduce(function(a, b) {
-          return a < b ? a : b
-        })
-      }
-    } else {
-      lastDay = fluidStatus[fluidType].lastDataDate
-    }
-    return lastDay
-  }
-  const lastDateWithAllData: DateTime | null = getLastDateWithAllData()
-
-  const setDateAndMoveToindex = () => {
-    if (lastDateWithAllData) {
-      const dateChartService = new DateChartService()
-      const updatedIndex: number = dateChartService.defineDateIndex(
-        currentTimeStep,
-        lastDateWithAllData
-      )
-      dispatch(setSelectedDate(lastDateWithAllData))
-      dispatch(setCurrentIndex(updatedIndex))
-    }
-  }
-
-  return (
-    <div onClick={() => setDateAndMoveToindex()} className="error-line">
-      <StyledIcon icon={warning} size={22} className="warning-icon" />
-      <span className={`text-16-normal underlined-error`}>
-        {`${t('COMMON.LASTVALIDDATA')} : ${
-          lastDateWithAllData
-            ? lastDateWithAllData.toFormat("dd'/'MM'/'yy")
-            : '-'
-        }`}
-      </span>
-    </div>
-  )
-}
-
-export default ErrorDataConsumptionVisualizer
+import React from 'react'
+import './errorDataConsumptionVisualizer.scss'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { useDispatch, useSelector } from 'react-redux'
+import { AppStore } from 'store'
+import { setCurrentIndex, setSelectedDate } from 'store/chart/chart.actions'
+import { DateTime } from 'luxon'
+import DateChartService from 'services/dateChart.service'
+import warning from 'assets/icons/ico/warning.svg'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { FluidType } from 'enum/fluid.enum'
+
+interface ErrorDataConsumptionVisualizerProps {
+  fluidType: FluidType
+}
+const ErrorDataConsumptionVisualizer: React.FC<ErrorDataConsumptionVisualizerProps> = ({
+  fluidType,
+}: ErrorDataConsumptionVisualizerProps) => {
+  const { t } = useI18n()
+  const dispatch = useDispatch()
+  const { currentTimeStep } = useSelector(
+    (state: AppStore) => state.ecolyo.chart
+  )
+  const { fluidStatus, fluidTypes } = useSelector(
+    (state: AppStore) => state.ecolyo.global
+  )
+
+  const getLastDateWithAllData = (): DateTime | null => {
+    let lastDay: DateTime | null = null
+    const lastDays: DateTime[] = []
+    if (fluidType === FluidType.MULTIFLUID) {
+      for (const _fluidType of fluidTypes) {
+        const date: DateTime | null = fluidStatus[_fluidType].lastDataDate
+        if (date) {
+          lastDays.push(date)
+        }
+      }
+      if (lastDays.length > 0) {
+        lastDay = lastDays.reduce(function(a, b) {
+          return a < b ? a : b
+        })
+      }
+    } else {
+      lastDay = fluidStatus[fluidType].lastDataDate
+    }
+    return lastDay
+  }
+  const lastDateWithAllData: DateTime | null = getLastDateWithAllData()
+
+  const setDateAndMoveToindex = () => {
+    if (lastDateWithAllData) {
+      const dateChartService = new DateChartService()
+      const updatedIndex: number = dateChartService.defineDateIndex(
+        currentTimeStep,
+        lastDateWithAllData
+      )
+      dispatch(setSelectedDate(lastDateWithAllData))
+      dispatch(setCurrentIndex(updatedIndex))
+    }
+  }
+
+  return (
+    <div onClick={() => setDateAndMoveToindex()} className="error-line">
+      <StyledIcon icon={warning} size={22} className="warning-icon" />
+      <span className={`text-16-normal underlined-error`}>
+        {`${t('consumption_visualizer.last_valid_data')} : ${
+          lastDateWithAllData
+            ? lastDateWithAllData.toFormat("dd'/'MM'/'yy")
+            : '-'
+        }`}
+      </span>
+    </div>
+  )
+}
+
+export default ErrorDataConsumptionVisualizer
diff --git a/src/components/Duel/DuelView.tsx b/src/components/Duel/DuelView.tsx
index 436dbba00d23a788432c157aab2bd149b7231a20..9f0ec15995f7710cbec8ae17fed3ff64226130fc 100644
--- a/src/components/Duel/DuelView.tsx
+++ b/src/components/Duel/DuelView.tsx
@@ -46,10 +46,10 @@ const DuelView: React.FC = () => {
 
   return (
     <>
-      <CozyBar titleKey={'COMMON.APP_DUEL_TITLE'} displayBackArrow={true} />
+      <CozyBar titleKey={'common.title_duel'} displayBackArrow={true} />
       <Header
         setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_DUEL_TITLE'}
+        desktopTitleKey={'common.title_duel'}
         displayBackArrow={true}
       ></Header>
       <Content height={headerHeight}>
diff --git a/src/components/Ecogesture/EcogestureView.tsx b/src/components/Ecogesture/EcogestureView.tsx
index 240d812c7a494104c989688cb7ea1324299a9a80..b45dbbcebcd65e6c284ea948a467ad20a4fd89f2 100644
--- a/src/components/Ecogesture/EcogestureView.tsx
+++ b/src/components/Ecogesture/EcogestureView.tsx
@@ -55,10 +55,10 @@ const EcogestureView: React.FC = () => {
 
   return (
     <>
-      <CozyBar titleKey={'COMMON.APP_ECO_GESTURE_TITLE'} />
+      <CozyBar titleKey={'common.title_ecogestures'} />
       <Header
         setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_ECO_GESTURE_TITLE'}
+        desktopTitleKey={'common.title_ecogestures'}
       >
         <Tabs
           value={value}
diff --git a/src/components/Exploration/ExplorationView.tsx b/src/components/Exploration/ExplorationView.tsx
index 381b8a937d0ad38be411bd90f42297df2e9b35e0..3f6d43025d880b0e72e742ebfb77f93219ef7227 100644
--- a/src/components/Exploration/ExplorationView.tsx
+++ b/src/components/Exploration/ExplorationView.tsx
@@ -1,54 +1,51 @@
-import React, { useCallback, useState } from 'react'
-import { useSelector } from 'react-redux'
-import { AppStore } from 'store'
-import CozyBar from 'components/Header/CozyBar'
-import Content from 'components/Content/Content'
-import Header from 'components/Header/Header'
-import { UserExplorationState } from 'enum/userExploration.enum'
-import { UserChallenge } from 'models'
-import ExplorationOngoing from './ExplorationOngoing'
-import ExplorationError from './ExplorationError'
-import ExplorationFinished from './ExplorationFinished'
-
-const ExplorationView: React.FC = () => {
-  const [headerHeight, setHeaderHeight] = useState<number>(0)
-  const { currentChallenge } = useSelector(
-    (state: AppStore) => state.ecolyo.challenge
-  )
-
-  const defineHeaderHeight = useCallback((height: number) => {
-    setHeaderHeight(height)
-  }, [])
-
-  const renderExploration = (challenge: UserChallenge) => {
-    switch (challenge.exploration.state) {
-      case UserExplorationState.UNLOCKED:
-      case UserExplorationState.ONGOING:
-        return <ExplorationOngoing userChallenge={challenge} />
-      case UserExplorationState.NOTIFICATION:
-      case UserExplorationState.DONE:
-        return <ExplorationFinished userChallenge={challenge} />
-      default:
-        return <ExplorationError />
-    }
-  }
-
-  return (
-    <>
-      <CozyBar
-        titleKey={'COMMON.APP_EXPLORATION_TITLE'}
-        displayBackArrow={true}
-      />
-      <Header
-        setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_EXPLORATION_TITLE'}
-        displayBackArrow={true}
-      ></Header>
-      <Content height={headerHeight}>
-        {currentChallenge && renderExploration(currentChallenge)}
-      </Content>
-    </>
-  )
-}
-
-export default ExplorationView
+import React, { useCallback, useState } from 'react'
+import { useSelector } from 'react-redux'
+import { AppStore } from 'store'
+import CozyBar from 'components/Header/CozyBar'
+import Content from 'components/Content/Content'
+import Header from 'components/Header/Header'
+import { UserExplorationState } from 'enum/userExploration.enum'
+import { UserChallenge } from 'models'
+import ExplorationOngoing from './ExplorationOngoing'
+import ExplorationError from './ExplorationError'
+import ExplorationFinished from './ExplorationFinished'
+
+const ExplorationView: React.FC = () => {
+  const [headerHeight, setHeaderHeight] = useState<number>(0)
+  const { currentChallenge } = useSelector(
+    (state: AppStore) => state.ecolyo.challenge
+  )
+
+  const defineHeaderHeight = useCallback((height: number) => {
+    setHeaderHeight(height)
+  }, [])
+
+  const renderExploration = (challenge: UserChallenge) => {
+    switch (challenge.exploration.state) {
+      case UserExplorationState.UNLOCKED:
+      case UserExplorationState.ONGOING:
+        return <ExplorationOngoing userChallenge={challenge} />
+      case UserExplorationState.NOTIFICATION:
+      case UserExplorationState.DONE:
+        return <ExplorationFinished userChallenge={challenge} />
+      default:
+        return <ExplorationError />
+    }
+  }
+
+  return (
+    <>
+      <CozyBar titleKey={'common.title_exploration'} displayBackArrow={true} />
+      <Header
+        setHeaderHeight={defineHeaderHeight}
+        desktopTitleKey={'common.title_exploration'}
+        displayBackArrow={true}
+      ></Header>
+      <Content height={headerHeight}>
+        {currentChallenge && renderExploration(currentChallenge)}
+      </Content>
+    </>
+  )
+}
+
+export default ExplorationView
diff --git a/src/components/FAQ/FAQLink.tsx b/src/components/FAQ/FAQLink.tsx
index 9bda1b890f29d66906101f2634776f2c13e57db3..bf2fb563b1f078d7f317cfffd4954d8141d4786c 100644
--- a/src/components/FAQ/FAQLink.tsx
+++ b/src/components/FAQ/FAQLink.tsx
@@ -1,39 +1,39 @@
-import React from 'react'
-import { NavLink } from 'react-router-dom'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-
-import StyledCard from 'components/CommonKit/Card/StyledCard'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import QuestionMarkIcon from 'assets/icons/ico/question-mark.svg'
-import './faqLink.scss'
-
-const FAQLink: React.FC = () => {
-  const { t } = useI18n()
-  return (
-    <div className="faq-root">
-      <div className="faq-content">
-        <div className="faq-header text-16-normal-uppercase">
-          {t('FAQ.TITLE_FAQ')}
-        </div>
-        <NavLink className="faq-card-link" to="options/FAQ">
-          <StyledCard>
-            <div className="faq-card">
-              <div className="faq-card-content">
-                <StyledIcon
-                  className="faq-card-content-icon"
-                  icon={QuestionMarkIcon}
-                  size={50}
-                />
-                <div className="faq-card-content-title">
-                  {t('FAQ.READ_FAQ')}
-                </div>
-              </div>
-            </div>
-          </StyledCard>
-        </NavLink>
-      </div>
-    </div>
-  )
-}
-
-export default FAQLink
+import React from 'react'
+import { NavLink } from 'react-router-dom'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+
+import StyledCard from 'components/CommonKit/Card/StyledCard'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import QuestionMarkIcon from 'assets/icons/ico/question-mark.svg'
+import './faqLink.scss'
+
+const FAQLink: React.FC = () => {
+  const { t } = useI18n()
+  return (
+    <div className="faq-root">
+      <div className="faq-content">
+        <div className="faq-header text-16-normal-uppercase">
+          {t('faq.title_faq')}
+        </div>
+        <NavLink className="faq-card-link" to="options/FAQ">
+          <StyledCard>
+            <div className="faq-card">
+              <div className="faq-card-content">
+                <StyledIcon
+                  className="faq-card-content-icon"
+                  icon={QuestionMarkIcon}
+                  size={50}
+                />
+                <div className="faq-card-content-title">
+                  {t('faq.read_faq')}
+                </div>
+              </div>
+            </div>
+          </StyledCard>
+        </NavLink>
+      </div>
+    </div>
+  )
+}
+
+export default FAQLink
diff --git a/src/components/FAQ/FAQView.tsx b/src/components/FAQ/FAQView.tsx
index abc27498cdf3b91a0aa23c7eea12687088a9d0e3..69240dfb19882f4592d62d34359b1050a9150cee 100644
--- a/src/components/FAQ/FAQView.tsx
+++ b/src/components/FAQ/FAQView.tsx
@@ -1,27 +1,27 @@
-import React, { useState } from 'react'
-import CozyBar from 'components/Header/CozyBar'
-import Header from 'components/Header/Header'
-import Content from 'components/Content/Content'
-import FAQContent from 'components/FAQ/FAQContent'
-
-const FAQView: React.FC = () => {
-  const [headerHeight, setHeaderHeight] = useState<number>(0)
-  const defineHeaderHeight = (height: number) => {
-    setHeaderHeight(height)
-  }
-  return (
-    <React.Fragment>
-      <CozyBar titleKey={'COMMON.APP_FAQ_TITLE'} displayBackArrow={true} />
-      <Header
-        setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_FAQ_TITLE'}
-        displayBackArrow={true}
-      ></Header>
-      <Content height={headerHeight}>
-        <FAQContent />
-      </Content>
-    </React.Fragment>
-  )
-}
-
-export default FAQView
+import React, { useState } from 'react'
+import CozyBar from 'components/Header/CozyBar'
+import Header from 'components/Header/Header'
+import Content from 'components/Content/Content'
+import FAQContent from 'components/FAQ/FAQContent'
+
+const FAQView: React.FC = () => {
+  const [headerHeight, setHeaderHeight] = useState<number>(0)
+  const defineHeaderHeight = (height: number) => {
+    setHeaderHeight(height)
+  }
+  return (
+    <React.Fragment>
+      <CozyBar titleKey={'common.title_faq'} displayBackArrow={true} />
+      <Header
+        setHeaderHeight={defineHeaderHeight}
+        desktopTitleKey={'common.title_faq'}
+        displayBackArrow={true}
+      ></Header>
+      <Content height={headerHeight}>
+        <FAQContent />
+      </Content>
+    </React.Fragment>
+  )
+}
+
+export default FAQView
diff --git a/src/components/FAQ/__snapshots__/FAQView.spec.tsx.snap b/src/components/FAQ/__snapshots__/FAQView.spec.tsx.snap
index 688e47b93b2e8e4a6cd2c83f97e60b01958ac078..d39d3478bcca7a209cdf08cfc7eb3e8ee35366f1 100644
--- a/src/components/FAQ/__snapshots__/FAQView.spec.tsx.snap
+++ b/src/components/FAQ/__snapshots__/FAQView.spec.tsx.snap
@@ -1,20 +1,20 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`FAQView component should render only the parent component 1`] = `
-<React.Fragment>
-  <CozyBar
-    displayBackArrow={true}
-    titleKey="COMMON.APP_FAQ_TITLE"
-  />
-  <Header
-    desktopTitleKey="COMMON.APP_FAQ_TITLE"
-    displayBackArrow={true}
-    setHeaderHeight={[Function]}
-  />
-  <Content
-    height={0}
-  >
-    <FAQContent />
-  </Content>
-</React.Fragment>
-`;
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`FAQView component should render only the parent component 1`] = `
+<React.Fragment>
+  <CozyBar
+    displayBackArrow={true}
+    titleKey="common.title_faq"
+  />
+  <Header
+    desktopTitleKey="common.title_faq"
+    displayBackArrow={true}
+    setHeaderHeight={[Function]}
+  />
+  <Content
+    height={0}
+  >
+    <FAQContent />
+  </Content>
+</React.Fragment>
+`;
diff --git a/src/components/FluidChart/FluidChart.tsx b/src/components/FluidChart/FluidChart.tsx
index 88f3f6f74e403f61d84d3dcdba78dbeac7896106..0e89e99fc4d04bd7300ffb24ccca096bbe5a8be0 100644
--- a/src/components/FluidChart/FluidChart.tsx
+++ b/src/components/FluidChart/FluidChart.tsx
@@ -142,7 +142,11 @@ const FluidChart: React.FC<FluidChartProps> = ({
                         : `fluidchart-footer-label graph-switch-text`
                     }
                   >
-                    {t(`TIMESTEP.${TimeStep[currentTimeStep]}.COMPARELABEL`)}
+                    {t(
+                      `timestep.${TimeStep[
+                        currentTimeStep
+                      ].toLowerCase()}.comparelabel`
+                    )}
                   </span>
                 </div>
               </div>
diff --git a/src/components/Header/CozyBar.tsx b/src/components/Header/CozyBar.tsx
index 4923fc89839aaa54a88c31f754b978e515c7c74b..b6f2f0d42e42ad0d1715af0027ce51b1c669b8ce 100644
--- a/src/components/Header/CozyBar.tsx
+++ b/src/components/Header/CozyBar.tsx
@@ -17,7 +17,7 @@ interface CozyBarProps {
 }
 
 const CozyBar = ({
-  titleKey = 'COMMON.APP_TITLE',
+  titleKey = 'common.title_app',
   displayBackArrow = false,
 }: CozyBarProps) => {
   const { t } = useI18n()
diff --git a/src/components/Home/ConsumptionDetails.tsx b/src/components/Home/ConsumptionDetails.tsx
index 8353faf42c4e2969355e6779ae98ca95bbc1af08..a98db775c226810c8ff84bd4d1e3d2a790b1c4ce 100644
--- a/src/components/Home/ConsumptionDetails.tsx
+++ b/src/components/Home/ConsumptionDetails.tsx
@@ -1,95 +1,95 @@
-import React from 'react'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useSelector } from 'react-redux'
-import { AppStore } from 'store'
-import ConfigService from 'services/fluidConfig.service'
-import { convertDateToShortDateString } from 'utils/date'
-import FluidCard from 'components/HomeCards/FluidCard'
-import './consumptionDetails.scss'
-import AddKonnectorCard from 'components/HomeCards/AddKonnectorCard'
-import TotalConsumption from 'components/HomeCards/TotalConsumption'
-import { FluidType } from 'enum/fluid.enum'
-interface ConsumptionDetailsProps {
-  fluidType: FluidType
-}
-
-const ConsumptionDetails: React.FC<ConsumptionDetailsProps> = ({
-  fluidType,
-}: ConsumptionDetailsProps) => {
-  const { t } = useI18n()
-  const { fluidStatus, fluidTypes } = useSelector(
-    (state: AppStore) => state.ecolyo.global
-  )
-  const { currentTimeStep, currentDatachart } = useSelector(
-    (state: AppStore) => state.ecolyo.chart
-  )
-
-  const configService = new ConfigService()
-  const fluidConfig = configService.getFluidConfig()
-
-  return (
-    <>
-      <div className="consumption-details-root">
-        <div className="consumption-details-content">
-          <div className="consumption-details-header text-16-normal-uppercase details-title">
-            {convertDateToShortDateString(
-              currentDatachart.actualData,
-              currentTimeStep
-            )}
-          </div>
-          <TotalConsumption
-            actualData={currentDatachart.actualData}
-            fluidType={fluidType}
-          />
-          {fluidType === FluidType.MULTIFLUID ? (
-            <div className="fluid-details">
-              <span className="text-16-normal-uppercase details-title">
-                {t('INDICATOR.DETAIL')}
-              </span>
-              <div className="details-container">
-                {fluidConfig.map((fluid, index) => {
-                  return fluidTypes.includes(fluid.fluidTypeId) ? (
-                    <FluidCard key={index} fluidType={fluid.fluidTypeId} />
-                  ) : null
-                })}
-              </div>
-              {fluidTypes.length !== 3 && (
-                <span className="text-16-normal-uppercase details-title">
-                  {t('INDICATOR.CONNECT')}
-                </span>
-              )}
-              <div className="details-container">
-                {fluidConfig.map((fluid, index) => {
-                  return fluidTypes.includes(fluid.fluidTypeId) ? null : (
-                    <AddKonnectorCard
-                      key={index}
-                      fluidStatus={fluidStatus[index]}
-                      fluidType={fluid.fluidTypeId}
-                    />
-                  )
-                })}
-              </div>
-            </div>
-          ) : (
-            <div className="fluid-details">
-              <div className="text-16-normal-uppercase details-title">
-                {t('COMMON.MINI_CARDS_LABEL')}
-              </div>
-              <div className="details-container multi-link">
-                <FluidCard fluidType={FluidType.MULTIFLUID} />
-                {fluidConfig.map((fluid, index) => {
-                  return fluidType !== fluid.fluidTypeId &&
-                    fluidTypes.includes(fluid.fluidTypeId) ? (
-                    <FluidCard key={index} fluidType={fluid.fluidTypeId} />
-                  ) : null
-                })}
-              </div>
-            </div>
-          )}
-        </div>
-      </div>
-    </>
-  )
-}
-
-export default ConsumptionDetails
+import React from 'react'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { useSelector } from 'react-redux'
+import { AppStore } from 'store'
+import ConfigService from 'services/fluidConfig.service'
+import { convertDateToShortDateString } from 'utils/date'
+import FluidCard from 'components/HomeCards/FluidCard'
+import './consumptionDetails.scss'
+import AddKonnectorCard from 'components/HomeCards/AddKonnectorCard'
+import TotalConsumption from 'components/HomeCards/TotalConsumption'
+import { FluidType } from 'enum/fluid.enum'
+interface ConsumptionDetailsProps {
+  fluidType: FluidType
+}
+
+const ConsumptionDetails: React.FC<ConsumptionDetailsProps> = ({
+  fluidType,
+}: ConsumptionDetailsProps) => {
+  const { t } = useI18n()
+  const { fluidStatus, fluidTypes } = useSelector(
+    (state: AppStore) => state.ecolyo.global
+  )
+  const { currentTimeStep, currentDatachart } = useSelector(
+    (state: AppStore) => state.ecolyo.chart
+  )
+
+  const configService = new ConfigService()
+  const fluidConfig = configService.getFluidConfig()
+
+  return (
+    <>
+      <div className="consumption-details-root">
+        <div className="consumption-details-content">
+          <div className="consumption-details-header text-16-normal-uppercase details-title">
+            {convertDateToShortDateString(
+              currentDatachart.actualData,
+              currentTimeStep
+            )}
+          </div>
+          <TotalConsumption
+            actualData={currentDatachart.actualData}
+            fluidType={fluidType}
+          />
+          {fluidType === FluidType.MULTIFLUID ? (
+            <div className="fluid-details">
+              <span className="text-16-normal-uppercase details-title">
+                {t('consumption_details.detail')}
+              </span>
+              <div className="details-container">
+                {fluidConfig.map((fluid, index) => {
+                  return fluidTypes.includes(fluid.fluidTypeId) ? (
+                    <FluidCard key={index} fluidType={fluid.fluidTypeId} />
+                  ) : null
+                })}
+              </div>
+              {fluidTypes.length !== 3 && (
+                <span className="text-16-normal-uppercase details-title">
+                  {t('consumption_details.connect')}
+                </span>
+              )}
+              <div className="details-container">
+                {fluidConfig.map((fluid, index) => {
+                  return fluidTypes.includes(fluid.fluidTypeId) ? null : (
+                    <AddKonnectorCard
+                      key={index}
+                      fluidStatus={fluidStatus[index]}
+                      fluidType={fluid.fluidTypeId}
+                    />
+                  )
+                })}
+              </div>
+            </div>
+          ) : (
+            <div className="fluid-details">
+              <div className="text-16-normal-uppercase details-title">
+                {t('consumption_details.mini_cards_label')}
+              </div>
+              <div className="details-container multi-link">
+                <FluidCard fluidType={FluidType.MULTIFLUID} />
+                {fluidConfig.map((fluid, index) => {
+                  return fluidType !== fluid.fluidTypeId &&
+                    fluidTypes.includes(fluid.fluidTypeId) ? (
+                    <FluidCard key={index} fluidType={fluid.fluidTypeId} />
+                  ) : null
+                })}
+              </div>
+            </div>
+          )}
+        </div>
+      </div>
+    </>
+  )
+}
+
+export default ConsumptionDetails
diff --git a/src/components/LegalNotice/LegalNoticeLink.tsx b/src/components/LegalNotice/LegalNoticeLink.tsx
index a81cc4f5ffaea966e4e8f183225eb34efd6ee2b9..781c5907915240888413ad6dcb2236663628c5cf 100644
--- a/src/components/LegalNotice/LegalNoticeLink.tsx
+++ b/src/components/LegalNotice/LegalNoticeLink.tsx
@@ -1,39 +1,39 @@
-import React from 'react'
-import { NavLink } from 'react-router-dom'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-
-import StyledCard from 'components/CommonKit/Card/StyledCard'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import LegalNoticeIcon from 'assets/icons/ico/legal-notice.svg'
-import './legalNoticeLink.scss'
-
-const LegalNoticeLink: React.FC = () => {
-  const { t } = useI18n()
-  return (
-    <div className="legal-notice-root">
-      <div className="legal-notice-content">
-        <div className="legal-notice-header text-16-normal-uppercase">
-          {t('LEGAL.TITLE_LEGAL')}
-        </div>
-        <NavLink className="legal-notice-card-link" to="options/legalnotice">
-          <StyledCard>
-            <div className="legal-notice-card">
-              <div className="legal-notice-card-content">
-                <StyledIcon
-                  className="legal-notice-card-content-icon"
-                  icon={LegalNoticeIcon}
-                  size={50}
-                />
-                <div className="legal-notice-card-content-title">
-                  {t('LEGAL.READ_LEGAL')}
-                </div>
-              </div>
-            </div>
-          </StyledCard>
-        </NavLink>
-      </div>
-    </div>
-  )
-}
-
-export default LegalNoticeLink
+import React from 'react'
+import { NavLink } from 'react-router-dom'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+
+import StyledCard from 'components/CommonKit/Card/StyledCard'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import LegalNoticeIcon from 'assets/icons/ico/legal-notice.svg'
+import './legalNoticeLink.scss'
+
+const LegalNoticeLink: React.FC = () => {
+  const { t } = useI18n()
+  return (
+    <div className="legal-notice-root">
+      <div className="legal-notice-content">
+        <div className="legal-notice-header text-16-normal-uppercase">
+          {t('legal.title_legal')}
+        </div>
+        <NavLink className="legal-notice-card-link" to="options/legalnotice">
+          <StyledCard>
+            <div className="legal-notice-card">
+              <div className="legal-notice-card-content">
+                <StyledIcon
+                  className="legal-notice-card-content-icon"
+                  icon={LegalNoticeIcon}
+                  size={50}
+                />
+                <div className="legal-notice-card-content-title">
+                  {t('legal.read_legal')}
+                </div>
+              </div>
+            </div>
+          </StyledCard>
+        </NavLink>
+      </div>
+    </div>
+  )
+}
+
+export default LegalNoticeLink
diff --git a/src/components/LegalNotice/LegalNoticeView.tsx b/src/components/LegalNotice/LegalNoticeView.tsx
index 9ddb10a3f262a1a353fe3e1445e998785f509754..da562818cc451657c0f976866c9dac6de6c21bc6 100644
--- a/src/components/LegalNotice/LegalNoticeView.tsx
+++ b/src/components/LegalNotice/LegalNoticeView.tsx
@@ -13,10 +13,10 @@ const LegalNoticeView: React.FC = () => {
 
   return (
     <React.Fragment>
-      <CozyBar titleKey={'COMMON.APP_LEGAL_TITLE'} displayBackArrow={true} />
+      <CozyBar titleKey={'common.title_legal_notice'} displayBackArrow={true} />
       <Header
         setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_LEGAL_TITLE'}
+        desktopTitleKey={'common.title_legal_notice'}
         displayBackArrow={true}
       ></Header>
       <Content height={headerHeight}>
diff --git a/src/components/LegalNotice/__snapshots__/LegalNoticeView.spec.tsx.snap b/src/components/LegalNotice/__snapshots__/LegalNoticeView.spec.tsx.snap
index 9d171758b7a0a81e836f990e5ab8be39da539d4d..3f1f150ed440008924886ae794e297f8575be5d0 100644
--- a/src/components/LegalNotice/__snapshots__/LegalNoticeView.spec.tsx.snap
+++ b/src/components/LegalNotice/__snapshots__/LegalNoticeView.spec.tsx.snap
@@ -4,10 +4,10 @@ exports[`LegalNoticeView component should be rendered correctly 1`] = `
 <React.Fragment>
   <CozyBar
     displayBackArrow={true}
-    titleKey="COMMON.APP_LEGAL_TITLE"
+    titleKey="common.title_legal_notice"
   />
   <Header
-    desktopTitleKey="COMMON.APP_LEGAL_TITLE"
+    desktopTitleKey="common.title_legal_notice"
     displayBackArrow={true}
     setHeaderHeight={[Function]}
   />
diff --git a/src/components/Navbar/Navbar.tsx b/src/components/Navbar/Navbar.tsx
index 153fce9e9b25a29fa488b6df8c3ce25c49eb1ccd..9c1c5553ca2d9de67c0f09075fd87e2508c20a40 100644
--- a/src/components/Navbar/Navbar.tsx
+++ b/src/components/Navbar/Navbar.tsx
@@ -39,7 +39,7 @@ export const Navbar: React.FC = () => {
             >
               <StyledIcon className="c-nav-icon off" icon={ConsoIconOff} />
               <StyledIcon className="c-nav-icon on" icon={ConsoIconOn} />
-              {t('Nav.consumption')}
+              {t('navigation.consumption')}
             </NavLink>
           </li>
           <li className="c-nav-item">
@@ -53,7 +53,7 @@ export const Navbar: React.FC = () => {
                 challengeDuelNotification) && <div className="nb-notif">1</div>}
               <StyledIcon className="c-nav-icon off" icon={ChallengeIconOff} />
               <StyledIcon className="c-nav-icon on" icon={ChallengeIconOn} />
-              {t('Nav.challenges')}
+              {t('navigation.challenges')}
             </NavLink>
           </li>
           <li className="c-nav-item">
@@ -64,7 +64,7 @@ export const Navbar: React.FC = () => {
             >
               <StyledIcon className="c-nav-icon off" icon={EcogestesIconOff} />
               <StyledIcon className="c-nav-icon on" icon={EcogestesIconOn} />
-              {t('Nav.ECOGESTURES')}
+              {t('navigation.ecogestures')}
             </NavLink>
           </li>
           <li className="c-nav-item">
@@ -76,7 +76,7 @@ export const Navbar: React.FC = () => {
               {analysisNotification && <div className="nb-notif">1</div>}
               <StyledIcon className="c-nav-icon off" icon={AnalysisIconOff} />
               <StyledIcon className="c-nav-icon on" icon={AnalysisIconOn} />
-              {t('Nav.analysis')}
+              {t('navigation.analysis')}
             </NavLink>
           </li>
           <li className="c-nav-item">
@@ -87,7 +87,7 @@ export const Navbar: React.FC = () => {
             >
               <StyledIcon className="c-nav-icon off" icon={ParameterIconOff} />
               <StyledIcon className="c-nav-icon on" icon={ParameterIconOn} />
-              {t('Nav.options')}
+              {t('navigation.options')}
             </NavLink>
           </li>
         </ul>
diff --git a/src/components/Options/OptionsView.tsx b/src/components/Options/OptionsView.tsx
index 71ea75be877e6fea2a28e943131b035f3eebed9b..f7aebc22c445022249d5a023a012fd4dd2201dbb 100644
--- a/src/components/Options/OptionsView.tsx
+++ b/src/components/Options/OptionsView.tsx
@@ -18,10 +18,10 @@ const OptionsView: React.FC = () => {
   }
   return (
     <>
-      <CozyBar titleKey={'COMMON.APP_OPTIONS_TITLE'} />
+      <CozyBar titleKey={'common.title_options'} />
       <Header
         setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_OPTIONS_TITLE'}
+        desktopTitleKey={'common.title_options'}
       ></Header>
       <Content height={headerHeight}>
         <KonnectorViewerList isParam={true} />
diff --git a/src/components/Options/ReportOptions.tsx b/src/components/Options/ReportOptions.tsx
index a97b0617646edb14c17cd92a38eb616135bcdf11..57d81c147dd2319472d58c315cc737b14b9c0fe3 100644
--- a/src/components/Options/ReportOptions.tsx
+++ b/src/components/Options/ReportOptions.tsx
@@ -1,47 +1,47 @@
-import React from 'react'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useSelector, useDispatch } from 'react-redux'
-import { AppStore } from 'store'
-import { updateProfile } from 'store/profile/profile.actions'
-import './reportOptions.scss'
-
-const ReportOptions: React.FC = () => {
-  const { t } = useI18n()
-  const dispatch = useDispatch()
-  const profile = useSelector((state: AppStore) => state.ecolyo.profile)
-
-  const updateProfileReport = async (value: boolean) => {
-    dispatch(updateProfile({ sendAnalysisNotification: value }))
-  }
-
-  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
-    e.target.checked ? updateProfileReport(true) : updateProfileReport(false)
-  }
-
-  return (
-    <div className="report-option-root">
-      <div className="report-option-content">
-        <div className="head text-16-normal-uppercase">
-          {t('PROFILE.REPORT.TITLE')}
-        </div>
-        <div className="switch-container">
-          <label htmlFor="switch-report">
-            <input
-              type="checkbox"
-              id="switch-report"
-              name="switch-report"
-              checked={profile.sendAnalysisNotification}
-              onChange={handleChange}
-            />
-            <span className="switch-slider"></span>
-          </label>
-          <div className="text-16-normal">
-            {t('PROFILE.REPORT.SWITCH_LABEL')}
-          </div>
-        </div>
-      </div>
-    </div>
-  )
-}
-
-export default ReportOptions
+import React from 'react'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { useSelector, useDispatch } from 'react-redux'
+import { AppStore } from 'store'
+import { updateProfile } from 'store/profile/profile.actions'
+import './reportOptions.scss'
+
+const ReportOptions: React.FC = () => {
+  const { t } = useI18n()
+  const dispatch = useDispatch()
+  const profile = useSelector((state: AppStore) => state.ecolyo.profile)
+
+  const updateProfileReport = async (value: boolean) => {
+    dispatch(updateProfile({ sendAnalysisNotification: value }))
+  }
+
+  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
+    e.target.checked ? updateProfileReport(true) : updateProfileReport(false)
+  }
+
+  return (
+    <div className="report-option-root">
+      <div className="report-option-content">
+        <div className="head text-16-normal-uppercase">
+          {t('profile.report.title')}
+        </div>
+        <div className="switch-container">
+          <label htmlFor="switch-report">
+            <input
+              type="checkbox"
+              id="switch-report"
+              name="switch-report"
+              checked={profile.sendAnalysisNotification}
+              onChange={handleChange}
+            />
+            <span className="switch-slider"></span>
+          </label>
+          <div className="text-16-normal">
+            {t('profile.report.switch_label')}
+          </div>
+        </div>
+      </div>
+    </div>
+  )
+}
+
+export default ReportOptions
diff --git a/src/components/Options/__snapshots__/OptionsView.spec.tsx.snap b/src/components/Options/__snapshots__/OptionsView.spec.tsx.snap
index ebc5cd0a832c6bd2b474650249b2b64200f4a261..0470c2f8b482c3569bb7293b32a843f9283262c6 100644
--- a/src/components/Options/__snapshots__/OptionsView.spec.tsx.snap
+++ b/src/components/Options/__snapshots__/OptionsView.spec.tsx.snap
@@ -3,10 +3,10 @@
 exports[`OptionsView component should be rendered correctly 1`] = `
 <React.Fragment>
   <CozyBar
-    titleKey="COMMON.APP_OPTIONS_TITLE"
+    titleKey="common.title_options"
   />
   <Header
-    desktopTitleKey="COMMON.APP_OPTIONS_TITLE"
+    desktopTitleKey="common.title_options"
     setHeaderHeight={[Function]}
   />
   <Content
diff --git a/src/components/PerformanceIndicator/PerformanceIndicatorContent.tsx b/src/components/PerformanceIndicator/PerformanceIndicatorContent.tsx
index 365e7a1e3fc7f475e12548e539e11354ef765022..172ea56387ce65a0c7863e9dd357d82727616f62 100644
--- a/src/components/PerformanceIndicator/PerformanceIndicatorContent.tsx
+++ b/src/components/PerformanceIndicator/PerformanceIndicatorContent.tsx
@@ -1,151 +1,157 @@
-import React from 'react'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-
-import { TimeStep } from 'enum/timeStep.enum'
-import { PerformanceIndicator } from 'models'
-import { formatNumberValues } from 'utils/utils'
-
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import PileIcon from 'assets/icons/ico/coins.svg'
-
-import GreenIndicatorIcon from 'assets/icons/visu/indicator/green.svg'
-import RedIndicatorIcon from 'assets/icons/visu/indicator/red.svg'
-import GreyIndicatorIcon from 'assets/icons/visu/indicator/grey.svg'
-import ErrorIndicatorIcon from 'assets/icons/visu/indicator/error.svg'
-import { FluidType } from 'enum/fluid.enum'
-import './fluidPerformanceIndicator.scss'
-import { useSelector } from 'react-redux'
-import { AppStore } from 'store'
-import { convertDateToMonthString } from 'utils/date'
-
-interface PerformanceIndicatorContentProps {
-  performanceIndicator: PerformanceIndicator
-  timeStep: TimeStep
-  fluidLackOfData?: Array<FluidType>
-}
-
-const PerformanceIndicatorContent: React.FC<PerformanceIndicatorContentProps> = ({
-  performanceIndicator,
-  fluidLackOfData = [],
-}: PerformanceIndicatorContentProps) => {
-  const { t } = useI18n()
-  const profile = useSelector((state: AppStore) => state.ecolyo.profile)
-  let displayedValue: string
-  if (performanceIndicator && performanceIndicator.value)
-    displayedValue = formatNumberValues(performanceIndicator.value).toString()
-  else displayedValue = '-----'
-
-  let errorInPerf = false
-  if (performanceIndicator && !performanceIndicator.value) {
-    errorInPerf = true
-  }
-
-  let perf: number | null = null
-  let diffInEuro: number | null = null
-  if (
-    performanceIndicator &&
-    performanceIndicator.value &&
-    performanceIndicator.compareValue
-  ) {
-    perf =
-      100 * (performanceIndicator.value / performanceIndicator.compareValue - 1)
-    diffInEuro = performanceIndicator.value - performanceIndicator.compareValue
-  }
-  const perfString = perf ? formatNumberValues(perf) : ''
-  const diffString = diffInEuro ? formatNumberValues(diffInEuro) : ''
-  let perfStatus = ['error', ErrorIndicatorIcon]
-  if (perf === null && !errorInPerf) perfStatus = ['nodata', ErrorIndicatorIcon]
-  else if (perf === null && errorInPerf)
-    perfStatus = ['error', ErrorIndicatorIcon]
-  else if (perf && perf === 0) perfStatus = ['zero', GreyIndicatorIcon]
-  else if (perf && perf > 0) perfStatus = ['positive', RedIndicatorIcon]
-  else if (perf && perf < 0) perfStatus = ['negative', GreenIndicatorIcon]
-  return (
-    <div className="fpi">
-      <div className="fpi-left">
-        <div className="fpi-content">
-          <div className="fpi-content-perf">
-            <div className="fpi-content-perf-result card-result">
-              <div className="icon-line">
-                <StyledIcon
-                  className="fpi-content-icon perf-icon"
-                  icon={PileIcon}
-                  size={35}
-                />
-                <div>
-                  <span className="euro-value">{displayedValue}</span>
-                  <span className="card-indicator"> €</span>
-                </div>
-              </div>
-            </div>
-            {perfStatus[0] === 'positive' ||
-            perfStatus[0] === 'negative' ||
-            perfStatus[0] === 'zero' ? (
-              <div className="fpi-content-perf-indicator bilan-card card-text">
-                <div className="icon-line">
-                  <StyledIcon
-                    className="fpi-content-icon perf-icon"
-                    icon={perfStatus[1]}
-                    size={35}
-                  />
-                  <div className="evolution-text">
-                    {t('INDICATOR.BILAN.TEXT1')}
-                    {convertDateToMonthString(
-                      profile.monthlyAnalysisDate.plus({ month: -2 })
-                    ).substring(3)}{' '}
-                    :
-                    <span
-                      className={`fpi-content-perf-indicator-kpi ${perfStatus[0]} card-text-bold`}
-                    >
-                      {perfStatus[0] === 'positive' ? ' + ' : ' '}
-                      {perfString}%
-                    </span>
-                    <br />
-                    <span>
-                      {t('INDICATOR.BILAN.TEXT2')}
-                      <span className="diff-value">{diffString} €</span>
-                    </span>
-                  </div>
-                </div>
-              </div>
-            ) : (
-              <div className="fpi-content-perf-indicator card-text error">
-                <StyledIcon
-                  className="fpi-content-icon perf-icon"
-                  icon={perfStatus[1]}
-                  size={35}
-                />
-
-                {fluidLackOfData.length !== 0 ? (
-                  <div>
-                    <div> {t('INDICATOR.ERROR_NO_COMPARE_NO_DATA')} </div>
-                    <div>
-                      {fluidLackOfData.map(fluidType => {
-                        return (
-                          <div key={fluidType} className="fluid-enum">
-                            {' '}
-                            - {t(
-                              'FLUID.' + FluidType[fluidType] + '.NAME'
-                            )}{' '}
-                          </div>
-                        )
-                      })}
-                    </div>
-                  </div>
-                ) : (
-                  <div>
-                    <div> {t('INDICATOR.ERROR_NO_COMPARE')} </div>
-                    <div> {t('INDICATOR.ERROR_NO_COMPARE_REASON')} </div>
-                  </div>
-                )}
-              </div>
-            )}
-          </div>
-        </div>
-      </div>
-      <div className="fpi-right"></div>
-    </div>
-  )
-}
-
-export default PerformanceIndicatorContent
+import React from 'react'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+
+import { TimeStep } from 'enum/timeStep.enum'
+import { PerformanceIndicator } from 'models'
+import { formatNumberValues } from 'utils/utils'
+
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import PileIcon from 'assets/icons/ico/coins.svg'
+
+import GreenIndicatorIcon from 'assets/icons/visu/indicator/green.svg'
+import RedIndicatorIcon from 'assets/icons/visu/indicator/red.svg'
+import GreyIndicatorIcon from 'assets/icons/visu/indicator/grey.svg'
+import ErrorIndicatorIcon from 'assets/icons/visu/indicator/error.svg'
+import { FluidType } from 'enum/fluid.enum'
+import './fluidPerformanceIndicator.scss'
+import { useSelector } from 'react-redux'
+import { AppStore } from 'store'
+import { convertDateToMonthString } from 'utils/date'
+
+interface PerformanceIndicatorContentProps {
+  performanceIndicator: PerformanceIndicator
+  timeStep: TimeStep
+  fluidLackOfData?: Array<FluidType>
+}
+
+const PerformanceIndicatorContent: React.FC<PerformanceIndicatorContentProps> = ({
+  performanceIndicator,
+  fluidLackOfData = [],
+}: PerformanceIndicatorContentProps) => {
+  const { t } = useI18n()
+  const profile = useSelector((state: AppStore) => state.ecolyo.profile)
+  let displayedValue: string
+  if (performanceIndicator && performanceIndicator.value)
+    displayedValue = formatNumberValues(performanceIndicator.value).toString()
+  else displayedValue = '-----'
+
+  let errorInPerf = false
+  if (performanceIndicator && !performanceIndicator.value) {
+    errorInPerf = true
+  }
+
+  let perf: number | null = null
+  let diffInEuro: number | null = null
+  if (
+    performanceIndicator &&
+    performanceIndicator.value &&
+    performanceIndicator.compareValue
+  ) {
+    perf =
+      100 * (performanceIndicator.value / performanceIndicator.compareValue - 1)
+    diffInEuro = performanceIndicator.value - performanceIndicator.compareValue
+  }
+  const perfString = perf ? formatNumberValues(perf) : ''
+  const diffString = diffInEuro ? formatNumberValues(diffInEuro) : ''
+  let perfStatus = ['error', ErrorIndicatorIcon]
+  if (perf === null && !errorInPerf) perfStatus = ['nodata', ErrorIndicatorIcon]
+  else if (perf === null && errorInPerf)
+    perfStatus = ['error', ErrorIndicatorIcon]
+  else if (perf && perf === 0) perfStatus = ['zero', GreyIndicatorIcon]
+  else if (perf && perf > 0) perfStatus = ['positive', RedIndicatorIcon]
+  else if (perf && perf < 0) perfStatus = ['negative', GreenIndicatorIcon]
+  return (
+    <div className="fpi">
+      <div className="fpi-left">
+        <div className="fpi-content">
+          <div className="fpi-content-perf">
+            <div className="fpi-content-perf-result card-result">
+              <div className="icon-line">
+                <StyledIcon
+                  className="fpi-content-icon perf-icon"
+                  icon={PileIcon}
+                  size={35}
+                />
+                <div>
+                  <span className="euro-value">{displayedValue}</span>
+                  <span className="card-indicator"> €</span>
+                </div>
+              </div>
+            </div>
+            {perfStatus[0] === 'positive' ||
+            perfStatus[0] === 'negative' ||
+            perfStatus[0] === 'zero' ? (
+              <div className="fpi-content-perf-indicator bilan-card card-text">
+                <div className="icon-line">
+                  <StyledIcon
+                    className="fpi-content-icon perf-icon"
+                    icon={perfStatus[1]}
+                    size={35}
+                  />
+                  <div className="evolution-text">
+                    {t('performance_indicator.bilan.text1')}
+                    {convertDateToMonthString(
+                      profile.monthlyAnalysisDate.plus({ month: -2 })
+                    ).substring(3)}{' '}
+                    :
+                    <span
+                      className={`fpi-content-perf-indicator-kpi ${perfStatus[0]} card-text-bold`}
+                    >
+                      {perfStatus[0] === 'positive' ? ' + ' : ' '}
+                      {perfString}%
+                    </span>
+                    <br />
+                    <span>
+                      {t('performance_indicator.bilan.text2')}
+                      <span className="diff-value">{diffString} €</span>
+                    </span>
+                  </div>
+                </div>
+              </div>
+            ) : (
+              <div className="fpi-content-perf-indicator card-text error">
+                <StyledIcon
+                  className="fpi-content-icon perf-icon"
+                  icon={perfStatus[1]}
+                  size={35}
+                />
+
+                {fluidLackOfData.length !== 0 ? (
+                  <div>
+                    <div>
+                      {' '}
+                      {t('performance_indicator.error_no_compare_no_data')}{' '}
+                    </div>
+                    <div>
+                      {fluidLackOfData.map(fluidType => {
+                        return (
+                          <div key={fluidType} className="fluid-enum">
+                            {' '}
+                            - {t(
+                              'FLUID.' + FluidType[fluidType] + '.NAME'
+                            )}{' '}
+                          </div>
+                        )
+                      })}
+                    </div>
+                  </div>
+                ) : (
+                  <div>
+                    <div> {t('performance_indicator.error_no_compare')} </div>
+                    <div>
+                      {' '}
+                      {t('performance_indicator.error_no_compare_reason')}{' '}
+                    </div>
+                  </div>
+                )}
+              </div>
+            )}
+          </div>
+        </div>
+      </div>
+      <div className="fpi-right"></div>
+    </div>
+  )
+}
+
+export default PerformanceIndicatorContent
diff --git a/src/components/ProfileType/ProfileTypeView.tsx b/src/components/ProfileType/ProfileTypeView.tsx
index f20369454443ca47cb3397da8b4923e789040feb..0a9ddec9dd31a951daaf6a8ca851cd176c56b178 100644
--- a/src/components/ProfileType/ProfileTypeView.tsx
+++ b/src/components/ProfileType/ProfileTypeView.tsx
@@ -157,13 +157,10 @@ const ProfileTypeView = () => {
 
   return (
     <>
-      <CozyBar
-        titleKey={'COMMON.APP_PROFILETYPE_TITLE'}
-        displayBackArrow={true}
-      />
+      <CozyBar titleKey={'common.title_profiletype'} displayBackArrow={true} />
       <Header
         setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_PROFILETYPE_TITLE'}
+        desktopTitleKey={'common.title_profiletype'}
         displayBackArrow={true}
       ></Header>
       <Content height={headerHeight}>
diff --git a/src/components/Quiz/QuizView.tsx b/src/components/Quiz/QuizView.tsx
index ff2f84d2be17583c09be87d78ffe9cd1e0d596b2..1881b11c84e44a1d8a87601be166860173ca1bdd 100644
--- a/src/components/Quiz/QuizView.tsx
+++ b/src/components/Quiz/QuizView.tsx
@@ -1,51 +1,51 @@
-import React, { useCallback, useState } from 'react'
-import { useSelector } from 'react-redux'
-import { AppStore } from 'store'
-import CozyBar from 'components/Header/CozyBar'
-import Content from 'components/Content/Content'
-import Header from 'components/Header/Header'
-import { UserQuizState } from 'enum/userQuiz.enum'
-import QuizBegin from './QuizBegin'
-import { UserChallenge } from 'models'
-import QuizQuestion from './QuizQuestion'
-import QuizFinish from './QuizFinish'
-
-const QuizView: React.FC = () => {
-  const [headerHeight, setHeaderHeight] = useState<number>(0)
-  const { currentChallenge } = useSelector(
-    (state: AppStore) => state.ecolyo.challenge
-  )
-
-  const defineHeaderHeight = useCallback((height: number) => {
-    setHeaderHeight(height)
-  }, [])
-
-  const renderQuiz = (challenge: UserChallenge) => {
-    switch (challenge.quiz.state) {
-      case UserQuizState.UNLOCKED:
-        return <QuizBegin userChallenge={challenge} />
-      case UserQuizState.ONGOING:
-        return <QuizQuestion userChallenge={challenge} />
-      case UserQuizState.DONE:
-        return <QuizFinish userChallenge={challenge} />
-      default:
-        return <QuizBegin userChallenge={challenge} />
-    }
-  }
-
-  return (
-    <>
-      <CozyBar titleKey={'COMMON.APP_QUIZ_TITLE'} displayBackArrow={true} />
-      <Header
-        setHeaderHeight={defineHeaderHeight}
-        desktopTitleKey={'COMMON.APP_QUIZ_TITLE'}
-        displayBackArrow={true}
-      ></Header>
-      <Content height={headerHeight}>
-        {currentChallenge && renderQuiz(currentChallenge)}
-      </Content>
-    </>
-  )
-}
-
-export default QuizView
+import React, { useCallback, useState } from 'react'
+import { useSelector } from 'react-redux'
+import { AppStore } from 'store'
+import CozyBar from 'components/Header/CozyBar'
+import Content from 'components/Content/Content'
+import Header from 'components/Header/Header'
+import { UserQuizState } from 'enum/userQuiz.enum'
+import QuizBegin from './QuizBegin'
+import { UserChallenge } from 'models'
+import QuizQuestion from './QuizQuestion'
+import QuizFinish from './QuizFinish'
+
+const QuizView: React.FC = () => {
+  const [headerHeight, setHeaderHeight] = useState<number>(0)
+  const { currentChallenge } = useSelector(
+    (state: AppStore) => state.ecolyo.challenge
+  )
+
+  const defineHeaderHeight = useCallback((height: number) => {
+    setHeaderHeight(height)
+  }, [])
+
+  const renderQuiz = (challenge: UserChallenge) => {
+    switch (challenge.quiz.state) {
+      case UserQuizState.UNLOCKED:
+        return <QuizBegin userChallenge={challenge} />
+      case UserQuizState.ONGOING:
+        return <QuizQuestion userChallenge={challenge} />
+      case UserQuizState.DONE:
+        return <QuizFinish userChallenge={challenge} />
+      default:
+        return <QuizBegin userChallenge={challenge} />
+    }
+  }
+
+  return (
+    <>
+      <CozyBar titleKey={'common.title_quiz'} displayBackArrow={true} />
+      <Header
+        setHeaderHeight={defineHeaderHeight}
+        desktopTitleKey={'common.title_quiz'}
+        displayBackArrow={true}
+      ></Header>
+      <Content height={headerHeight}>
+        {currentChallenge && renderQuiz(currentChallenge)}
+      </Content>
+    </>
+  )
+}
+
+export default QuizView
diff --git a/src/components/Splash/SplashScreenError.tsx b/src/components/Splash/SplashScreenError.tsx
index 4d48a3bde9e75473a233b377f9eaacf20d05ca10..d304a0843e488e82df1d1b636e6900006557bb5f 100644
--- a/src/components/Splash/SplashScreenError.tsx
+++ b/src/components/Splash/SplashScreenError.tsx
@@ -30,7 +30,7 @@ const SplashScreenError: React.FC = () => {
       </div>
       <div className="splash-footer">
         <div className="splash-footer-error-text text-16-normal">
-          {t('LOADING.ERROR_LOADING')}
+          {t('splashscreen.error_loading')}
         </div>
         <MuiButton
           className="splash-footer-button"
@@ -40,7 +40,7 @@ const SplashScreenError: React.FC = () => {
             label: 'text-16-bold',
           }}
         >
-          {t('LOADING.RELOAD')}
+          {t('splashscreen.button_reload')}
         </MuiButton>
       </div>
     </>
diff --git a/src/components/TimeStepSelector/TimeStepSelector.tsx b/src/components/TimeStepSelector/TimeStepSelector.tsx
index 20c1d4b89cce0b73ccde9dcb67ba9ed9b799e08c..5b675b822ef35b381d2c8b0a408eda8b21baf093 100644
--- a/src/components/TimeStepSelector/TimeStepSelector.tsx
+++ b/src/components/TimeStepSelector/TimeStepSelector.tsx
@@ -1,129 +1,129 @@
-import React from 'react'
-import './timeStepSelector.scss'
-import { useI18n } from 'cozy-ui/transpiled/react/I18n'
-import { useDispatch, useSelector } from 'react-redux'
-import { AppStore } from 'store'
-import { setCurrentIndex, setCurrentTimeStep } from 'store/chart/chart.actions'
-import classNames from 'classnames'
-
-import DateChartService from 'services/dateChart.service'
-import { FluidType } from 'enum/fluid.enum'
-import { TimeStep } from 'enum/timeStep.enum'
-
-import MuiButton from '@material-ui/core/Button'
-import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
-import ZoomInIcon from 'assets/icons/ico/zoom-in.svg'
-import ZoomOutIcon from 'assets/icons/ico/zoom-out.svg'
-
-interface TimeStepSelectorProps {
-  fluidType: FluidType
-}
-
-const TimeStepSelector: React.FC<TimeStepSelectorProps> = ({
-  fluidType,
-}: TimeStepSelectorProps) => {
-  const { currentTimeStep, selectedDate } = useSelector(
-    (state: AppStore) => state.ecolyo.chart
-  )
-  const { t } = useI18n()
-  const dispatch = useDispatch()
-  const dateChartService = new DateChartService()
-
-  const timeStepElecArray: TimeStep[] = [
-    TimeStep.HALF_AN_HOUR,
-    TimeStep.WEEK,
-    TimeStep.DAY,
-    TimeStep.MONTH,
-    TimeStep.YEAR,
-  ]
-  const timeStepMultiArray: TimeStep[] = [
-    TimeStep.WEEK,
-    TimeStep.DAY,
-    TimeStep.MONTH,
-    TimeStep.YEAR,
-  ]
-  const timeStepArray: TimeStep[] =
-    fluidType === FluidType.ELECTRICITY
-      ? [...timeStepElecArray]
-      : [...timeStepMultiArray]
-
-  const handleZoomInClick = () => {
-    const previousTimeStep: TimeStep = dateChartService.definePreviousTimeStep(
-      currentTimeStep
-    )
-    const index: number = dateChartService.defineDateIndex(
-      previousTimeStep,
-      selectedDate
-    )
-    dispatch(setCurrentTimeStep(previousTimeStep))
-    dispatch(setCurrentIndex(index))
-  }
-  const handleZoomOutClick = () => {
-    const nextTimeStep: TimeStep = dateChartService.defineNextTimeStep(
-      currentTimeStep
-    )
-    const index: number = dateChartService.defineDateIndex(
-      nextTimeStep,
-      selectedDate
-    )
-    dispatch(setCurrentTimeStep(nextTimeStep))
-    dispatch(setCurrentIndex(index))
-  }
-
-  const disableZoomIn =
-    fluidType === FluidType.ELECTRICITY
-      ? currentTimeStep === TimeStep.HALF_AN_HOUR
-      : currentTimeStep === TimeStep.WEEK
-  const disableZoomOut = currentTimeStep === TimeStep.YEAR
-
-  return (
-    <div className={'timestep-selector'}>
-      <MuiButton
-        onClick={handleZoomInClick}
-        disabled={disableZoomIn}
-        classes={{
-          root: classNames('btn-secondary-negative', {
-            ['disabled']: disableZoomIn,
-          }),
-          label: 'text-16-normal',
-        }}
-      >
-        <StyledIcon icon={ZoomInIcon} size={26} />
-      </MuiButton>
-      <div className={'timestep-container'}>
-        <ul className={'timestep-bar'}>
-          {timeStepArray.map((step, key) => {
-            return (
-              <React.Fragment key={key}>
-                <li
-                  className={
-                    step === currentTimeStep ? 'active circle' : 'circle'
-                  }
-                >
-                  <span className={'text text-14-normal'}>
-                    {t(`TIMESTEP.${TimeStep[step]}.PERIOD`)}
-                  </span>
-                </li>
-                <span className="bar"></span>
-              </React.Fragment>
-            )
-          })}
-        </ul>
-      </div>
-      <MuiButton
-        onClick={handleZoomOutClick}
-        disabled={disableZoomOut}
-        classes={{
-          root: classNames('btn-secondary-negative', {
-            ['disabled']: disableZoomOut,
-          }),
-          label: 'text-16-normal',
-        }}
-      >
-        <StyledIcon icon={ZoomOutIcon} size={26} />
-      </MuiButton>
-    </div>
-  )
-}
-
-export default TimeStepSelector
+import React from 'react'
+import './timeStepSelector.scss'
+import { useI18n } from 'cozy-ui/transpiled/react/I18n'
+import { useDispatch, useSelector } from 'react-redux'
+import { AppStore } from 'store'
+import { setCurrentIndex, setCurrentTimeStep } from 'store/chart/chart.actions'
+import classNames from 'classnames'
+
+import DateChartService from 'services/dateChart.service'
+import { FluidType } from 'enum/fluid.enum'
+import { TimeStep } from 'enum/timeStep.enum'
+
+import MuiButton from '@material-ui/core/Button'
+import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import ZoomInIcon from 'assets/icons/ico/zoom-in.svg'
+import ZoomOutIcon from 'assets/icons/ico/zoom-out.svg'
+
+interface TimeStepSelectorProps {
+  fluidType: FluidType
+}
+
+const TimeStepSelector: React.FC<TimeStepSelectorProps> = ({
+  fluidType,
+}: TimeStepSelectorProps) => {
+  const { currentTimeStep, selectedDate } = useSelector(
+    (state: AppStore) => state.ecolyo.chart
+  )
+  const { t } = useI18n()
+  const dispatch = useDispatch()
+  const dateChartService = new DateChartService()
+
+  const timeStepElecArray: TimeStep[] = [
+    TimeStep.HALF_AN_HOUR,
+    TimeStep.WEEK,
+    TimeStep.DAY,
+    TimeStep.MONTH,
+    TimeStep.YEAR,
+  ]
+  const timeStepMultiArray: TimeStep[] = [
+    TimeStep.WEEK,
+    TimeStep.DAY,
+    TimeStep.MONTH,
+    TimeStep.YEAR,
+  ]
+  const timeStepArray: TimeStep[] =
+    fluidType === FluidType.ELECTRICITY
+      ? [...timeStepElecArray]
+      : [...timeStepMultiArray]
+
+  const handleZoomInClick = () => {
+    const previousTimeStep: TimeStep = dateChartService.definePreviousTimeStep(
+      currentTimeStep
+    )
+    const index: number = dateChartService.defineDateIndex(
+      previousTimeStep,
+      selectedDate
+    )
+    dispatch(setCurrentTimeStep(previousTimeStep))
+    dispatch(setCurrentIndex(index))
+  }
+  const handleZoomOutClick = () => {
+    const nextTimeStep: TimeStep = dateChartService.defineNextTimeStep(
+      currentTimeStep
+    )
+    const index: number = dateChartService.defineDateIndex(
+      nextTimeStep,
+      selectedDate
+    )
+    dispatch(setCurrentTimeStep(nextTimeStep))
+    dispatch(setCurrentIndex(index))
+  }
+
+  const disableZoomIn =
+    fluidType === FluidType.ELECTRICITY
+      ? currentTimeStep === TimeStep.HALF_AN_HOUR
+      : currentTimeStep === TimeStep.WEEK
+  const disableZoomOut = currentTimeStep === TimeStep.YEAR
+
+  return (
+    <div className={'timestep-selector'}>
+      <MuiButton
+        onClick={handleZoomInClick}
+        disabled={disableZoomIn}
+        classes={{
+          root: classNames('btn-secondary-negative', {
+            ['disabled']: disableZoomIn,
+          }),
+          label: 'text-16-normal',
+        }}
+      >
+        <StyledIcon icon={ZoomInIcon} size={26} />
+      </MuiButton>
+      <div className={'timestep-container'}>
+        <ul className={'timestep-bar'}>
+          {timeStepArray.map((step, key) => {
+            return (
+              <React.Fragment key={key}>
+                <li
+                  className={
+                    step === currentTimeStep ? 'active circle' : 'circle'
+                  }
+                >
+                  <span className={'text text-14-normal'}>
+                    {t(`timestep.${TimeStep[step].toLowerCase()}.period`)}
+                  </span>
+                </li>
+                <span className="bar"></span>
+              </React.Fragment>
+            )
+          })}
+        </ul>
+      </div>
+      <MuiButton
+        onClick={handleZoomOutClick}
+        disabled={disableZoomOut}
+        classes={{
+          root: classNames('btn-secondary-negative', {
+            ['disabled']: disableZoomOut,
+          }),
+          label: 'text-16-normal',
+        }}
+      >
+        <StyledIcon icon={ZoomOutIcon} size={26} />
+      </MuiButton>
+    </div>
+  )
+}
+
+export default TimeStepSelector
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 1c93c8dd13eccf81eb5ca62cbec80029ab42dd3c..13cc215af346ee3e14b099a6c4b48a08a3000fa9 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -5,56 +5,18 @@
       "long_description": "Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre la consommation énergétique globale de votre foyer afin de vous accompagner dans la gestion de votre consommation quotidienne de façon ludique en vous lançant des défis personnalisés."
     }
   },
-  "Nav": {
-    "consumption": "Conso",
-    "challenges": "Défis",
-    "ECOGESTURES": "Ecogestes",
-    "options": "Options",
-    "analysis": "Analyse"
-  },
-  "COMMON": {
-    "APP_TITLE": "Ecolyo",
-    "APP_CHALLENGE_TITLE": "Défi",
-    "APP_QUIZ_TITLE": "Quiz",
-    "APP_EXPLORATION_TITLE": "Exploration",
-    "APP_ACTION_TITLE": "Action",
-    "APP_DUEL_TITLE": "Duel final",
-    "APP_ECO_GESTURE_TITLE": "Ecogestes",
-    "APP_OPTIONS_TITLE": "Options",
-    "APP_PROFILETYPE_TITLE": "Ajuster mon profil",
-    "NODATA": "Pas de données",
-    "LASTDATA": "Dernières données",
-    "LASTVALIDDATA": "Dernières données valides",
-    "DATATOCOME": "à venir",
-    "MINI_CARDS_LABEL": "AUTRES ENERGIES",
-    "APP_FAQ_TITLE": "FAQ",
-    "APP_LEGAL_TITLE": "Mentions légales",
-    "MODAL_OK": "Ok"
-  },
-  "header": {
-    "accessibility": {
-      "button_back": "Retour à la page précédente",
-      "button_open_feedbacks": "Ouvrir le partage de retours"
-    }
-  },
-  "modal": {
-    "accessibility": {
-      "button_close": "Fermer cette fenètre"
-    }
-  },
-  "welcome_modal": {
-    "title": "Félicitations",
-    "perso": "Votre espace personnel a bien été créé.",
-    "connect": "Vous pouvez maintenant connecter vos compteurs d’énergie à Ecolyo en toute sécurité.",
-    "button_valid": "Ok",
-    "accessibility": {
-      "title": "Fenètre de félicitations",
-      "button_valid": "Valider"
-    }
-  },
-  "LOADING": {
-    "ERROR_LOADING": "Erreur pendant le chargement des données. Veuillez vérifier votre connexion internet.",
-    "RELOAD": "Recharger"
+  "common": {
+    "title_app": "Ecolyo",
+    "title_challenge": "Défi",
+    "title_quiz": "Quiz",
+    "title_exploration": "Exploration",
+    "title_action": "Action",
+    "title_duel": "Duel final",
+    "title_ecogestures": "Ecogestes",
+    "title_options": "Options",
+    "title_profiletype": "Ajuster mon profil",
+    "title_faq": "FAQ",
+    "title_legal_notice": "Mentions légales"
   },
   "FLUID": {
     "ELECTRICITY": {
@@ -87,118 +49,58 @@
       "UNIT": "€"
     }
   },
-  "TIMESTEP": {
-    "YEAR": {
-      "PERIOD": "5 ans",
-      "COMPARELABEL": "Comparer à l'année précédente"
-    },
-    "MONTH": {
-      "PERIOD": "Année",
-      "COMPARELABEL": "Comparer au mois précédent"
-    },
-    "DAY": {
-      "PERIOD": "Mois",
-      "COMPARELABEL": "Comparer au mois précédent"
-    },
-    "WEEK": {
-      "PERIOD": "Semaine",
-      "COMPARELABEL": "Comparer à la semaine précédente"
-    },
-    "HALF_AN_HOUR": {
-      "PERIOD": "Jour",
-      "COMPARELABEL": "Comparer à la journée précédente"
-    }
-  },
-  "consumption": {
-    "display_last_data": "Voir mes dernières consos",
-    "accessibility": {
-      "button_previous_period": "Afficher la période précédente",
-      "button_next_period": "Afficher la période suivante",
-      "button_previous_value": "Sélectionner la valeur précédente",
-      "button_next_value": "Sélectionner la valeur suivante"
-    }
-  },
-  "PROFILE": {
-    "REPORT": {
-      "TITLE": "Notification par mail",
-      "SWITCH_LABEL": "Être prévenu de la parution de mon bilan mensuel"
-    }
+  "action": {
+    "duration": "Durée : %{smart_count} jours",
+    "result": "Résultat",
+    "finished": "Défi terminé !",
+    "details": "Détail de l'écogeste",
+    "apply": "J'applique cette action",
+    "other": "Je choisis une autre action",
+    "hint": "Je pourrais visualiser la différence à la fin du défi.",
+    "resultText1": "Cela n'a pas été trop difficile ?",
+    "resultText2": "Jetez un coup d'oeil dans la page conso dans 1 à 3 jours, le temps que vos données arrivent, pour voir l'impact de votre écogeste.",
+    "resultText3": "Pas de baisse de significative ? Pas de panique, en maintenant cette pratique dans le temps, les économies d'énergies et d'eau seront davantage visibles.",
+    "resultText4": "Dans tous les cas, bravo, vous remportez...",
+    "ok": "Ok"
   },
-  "konnector_form": {
-    "title": "Connexion aux distributeurs",
-    "label_updated_at": "dernière mise-à-jour le",
-    "button_update": "Mettre à jour",
-    "button_delete": "Supprimer",
-    "not_installed": "Le connecteur n'est pas installé. Veuillez l'installer en cliquant sur le bouton ci-dessous.",
-    "button_install": "Installer",
-    "error_account_creation": "Une erreur est survenue, veuillez essayer de nouveau.",
-    "error_no_login_password": "Identifiant et mot de passe requis",
-    "error_login_failed": "Identifiants invalides",
-    "error_update": "Un problème est survenu lors du rappatriement de vos données.",
-    "error_update_oauth": "Le service demande d'autoriser à nouveau votre accès. Merci de supprimer puis reconnecter votre compte. Aucune donnée ne sera perdue.",
-    "OK": "Ok",
+  "action_modal": {
+    "accept": "Je relève le défi",
+    "refuse": "Je me défile",
     "accessibility": {
-      "button_install": "Installer le connecteur",
-      "button_update": "Mettre à jour la connexion",
-      "button_delete": "Supprimer la connexion"
+      "window_title": "Fenètre de confirmation",
+      "button_accept": "Accepter",
+      "button_refuse": "Refuser"
     }
   },
-  "konnector_options": {
-    "label_connect_to_electricity": "Se connecter à l'électricité",
-    "label_connect_to_water": "Se connecter à l'eau",
-    "label_connect_to_gas": "Se connecter au gaz",
+  "analysis": {
+    "viewTitle": "Analyse",
+    "status": "Votre situation",
+    "comparison": "Comparatif",
+    "analysis_date": "Conso du mois",
+    "detail": "Détail du mois",
+    "challenge": "Défis terminés en",
+    "user_consumption": "Votre conso",
+    "average_home": "Conso moyenne d'un profil similaire",
+    "ideal_home": "Conso idéale pour votre profil",
+    "approximate_title": "Cette comparaison est très approximative.",
+    "approximative_description": "Pour une comparaison plus précise, vous pouvez ajuster votre profil de consommation :",
+    "adjust_profile": "Ajuster mon profil",
+    "not_connected": "Non connecté",
     "accessibility": {
-      "button_show_detail_electricity": "Afficher le détail de la connexion a l'électricité",
-      "button_show_detail_water": "Afficher le détail de la connexion à l'eau",
-      "button_show_detail_gas": "Afficher le détail de la connexion au gaz",
-      "button_hide_detail_electricity": "Afficher le détail de la connexion a l'électricité",
-      "button_hide_detail_water": "Afficher le détail de la connexion à l'eau",
-      "button_hide_detail_gas": "Afficher le détail de la connexion au gaz"
+      "button_go_to_profil": "Aller à la page de profil"
     }
   },
-  "konnector_modal": {
-    "loading_data": "Veuillez patienter, vos données sont en cours de chargement.",
-    "loading_data_update": "Veuillez patienter, vos données sont en cours de mise à jour.",
-    "success_txt": "Félicitations !",
-    "success_data_electricity": "Vos données de consommation d'électricité sont maintenant connectées à Ecolyo.",
-    "success_data_water": "Vos données de consommation d'eau sont maintenant connectées à Ecolyo.",
-    "success_data_gas": "Vos données de consommation de gaz sont maintenant connectées à Ecolyo.",
-    "success_data_update_electricity": "Vos données de consommation d'électricité sont maintenant à jour dans Ecolyo.",
-    "success_data_update_water": "Vos données de consommation d'eau sont maintenant à jour dans Ecolyo.",
-    "success_data_update_gas": "Vos données de consommation de gaz sont maintenant à jour dans Ecolyo.",
-    "error_txt": "Aïe !",
-    "error_data_electricity": "Un problème a empêché vos données de consommation d'électricité de se connecter à Ecolyo.",
-    "error_data_water": "Un problème a empêché vos données de consommation d'eau de se connecter à Ecolyo.",
-    "error_data_gas": "Un problème a empêché vos données de consommation de gaz de se connecter à Ecolyo.",
-    "error_data_update_electricity": "Un problème a empêché vos données de consommation d'électricité de se mettre à jour dans Ecolyo.",
-    "error_data_update_water": "Un problème a empêché vos données de consommation d'eau de se mettre à jour dans Ecolyo.",
-    "error_data_update_gas": "Un problème a empêché vos données de consommation de gaz de se mettre à jour dans Ecolyo.",
-    "error_data_2": "Merci de réessayer plus tard.",
-    "button_validate": "Ok",
+  "analysis_error_modal": {
+    "title": "Aucune analyse",
+    "message": "Pour profiter d’une analyse de vos consommations, connectez au moins un de vos compteurs.",
+    "go_to_options": "Je connecte mes connecteurs",
+    "go_back": "Retour",
     "accessibility": {
-      "window_title": "Fenètre d'attente de connexion",
-      "button_close": "Fermer la fenètre"
+      "window_title": "Fenètre d'erreur",
+      "button_go_back": "Retour",
+      "button_goto_konnector": "Aller aux connecteurs"
     }
   },
-  "INDICATOR": {
-    "DETAIL": "Détail par fluide",
-    "CONNECT": "Connecter d'autres fluides",
-    "BILAN": {
-      "TEXT1": "Par rapport à ",
-      "TEXT2": "soit une différence de : "
-    },
-    "ERROR_NO_COMPARE": "comparaison impossible",
-    "ERROR_NO_COMPARE_REASON": "(manque de données)",
-    "ERROR_NO_COMPARE_NO_DATA": "Vos consommations pour cette période sont incomplètes à cause d’un problème technique concernant :"
-  },
-  "FAQ": {
-    "TITLE_FAQ": "Foire aux questions",
-    "READ_FAQ": "Lire la FAQ"
-  },
-  "LEGAL": {
-    "TITLE_LEGAL": "Mentions légales",
-    "READ_LEGAL": "Lire les mentions légales"
-  },
   "auth": {
     "enedisgrandlyon": {
       "connect": {
@@ -261,91 +163,6 @@
       "button_create_account": "Se créer un compte"
     }
   },
-  "oauth": {
-    "window": {
-      "title": "OAuth"
-    }
-  },
-  "timestep": {
-    "activate": {
-      "enedis": {
-        "info": "Pour visualiser vos consommations à la 1/2 heure, il vous faut valider l'activation de l'enregistrement de votre consommation horaire sur votre compte Enedis",
-        "label1": "Activer sur mon compte Enedis",
-        "accessibility": {
-          "button_activate": "Aller sur mon compte Enedis"
-        }
-      }
-    }
-  },
-  "feedback": {
-    "title": "Partagez-nous vos retours",
-    "type": "Motif du retour :",
-    "description": "Description :",
-    "description_placeholder": "Vos remarques",
-    "send": "Envoyer",
-    "ok": "Ok",
-    "type_bug": "Bug",
-    "type_idea": "Idée",
-    "type_other": "Autre",
-    "success_sending": "Nous vous remercions pour votre retour.",
-    "warning": "Attention !",
-    "error_empty_description": "Le champ de description est vide.",
-    "error_sending": "Erreur lors de l'envoi, veuillez essayer ultérieurement.",
-    "accessibility": {
-      "window_title": "Fenètre de partage de retours",
-      "select_type_bug": "Sélectionner le motif bug",
-      "select_type_idea": "Sélectionner le motif idée",
-      "select_type_other": "Sélectionner le motif autre",
-      "button_send": "Envoyer le retour",
-      "button_ok": "Valider",
-      "button_close": "Fermer la fenêtre de partage de retours"
-    }
-  },
-  "old_fluid_data_modal": {
-    "errorTxt": "Aïe !",
-    "oldData": "Vos données semblent anciennes",
-    "verify": "Veuillez vérifier l’état de vos connecteurs : ",
-    "problem": "Vos connecteurs semblent bien connectés, il se peut qu’il y ait un problème au niveau du ou des fournisseurs de données :",
-    "contact": "Veuillez prendre contact directement avec eux.",
-    "accessButton": "Accéder aux connecteurs",
-    "later": "Plus tard",
-    "ok": "Ok",
-    "accessibility": {
-      "window_title": "Fenètre d'information",
-      "button_ok": "Fermer la fenètre",
-      "button_later": "Fermer la fenètre",
-      "button_goto_konnector": "Aller aux connecteurs"
-    }
-  },
-  "analysis": {
-    "viewTitle": "Analyse",
-    "status": "Votre situation",
-    "comparison": "Comparatif",
-    "analysis_date": "Conso du mois",
-    "detail": "Détail du mois",
-    "challenge": "Défis terminés en",
-    "user_consumption": "Votre conso",
-    "average_home": "Conso moyenne d'un profil similaire",
-    "ideal_home": "Conso idéale pour votre profil",
-    "approximate_title": "Cette comparaison est très approximative.",
-    "approximative_description": "Pour une comparaison plus précise, vous pouvez ajuster votre profil de consommation :",
-    "adjust_profile": "Ajuster mon profil",
-    "not_connected": "Non connecté",
-    "accessibility": {
-      "button_go_to_profil": "Aller à la page de profil"
-    }
-  },
-  "analysis_error_modal": {
-    "title": "Aucune analyse",
-    "message": "Pour profiter d’une analyse de vos consommations, connectez au moins un de vos compteurs.",
-    "go_to_options": "Je connecte mes connecteurs",
-    "go_back": "Retour",
-    "accessibility": {
-      "window_title": "Fenètre d'erreur",
-      "button_go_back": "Retour",
-      "button_goto_konnector": "Aller aux connecteurs"
-    }
-  },
   "challenge": {
     "card": {
       "ongoing": {
@@ -388,6 +205,26 @@
       "button_validate": "Valider"
     }
   },
+  "consumption": {
+    "display_last_data": "Voir mes dernières consos",
+    "accessibility": {
+      "button_previous_period": "Afficher la période précédente",
+      "button_next_period": "Afficher la période suivante",
+      "button_previous_value": "Sélectionner la valeur précédente",
+      "button_next_value": "Sélectionner la valeur suivante"
+    }
+  },
+  "consumption_details": {
+    "detail": "Détail par fluide",
+    "connect": "Connecter d'autres fluides",
+    "mini_cards_label": "AUTRES ENERGIES",
+  },
+  "consumption_visualizer": {
+    "no_data": "Pas de données",
+    "last_data": "Dernières données",
+    "last_valid_data": "Dernières données valides",
+    "data_to_come": "à venir"
+  },
   "duel": {
     "global_error": "Oups.. Une erreur est parvenue. Veuillez retourner à l'écran des défis",
     "button_go_back": "Retour",
@@ -478,24 +315,6 @@
       "button_close": "Fermer la fenètre"
     }
   },
-  "quiz": {
-    "explanation": "Répondez correctement aux 5 questions et remportez 5 des 15 étoiles nécessaires pour débloquer le duel final",
-    "score_final": "SCORE FINAL",
-    "correct": "Bravo !",
-    "wrong": "Raté !",
-    "rightAnswer": "Bonne réponse :",
-    "earn": "Vous remportez",
-    "go_back": "Retour",
-    "youpi": "Youpi !",
-    "try_again": "Rééssayer",
-    "confirm": "Valider",
-    "next": "Suivant",
-    "consumption_question": "Question sur votre consommation",
-    "accessibility": {
-      "window_title": "Fenètre de résultat",
-      "button_go_next": "Suivant"
-    }
-  },
   "exploration": {
     "global_error": "Oups.. Une erreur est parvenue. Veuillez retourner à l'écran des défis",
     "go_back": "Retour",
@@ -511,27 +330,141 @@
       "explanation": "Vous pouvez vérifier cette informations sur l'écran Conso."
     }
   },
-  "action": {
-    "duration": "Durée : %{smart_count} jours",
-    "result": "Résultat",
-    "finished": "Défi terminé !",
-    "details": "Détail de l'écogeste",
-    "apply": "J'applique cette action",
-    "other": "Je choisis une autre action",
-    "hint": "Je pourrais visualiser la différence à la fin du défi.",
-    "resultText1": "Cela n'a pas été trop difficile ?",
-    "resultText2": "Jetez un coup d'oeil dans la page conso dans 1 à 3 jours, le temps que vos données arrivent, pour voir l'impact de votre écogeste.",
-    "resultText3": "Pas de baisse de significative ? Pas de panique, en maintenant cette pratique dans le temps, les économies d'énergies et d'eau seront davantage visibles.",
-    "resultText4": "Dans tous les cas, bravo, vous remportez...",
-    "ok": "Ok"
+  "faq": {
+    "title_faq": "Foire aux questions",
+    "read_faq": "Lire la FAQ"
   },
-  "action_modal": {
-    "accept": "Je relève le défi",
-    "refuse": "Je me défile",
+  "feedback": {
+    "title": "Partagez-nous vos retours",
+    "type": "Motif du retour :",
+    "description": "Description :",
+    "description_placeholder": "Vos remarques",
+    "send": "Envoyer",
+    "ok": "Ok",
+    "type_bug": "Bug",
+    "type_idea": "Idée",
+    "type_other": "Autre",
+    "success_sending": "Nous vous remercions pour votre retour.",
+    "warning": "Attention !",
+    "error_empty_description": "Le champ de description est vide.",
+    "error_sending": "Erreur lors de l'envoi, veuillez essayer ultérieurement.",
     "accessibility": {
-      "window_title": "Fenètre de confirmation",
-      "button_accept": "Accepter",
-      "button_refuse": "Refuser"
+      "window_title": "Fenètre de partage de retours",
+      "select_type_bug": "Sélectionner le motif bug",
+      "select_type_idea": "Sélectionner le motif idée",
+      "select_type_other": "Sélectionner le motif autre",
+      "button_send": "Envoyer le retour",
+      "button_ok": "Valider",
+      "button_close": "Fermer la fenêtre de partage de retours"
+    }
+  },
+  "header": {
+    "accessibility": {
+      "button_back": "Retour à la page précédente",
+      "button_open_feedbacks": "Ouvrir le partage de retours"
+    }
+  },
+  "konnector_form": {
+    "title": "Connexion aux distributeurs",
+    "label_updated_at": "dernière mise-à-jour le",
+    "button_update": "Mettre à jour",
+    "button_delete": "Supprimer",
+    "not_installed": "Le connecteur n'est pas installé. Veuillez l'installer en cliquant sur le bouton ci-dessous.",
+    "button_install": "Installer",
+    "error_account_creation": "Une erreur est survenue, veuillez essayer de nouveau.",
+    "error_no_login_password": "Identifiant et mot de passe requis",
+    "error_login_failed": "Identifiants invalides",
+    "error_update": "Un problème est survenu lors du rappatriement de vos données.",
+    "error_update_oauth": "Le service demande d'autoriser à nouveau votre accès. Merci de supprimer puis reconnecter votre compte. Aucune donnée ne sera perdue.",
+    "OK": "Ok",
+    "accessibility": {
+      "button_install": "Installer le connecteur",
+      "button_update": "Mettre à jour la connexion",
+      "button_delete": "Supprimer la connexion"
+    }
+  },
+  "konnector_options": {
+    "label_connect_to_electricity": "Se connecter à l'électricité",
+    "label_connect_to_water": "Se connecter à l'eau",
+    "label_connect_to_gas": "Se connecter au gaz",
+    "accessibility": {
+      "button_show_detail_electricity": "Afficher le détail de la connexion a l'électricité",
+      "button_show_detail_water": "Afficher le détail de la connexion à l'eau",
+      "button_show_detail_gas": "Afficher le détail de la connexion au gaz",
+      "button_hide_detail_electricity": "Afficher le détail de la connexion a l'électricité",
+      "button_hide_detail_water": "Afficher le détail de la connexion à l'eau",
+      "button_hide_detail_gas": "Afficher le détail de la connexion au gaz"
+    }
+  },
+  "konnector_modal": {
+    "loading_data": "Veuillez patienter, vos données sont en cours de chargement.",
+    "loading_data_update": "Veuillez patienter, vos données sont en cours de mise à jour.",
+    "success_txt": "Félicitations !",
+    "success_data_electricity": "Vos données de consommation d'électricité sont maintenant connectées à Ecolyo.",
+    "success_data_water": "Vos données de consommation d'eau sont maintenant connectées à Ecolyo.",
+    "success_data_gas": "Vos données de consommation de gaz sont maintenant connectées à Ecolyo.",
+    "success_data_update_electricity": "Vos données de consommation d'électricité sont maintenant à jour dans Ecolyo.",
+    "success_data_update_water": "Vos données de consommation d'eau sont maintenant à jour dans Ecolyo.",
+    "success_data_update_gas": "Vos données de consommation de gaz sont maintenant à jour dans Ecolyo.",
+    "error_txt": "Aïe !",
+    "error_data_electricity": "Un problème a empêché vos données de consommation d'électricité de se connecter à Ecolyo.",
+    "error_data_water": "Un problème a empêché vos données de consommation d'eau de se connecter à Ecolyo.",
+    "error_data_gas": "Un problème a empêché vos données de consommation de gaz de se connecter à Ecolyo.",
+    "error_data_update_electricity": "Un problème a empêché vos données de consommation d'électricité de se mettre à jour dans Ecolyo.",
+    "error_data_update_water": "Un problème a empêché vos données de consommation d'eau de se mettre à jour dans Ecolyo.",
+    "error_data_update_gas": "Un problème a empêché vos données de consommation de gaz de se mettre à jour dans Ecolyo.",
+    "error_data_2": "Merci de réessayer plus tard.",
+    "button_validate": "Ok",
+    "accessibility": {
+      "window_title": "Fenètre d'attente de connexion",
+      "button_close": "Fermer la fenètre"
+    }
+  },
+  "legal": {
+    "title_legal": "Mentions légales",
+    "read_legal": "Lire les mentions légales"
+  },
+  "navigation": {
+    "consumption": "Conso",
+    "challenges": "Défis",
+    "ecogestures": "Ecogestes",
+    "options": "Options",
+    "analysis": "Analyse"
+  },
+  "oauth": {
+    "window": {
+      "title": "OAuth"
+    }
+  },
+  "old_fluid_data_modal": {
+    "errorTxt": "Aïe !",
+    "oldData": "Vos données semblent anciennes",
+    "verify": "Veuillez vérifier l’état de vos connecteurs : ",
+    "problem": "Vos connecteurs semblent bien connectés, il se peut qu’il y ait un problème au niveau du ou des fournisseurs de données :",
+    "contact": "Veuillez prendre contact directement avec eux.",
+    "accessButton": "Accéder aux connecteurs",
+    "later": "Plus tard",
+    "ok": "Ok",
+    "accessibility": {
+      "window_title": "Fenètre d'information",
+      "button_ok": "Fermer la fenètre",
+      "button_later": "Fermer la fenètre",
+      "button_goto_konnector": "Aller aux connecteurs"
+    }
+  },
+  "performance_indicator": {
+    "bilan": {
+      "text1": "Par rapport à ",
+      "text2": "soit une différence de : "
+    },
+    "error_no_compare": "comparaison impossible",
+    "error_no_compare_reason": "(manque de données)",
+    "error_no_compare_no_data": "Vos consommations pour cette période sont incomplètes à cause d’un problème technique concernant :"
+  },
+  "profile": {
+    "report": {
+      "title": "Notification par mail",
+      "switch_label": "Être prévenu de la parution de mon bilan mensuel"
     }
   },
   "profile_type": {
@@ -694,5 +627,68 @@
       "label2": "Nous pourrons aussi vous proposer des écogestes adaptés à votre profil.",
       "OK": "OK"
     }
+  },
+  "quiz": {
+    "explanation": "Répondez correctement aux 5 questions et remportez 5 des 15 étoiles nécessaires pour débloquer le duel final",
+    "score_final": "SCORE FINAL",
+    "correct": "Bravo !",
+    "wrong": "Raté !",
+    "rightAnswer": "Bonne réponse :",
+    "earn": "Vous remportez",
+    "go_back": "Retour",
+    "youpi": "Youpi !",
+    "try_again": "Rééssayer",
+    "confirm": "Valider",
+    "next": "Suivant",
+    "consumption_question": "Question sur votre consommation",
+    "accessibility": {
+      "window_title": "Fenètre de résultat",
+      "button_go_next": "Suivant"
+    }
+  },
+  "splashscreen": {
+    "error_loading": "Erreur pendant le chargement des données. Veuillez vérifier votre connexion internet.",
+    "button_reload": "Recharger"
+  },
+  "timestep": {
+    "activate": {
+      "enedis": {
+        "info": "Pour visualiser vos consommations à la 1/2 heure, il vous faut valider l'activation de l'enregistrement de votre consommation horaire sur votre compte Enedis",
+        "label1": "Activer sur mon compte Enedis",
+        "accessibility": {
+          "button_activate": "Aller sur mon compte Enedis"
+        }
+      }
+    },
+    "year": {
+      "period": "5 ans",
+      "comparelabel": "Comparer à l'année précédente"
+    },
+    "month": {
+      "period": "Année",
+      "comparelabel": "Comparer au mois précédent"
+    },
+    "day": {
+      "period": "Mois",
+      "comparelabel": "Comparer au mois précédent"
+    },
+    "week": {
+      "period": "Semaine",
+      "comparelabel": "Comparer à la semaine précédente"
+    },
+    "half_an_hour": {
+      "period": "Jour",
+      "comparelabel": "Comparer à la journée précédente"
+    }
+  },
+  "welcome_modal": {
+    "title": "Félicitations",
+    "perso": "Votre espace personnel a bien été créé.",
+    "connect": "Vous pouvez maintenant connecter vos compteurs d’énergie à Ecolyo en toute sécurité.",
+    "button_valid": "Ok",
+    "accessibility": {
+      "title": "Fenètre de félicitations",
+      "button_valid": "Valider"
+    }
   }
 }