diff --git a/assets/js/admin/source-priority.js b/assets/js/admin/source-priority.js
index ab5f3e9ffd2b1007a6ff8e8f7c384a0b58771623..a3eae747c02c83c0edf73b72a6718682a6d27b8a 100755
--- a/assets/js/admin/source-priority.js
+++ b/assets/js/admin/source-priority.js
@@ -25,7 +25,7 @@ document.addEventListener('DOMContentLoaded', function() {
           this.value = this.list.join(',');
         },
         textFrom(item) {
-          return item ? item : t('thisMap');
+          return item ? item : t('js.import.source_this_map');
         }
       }
     })
diff --git a/assets/js/element-form/geocode-address.js b/assets/js/element-form/geocode-address.js
index b8d535064b2feefd97db0f3ed98a64fb8bda09f3..ee7f9b10e3e663bce0bae4d0f18b053b6ccd7083 100755
--- a/assets/js/element-form/geocode-address.js
+++ b/assets/js/element-form/geocode-address.js
@@ -104,7 +104,7 @@ function geocodeAddress(address) {
 
 			console.log("geocoding error", status);
 		} else {
-			$('#geocode-error').text(t('element_form.geocode_error', {address: address})).show()
+			$('#geocode-error').textt('js.element_form.geocode_error', {address: address})).show()
 		}
 
 		$('#geocode-spinner-loader').hide();
diff --git a/assets/js/element-form/init-map.js b/assets/js/element-form/init-map.js
index ca46f2ad8841b7bb881150c923067110c7c7fac7..3ac945793170bee0f22d07a24f8ed8d7bd55a68f 100755
--- a/assets/js/element-form/init-map.js
+++ b/assets/js/element-form/init-map.js
@@ -46,7 +46,7 @@ function createMarker(position)
 		$('#input-longitude').attr('value',marker.getLatLng().lng);
   	});
 
-  	marker.bindPopup(`<center>${t('element_form.geocoded_marker_text')}</center>`).openPopup();
+  	marker.bindPopup(`<center>$t('js.element_form.geocoded_marker_text')}</center>`).openPopup();
 }
 
 function fitBounds(rawbounds)
diff --git a/assets/js/i18n.js b/assets/js/i18n.js
index d5b56db7697c59dbf1105577289beffca9bf8f26..6191b96c2315410d73a862374a6bc2b6fb886864 100644
--- a/assets/js/i18n.js
+++ b/assets/js/i18n.js
@@ -1,8 +1,9 @@
 var gogoFallbackLocale = 'en';
 
 // Use this function anywhere
-// handle interpolation : t('helo.world', {user: "Seby"})
+// handle interpolation :t('js.helo.world', {user: "Seby"})
 window.t = function(key, params) {
+    key = key.replace(/^js\./, '')
     var result = gogoTrans(gogoLocale + '.' + key, params)
     if (!result) result = gogoTrans(gogoFallbackLocale + '.' + key, params)
     if (!result) result = key
diff --git a/gulpfile.js b/gulpfile.js
index 8044e9d83d4fe11110b3a4e948936cf405f159ad..6c7d5005dc49a716bde12e4e3b4ad6be3affae59 100755
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -28,18 +28,35 @@ const scriptsElementForm = () =>
     .pipe(concat('element-form.js'))
     .pipe(gulp.dest('web/js'));
 
-const buildTranslations = () => 
-  gulp.src('translations/javascripts-translations.*.yaml')
+const buildTranslations = () => {
+  const admin = gulp.src('translations/admin+intl-icu.*.yaml')
     .pipe(yaml({schema: 'DEFAULT_SAFE_SCHEMA', ext: '.js'}))    
     .pipe(tap(function(file, t) {
       var locale = file.basename.split('.')[1]
-      file.contents = Buffer.from('"' + locale + '": ' + file.contents.toString() + ', ')
+      var transTable = JSON.parse(file.contents.toString())['js']
+      file.contents = Buffer.from('"' + locale + '": ' + JSON.stringify(transTable) + ', ')
+      // log(file.contents.toString())
+    }))
+    .pipe(concat('javascripts-translations-admin.js'))
+    .pipe(header("var gogoI18n = {"))
+    .pipe(footer("}"))
+    .pipe(gulp.dest('web/js'))
+
+  const public = gulp.src('translations/messages+intl-icu.*.yaml')
+    .pipe(yaml({schema: 'DEFAULT_SAFE_SCHEMA', ext: '.js'}))    
+    .pipe(tap(function(file, t) {
+      var locale = file.basename.split('.')[1]
+      var transTable = JSON.parse(file.contents.toString())['js']
+      file.contents = Buffer.from('"' + locale + '": ' + JSON.stringify(transTable) + ', ')
       // log(file.contents.toString())
     }))
     .pipe(concat('javascripts-translations.js'))
     .pipe(header("var gogoI18n = {"))
     .pipe(footer("}"))
     .pipe(gulp.dest('web/js'))
+  
+  return merge(admin, public)
+}
 
 const scriptsLibs = () => {
   const gogocarto = gulp.src([
@@ -126,7 +143,7 @@ exports.watch = () => {
   gulp.watch(['node_modules/gogocarto-js/dist/**/*', 'custom/**/*.css'],
               gulp.series(gogocarto_assets, serviceWorker));
 
-  gulp.watch(['assets/js/vendor/**/*.js','assets/js/admin/**/*.js', 'node_modules/gogocarto-js/dist/gogocarto.js', 'custom/**/*.js', 'assets/js/i18n.js', 'translations/javascripts-translations.yaml'],
+  gulp.watch(['assets/js/vendor/**/*.js','assets/js/admin/**/*.js', 'node_modules/gogocarto-js/dist/gogocarto.js', 'custom/**/*.js', 'assets/js/i18n.js', 'translations/*.yaml'],
               gulp.series(buildTranslations, scriptsLibs, serviceWorker));
 
   gulp.watch(['assets/js/home.js'], gulp.series(scriptsHome, serviceWorker));
diff --git a/src/Admin/ConfigurationDuplicatesAdmin.php b/src/Admin/ConfigurationDuplicatesAdmin.php
index 04ab36b69ed31c448e4ffd520d7220c62bd10da1..0fdabc36983e8e774864cfa516f9c07547f1184d 100755
--- a/src/Admin/ConfigurationDuplicatesAdmin.php
+++ b/src/Admin/ConfigurationDuplicatesAdmin.php
@@ -70,7 +70,7 @@ class ConfigurationDuplicatesAdmin extends ConfigurationAbstractAdmin
             ->with('manualDetection', ['box_class' => 'box box-default'])
                 ->add('duplicates.sourcesToDetectFrom', ChoiceType::class, [
                     'choice_label' => function ($choice, $key, $value) {
-                        if ('' === $choice) return $this->trans('config_duplicates.thisMap');  
+                        if ('' === $choice) return $this->trans('js.import.source_this_map');  
                         return $choice;
                     },
                     'choices' => $sourceList,
@@ -78,7 +78,7 @@ class ConfigurationDuplicatesAdmin extends ConfigurationAbstractAdmin
                 ->add('duplicates.sourcesToDetectWith', ChoiceType::class, [
                     'choices' => $sourceList,
                     'choice_label' => function ($choice, $key, $value) {
-                        if ('' === $choice) return $this->trans('config_duplicates.thisMap');              
+                        if ('' === $choice) return $this->trans('js.import.source_this_map');              
                         return $choice;
                     },
                     'multiple' => true])
diff --git a/templates/admin/core_custom/custom-fields/filters-builder.html.twig b/templates/admin/core_custom/custom-fields/filters-builder.html.twig
index 1cc49445fd2d21fbb144c822686797c34c493c87..487f7b76f62906aecd11429eb793e1b5a41c6c37 100755
--- a/templates/admin/core_custom/custom-fields/filters-builder.html.twig
+++ b/templates/admin/core_custom/custom-fields/filters-builder.html.twig
@@ -18,9 +18,9 @@
     formBuilderInitialized = true;
     jQuery(function($) {
       var fields = [
-        { label: t('filters_builder.taxonomy'), name: "taxonomy", attrs: { type: 'taxonomy' }, icon: '*' },
-        { label: t('filters_builder.gogo_date'), name: "gogo_date", attrs: { type: 'gogo_date' }, icon: ' ' },
-        { label: t('filters_builder.gogo_number'), name: "gogo_number", attrs: { type: 'gogo_number' }, icon: ' ' },
+        { label:t('js.filters_builder.taxonomy'), name: "taxonomy", attrs: { type: 'taxonomy' }, icon: '*' },
+        { label:t('js.filters_builder.gogo_date'), name: "gogo_date", attrs: { type: 'gogo_date' }, icon: ' ' },
+        { label:t('js.filters_builder.gogo_number'), name: "gogo_number", attrs: { type: 'gogo_number' }, icon: ' ' },
 ];
 
       var displayFilter = function(fieldData) {
diff --git a/templates/admin/core_custom/custom-fields/form-builder.html.twig b/templates/admin/core_custom/custom-fields/form-builder.html.twig
index f83b8457b5103779297ebf72c36c8d39636fa9aa..8d8d19db55efeaa2402d2c6cc01c1da531f1dcc7 100755
--- a/templates/admin/core_custom/custom-fields/form-builder.html.twig
+++ b/templates/admin/core_custom/custom-fields/form-builder.html.twig
@@ -15,47 +15,47 @@
       var fbEditor = document.getElementById('form-builder-container');
 
       var fields = [
-        { label: t('form_builder.fields.title'), name: "title", attrs: { type: 'title' }, icon: '*' },
-        { label: t('form_builder.fields.taxonomy'), name: "taxonomy", attrs: { type: 'taxonomy' }, icon: '*' },
-        { label: t('form_builder.fields.address'), name: "address", attrs: { type: 'address' }, icon: '*' },
-        { label: t('form_builder.fields.openhours'), name: "openhours", attrs: { type: 'openhours' }, icon: '⌚' },
-        { label: t('form_builder.fields.separator'), name: "separator", attrs: { type: 'separator' }, icon: '⚊' },
-        { label: t('form_builder.fields.checkbox'), name: "checkbox", attrs: { type: 'checkbox' }, icon: '☑' },
-        { label: t('form_builder.fields.email'), name: "email", attrs: { type: 'email' }, icon: '@' },
-        { label: t('form_builder.fields.images'), name: "images", attrs: { type: 'images' }, icon: '⇫' },
-        { label: t('form_builder.fields.files'), name: "files", attrs: { type: 'files' }, icon: '⇫' },
-        { label: t('form_builder.fields.elements'), name: "elements", attrs: { type: 'elements' }, icon: '*' }
+        { label:t('js.form_builder.fields.title'), name: "title", attrs: { type: 'title' }, icon: '*' },
+        { label:t('js.form_builder.fields.taxonomy'), name: "taxonomy", attrs: { type: 'taxonomy' }, icon: '*' },
+        { label:t('js.form_builder.fields.address'), name: "address", attrs: { type: 'address' }, icon: '*' },
+        { label:t('js.form_builder.fields.openhours'), name: "openhours", attrs: { type: 'openhours' }, icon: '⌚' },
+        { label:t('js.form_builder.fields.separator'), name: "separator", attrs: { type: 'separator' }, icon: '⚊' },
+        { label:t('js.form_builder.fields.checkbox'), name: "checkbox", attrs: { type: 'checkbox' }, icon: '☑' },
+        { label:t('js.form_builder.fields.email'), name: "email", attrs: { type: 'email' }, icon: '@' },
+        { label:t('js.form_builder.fields.images'), name: "images", attrs: { type: 'images' }, icon: '⇫' },
+        { label:t('js.form_builder.fields.files'), name: "files", attrs: { type: 'files' }, icon: '⇫' },
+        { label:t('js.form_builder.fields.elements'), name: "elements", attrs: { type: 'elements' }, icon: '*' }
       ];
       var templates = {
-        title: function(fieldData) { return { field: '<input id="' + fieldData.name + '"><span class="mandatory">' + t('form_builder.fields.title_help') + '</span>' }; },
-        address: function(fieldData) { return { field: '<input id="' + fieldData.name + '"><span class="mandatory">' + t('form_builder.fields.address_help') + '</span>' }; },
-        taxonomy: function(fieldData) { return { field: '<select id="' + fieldData.name + '"><option>Choisissez une catégorie principale</option></select><span class="mandatory">' + t('form_builder.fields.taxonomy_help') + '</span>' }; },
-        openhours: function(fieldData) { return { field: t('form_builder.fields.openhours_help') }; },
+        title: function(fieldData) { return { field: '<input id="' + fieldData.name + '"><span class="mandatory">' +t('js.form_builder.fields.title_help') + '</span>' }; },
+        address: function(fieldData) { return { field: '<input id="' + fieldData.name + '"><span class="mandatory">' +t('js.form_builder.fields.address_help') + '</span>' }; },
+        taxonomy: function(fieldData) { return { field: '<select id="' + fieldData.name + '"><option>Choisissez une catégorie principale</option></select><span class="mandatory">' +t('js.form_builder.fields.taxonomy_help') + '</span>' }; },
+        openhours: function(fieldData) { return { field:t('js.form_builder.fields.openhours_help') }; },
         separator: function(fieldData) { return { field: '<hr>' }; },
         checkbox: function(fieldData) { return { field: '<input id="' + fieldData.name + '"' + (fieldData.defaultvalue == "yes" ? 'checked="checked"' : '') + ' type="checkbox"/>' }; },
-        email: function(fieldData) { return { field: '<input id="' + fieldData.name + '"' + ' type="email"/><span class="mandatory">' + t('form_builder.fields.email_help') + '</span>' }; },
+        email: function(fieldData) { return { field: '<input id="' + fieldData.name + '"' + ' type="email"/><span class="mandatory">' +t('js.form_builder.fields.email_help') + '</span>' }; },
         images: function(fieldData) { return { field: '<input id="' + fieldData.name + '"' + ' type="file" accept="images/*"/>' }; },
         files: function(fieldData) { return { field: '<input id="' + fieldData.name + '"' + ' type="file" accept="'+fieldData.accept+'"/>' }; },
         image: function(fieldData) { return { field: '<input id="' + fieldData.name + '"' + ' type="text"/>' }; },
         elements: function(fieldData) { return { field: '<select id="' + fieldData.name + '"><option>'+ fieldData.label+'</option></select>' }; },
       };
 
-      var iconAttr = { label: t('form_builder.icon'), placeholder: t('form_builder.icon_placeholder') }
-      var labelAttr = { label: t('form_builder.label') }
-      var errorMsgAttrs = { label: t('form_builder.errorMsg'), placeholder: t('form_builder.errorMsg_placeholder') }
-      var searchAttrs = { label: t('form_builder.search'), type: 'checkbox' };
-      var searchWeightAttrs = { label: t('form_builder.searchWeigh'), type: 'number', value: "1" };
-      var patternAttrs = { label: t('form_builder.pattern'), placeholder: t('form_builder.pattern_placeholder') };
+      var iconAttr = { label:t('js.form_builder.icon'), placeholder:t('js.form_builder.icon_placeholder') }
+      var labelAttr = { label:t('js.form_builder.label') }
+      var errorMsgAttrs = { label:t('js.form_builder.errorMsg'), placeholder:t('js.form_builder.errorMsg_placeholder') }
+      var searchAttrs = { label:t('js.form_builder.search'), type: 'checkbox' };
+      var searchWeightAttrs = { label:t('js.form_builder.searchWeigh'), type: 'number', value: "1" };
+      var patternAttrs = { label:t('js.form_builder.pattern'), placeholder:t('js.form_builder.pattern_placeholder') };
       var typeUserAttrs = {
         text: {
           icon: iconAttr,
           label: labelAttr,
           separator: { label: '' }, // separate important attrs from others
           subtype: { label: 'Type', options: {
-              'text': t('form_builder.subtype.text'),
-              'tel': t('form_builder.subtype.tel'),
-              'email': t('form_builder.subtype.email'),
-              'url': t('form_builder.subtype.url')
+              'text':t('js.form_builder.subtype.text'),
+              'tel':t('js.form_builder.subtype.tel'),
+              'email':t('js.form_builder.subtype.email'),
+              'url':t('js.form_builder.subtype.url')
             },
           },
           search: searchAttrs,
@@ -67,8 +67,8 @@
           icon: iconAttr,
           label: labelAttr,
           subtype: { label: 'Type', options: {
-              'textarea': t('form_builder.subtype.textarea'),
-              'wysiwyg': t('form_builder.subtype.wysiwyg')
+              'textarea':t('js.form_builder.subtype.textarea'),
+              'wysiwyg':t('js.form_builder.subtype.wysiwyg')
             },
           },
           search: searchAttrs,
@@ -78,7 +78,7 @@
         },
         paragraph: { 
           label: {
-            label: t('form_builder.content'),
+            label:t('js.form_builder.content'),
             type: "textarea"
           }
         },
@@ -87,7 +87,7 @@
         number: { icon: iconAttr, label: labelAttr, errorMsg: errorMsgAttrs },
         title: {
           label: labelAttr,
-          maxlength: { label: t('form_builder.maxlength')},
+          maxlength: { label:t('js.form_builder.maxlength')},
           icon: iconAttr,
           search: searchAttrs,
           searchWeight: searchWeightAttrs,
@@ -97,8 +97,8 @@
         address: { icon: iconAttr, label: labelAttr },
         'checkbox-group': {
           style: { 
-            label: t('form_builder.style'),
-            options: { 'normal': t('form_builder.options.normal'), 'filled': t('form_builder.options.filled') }
+            label:t('js.form_builder.style'),
+            options: { 'normal':t('js.form_builder.options.normal'), 'filled':t('js.form_builder.options.filled') }
           }, 
           errorMsg: errorMsgAttrs, 
           label: labelAttr
@@ -106,8 +106,8 @@
         checkbox: {
           label: labelAttr,
           defaultvalue: { 
-            label: t('form_builder.defaultvalue'),
-            options: { 'no': t('form_builder.options.no'), 'yes': t('form_builder.options.yes') }
+            label:t('js.form_builder.defaultvalue'),
+            options: { 'no':t('js.form_builder.options.no'), 'yes':t('js.form_builder.options.yes') }
           },
           errorMsg: errorMsgAttrs
         },
@@ -131,20 +131,20 @@
         files: {
           icon: iconAttr,
           label: labelAttr,
-          accept: { label: t('form_builder.accept'), placeholder: t('form_builder.accept_placeholder')},
+          accept: { label:t('js.form_builder.accept'), placeholder:t('js.form_builder.accept_placeholder')},
           separator: { label: '' }, // separate important attrs from others
         },
         date: {
           icon: iconAttr,
           label: labelAttr,
-          timepicker: { label: t('form_builder.timepicker'), type: 'checkbox'},
-          range: { label: t('form_builder.range'), type: 'checkbox' },
+          timepicker: { label:t('js.form_builder.timepicker'), type: 'checkbox'},
+          range: { label:t('js.form_builder.range'), type: 'checkbox' },
         },
         elements: {
           label: labelAttr,
           icon: iconAttr,
-          reversedBy: { label: t('form_builder.reversedBy'), placeholder: t('form_builder.reversedBy_placeholder') },
-          multiple: { label: t('form_builder.multiple'), type: 'checkbox' },
+          reversedBy: { label:t('js.form_builder.reversedBy'), placeholder:t('js.form_builder.reversedBy_placeholder') },
+          multiple: { label:t('js.form_builder.multiple'), type: 'checkbox' },
           separator: { label: '' }, // separate important attrs from others
         }
       };
@@ -162,7 +162,7 @@
         controlOrder: ['text', 'email', 'images', 'textarea', 'checkbox', 'checkbox-group', 'radio-group', 'select', 'date', 'number', 'files', 'elements'],
         disabledAttrs: ['className', 'inline', 'toggle', 'description', 'other', 'multiple'],
         formData: {{ formData|json_encode|raw }},
-        roles: { 1: t('form_builder.roles.1') },
+        roles: { 1:t('js.form_builder.roles.1') },
         typeUserAttrs: typeUserAttrs
       });
 
@@ -213,7 +213,7 @@
           })
         }
         propNameOptions = propNameOptions.sort((a,b) => a.disabled ? 1 : -1)
-        propNameOptions.unshift({id: '', text: t('form_builder.propNameOptions'), disabled: true})
+        propNameOptions.unshift({id: '', text:t('js.form_builder.propNameOptions'), disabled: true})
         $(".fld-name:visible:not(.initialized)").select2({
           createSearchChoice:function(term, data) {
               if ($(data).filter(function() {
@@ -234,9 +234,9 @@
         $('#{{ form.vars.id }}').val(JSON.stringify(formBuilder.actions.getData()));
 
         // Changes icons and icones helpers
-        $('a[type=remove].icon-cancel').attr('title', t('form_builder.remove_icon')).removeClass('icon-cancel').addClass('fa fa-trash-alt');
-        $('a[type=copy].icon-copy').attr('title', t('form_builder.copy_icon'));
-        $('a[type=edit].icon-pencil').attr('title', t('form_builder.edit_icon'));
+        $('a[type=remove].icon-cancel').attr('title',t('js.form_builder.remove_icon')).removeClass('icon-cancel').addClass('fa fa-trash-alt');
+        $('a[type=copy].icon-copy').attr('title',t('js.form_builder.copy_icon'));
+        $('a[type=edit].icon-pencil').attr('title',t('js.form_builder.edit_icon'));
 
         $('.email-field input[name=name]').val('email');
         $('.images-field input[name=name]').val('images');
diff --git a/templates/bundles/SonataAdminBundle/layout.html.twig b/templates/bundles/SonataAdminBundle/layout.html.twig
index f60706f159eb1db2b9ba305f5118355206861450..b28869f732938cbe8da0a10af9f1cdcfcdd2e151 100755
--- a/templates/bundles/SonataAdminBundle/layout.html.twig
+++ b/templates/bundles/SonataAdminBundle/layout.html.twig
@@ -24,7 +24,7 @@
     <script src="{{ asset('bundles/sonataformatter/markitup/sets/markdown/set.js') }}" type="text/javascript"></script>
     <script src="{{ asset('bundles/sonataformatter/markitup/sets/html/set.js') }}" type="text/javascript"></script>
     <script src="{{ asset('bundles/sonataformatter/markitup/sets/textile/set.js') }}" type="text/javascript"></script>
-    <script src="{{ asset('js/javascripts-translations.js?ver=' ~ version) }}"></script>
+    <script src="{{ asset('js/javascripts-translations-admin.js?ver=' ~ version) }}"></script>
     <script>gogoLocale = "{{ helper.config.locale }}"</script>
 
     <script>
diff --git a/translations/admin+intl-icu.fr.yaml b/translations/admin+intl-icu.fr.yaml
index 89f797f37180939300abeec7efbe9f826f9999a7..4063059d70c19e347377a20e3b8371b6900fdf8f 100755
--- a/translations/admin+intl-icu.fr.yaml
+++ b/translations/admin+intl-icu.fr.yaml
@@ -503,7 +503,6 @@ mapping-ontology:
 
 config_duplicates:
   _label: "Gestion des Doublons"
-  thisMap: "Cette carte"
   fields:
     gogo_bulk_actions_detect_duplicates: Détecter les doublons
     gogo_duplicates_index: Gérer les doublons détectés
@@ -1267,4 +1266,74 @@ emails:
     no_automatic_mail: "Le mail automatique {config} n'existe pas"
     no_subject_or_content: "Pas de sujet ou de contenu pour le mail automatique {config}"
     unknown: "Inconnu"
-    
\ No newline at end of file
+
+js: # Below keys are available to javascript  
+  import:
+    source_this_map: Cette Carte
+    
+  element_form:
+    geocoded_marker_text: Déplacez moi pour préciser la position</br>(au centre du bâtiment)
+    geocode_error: Erreur lors de la géolocalisation de "{address}"
+
+  form_builder: #templates/admin/core_custom/custom-fields/form-builder.html.twig
+    icon: 'Icône'
+    icon_placeholder: "Choisissez une icône"
+    remove_icon: "Supprimer"
+    copy_icon: "Dupliquer"
+    edit_icon: "Editer/Masquer"
+    label: "Libellé"
+    errorMsg: "Msg. Erreur"
+    errorMsg_placeholder: "Oups ce texte est un peu long ! // Veuillez renseigner une adresse email valide // ..."
+    search: "Recherche dans ce champ"
+    searchWeigh: "Poids de la recherche"
+    pattern: "Pattern de validation"
+    pattern_placeholder: "Expression régulière pour la validation de ce champ"
+    maxlength: "Longueur Max."
+    content: "Contenu"
+    style: "Style des cases"
+    defaultvalue: "Valeur initiale"
+    accept: "Fichier acceptés"
+    accept_placeholder: ".pdf audio/* .mp3 (séparés par des espaces)"
+    timepicker: "Timepicker"
+    range: "Intervale de dates"
+    reversedBy: "Inversée par"
+    reversedBy_placeholder: "Le nom d'un autre champ de type \"lien vers un autre élément\""
+    multiple: "Plusieurs choix"
+    propNameOptions: "Choisissez un champ existant ou entrez un nouveau champ"
+    roles:
+      1: "Administrateur"
+    subtype:
+      text: "Texte"
+      tel: "Téléphone"
+      email: "Courriel"
+      url: "URL"
+      textarea: "Editeur simple"
+      wysiwyg: "Editeur enrichi"
+    options:
+      normal: "Normal"
+      filled: "Plein"
+      no: "Non cochée"
+      yes: "Cochée"
+    fields: 
+      title: "Titre de la fiche (obligatoire)"
+      title_help: "Ce champ est indispensable"
+      taxonomy: "Catégories (obligatoire)"
+      address: "Adresse (obligatoire)"
+      address_help: "Ce champ est indispensable"
+      openhours: "Horaires d'ouvertures"
+      openhours_help: "Bloc contenant un selecteur d'horaires"
+      separator: "Séparateur de section"
+      checkbox: "Case à cocher"
+      email: "Email principal"
+      email_help: "Ce champ est conseillé (permet d'envoyer des emails)"
+      images: "Images (upload)"
+      files: "Fichiers (upload)"
+      elements: "Lien vers un autre élément"
+
+  filters_builder:
+    taxonomy: Filtre Catégories
+    gogo_date: Filtre Date
+    gogo_number: Filtre Nombre
+
+  osm_query_builder:
+    title: Liste des requêtes dans la base OpenStreetMap
\ No newline at end of file
diff --git a/translations/javascripts-translations.fr.yaml b/translations/javascripts-translations.fr.yaml
deleted file mode 100644
index bb618842911b9866bc8120fb4f02b48ef6878bb9..0000000000000000000000000000000000000000
--- a/translations/javascripts-translations.fr.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-element_form:
-  geocoded_marker_text: Déplacez moi pour préciser la position</br>(au centre du bâtiment)
-  geocode_error: Erreur lors de la géolocalisation de "{address}"
-
-form_builder: #templates/admin/core_custom/custom-fields/form-builder.html.twig
-  icon: 'Icône'
-  icon_placeholder: "Choisissez une icône"
-  remove_icon: "Supprimer"
-  copy_icon: "Dupliquer"
-  edit_icon: "Editer/Masquer"
-  label: "Libellé"
-  errorMsg: "Msg. Erreur"
-  errorMsg_placeholder: "Oups ce texte est un peu long ! // Veuillez renseigner une adresse email valide // ..."
-  search: "Recherche dans ce champ"
-  searchWeigh: "Poids de la recherche"
-  pattern: "Pattern de validation"
-  pattern_placeholder: "Expression régulière pour la validation de ce champ"
-  maxlength: "Longueur Max."
-  content: "Contenu"
-  style: "Style des cases"
-  defaultvalue: "Valeur initiale"
-  accept: "Fichier acceptés"
-  accept_placeholder: ".pdf audio/* .mp3 (séparés par des espaces)"
-  timepicker: "Timepicker"
-  range: "Intervale de dates"
-  reversedBy: "Inversée par"
-  reversedBy_placeholder: "Le nom d'un autre champ de type \"lien vers un autre élément\""
-  multiple: "Plusieurs choix"
-  propNameOptions: "Choisissez un champ existant ou entrez un nouveau champ"
-  roles:
-    1: "Administrateur"
-  subtype:
-    text: "Texte"
-    tel: "Téléphone"
-    email: "Courriel"
-    url: "URL"
-    textarea: "Editeur simple"
-    wysiwyg: "Editeur enrichi"
-  options:
-    normal: "Normal"
-    filled: "Plein"
-    no: "Non cochée"
-    yes: "Cochée"
-  fields: 
-    title: "Titre de la fiche (obligatoire)"
-    title_help: "Ce champ est indispensable"
-    taxonomy: "Catégories (obligatoire)"
-    address: "Adresse (obligatoire)"
-    address_help: "Ce champ est indispensable"
-    openhours: "Horaires d'ouvertures"
-    openhours_help: "Bloc contenant un selecteur d'horaires"
-    separator: "Séparateur de section"
-    checkbox: "Case à cocher"
-    email: "Email principal"
-    email_help: "Ce champ est conseillé (permet d'envoyer des emails)"
-    images: "Images (upload)"
-    files: "Fichiers (upload)"
-    elements: "Lien vers un autre élément"
-
-filters_builder:
-  taxonomy: Filtre Catégories
-  gogo_date: Filtre Date
-  gogo_number: Filtre Nombre
-
-osm_query_builder:
-  title: Liste des requêtes dans la base OpenStreetMap
\ No newline at end of file
diff --git a/translations/messages+intl-icu.fr.yaml b/translations/messages+intl-icu.fr.yaml
index 7161f7dd2b421aa39f6ba635c536847ee7e0740a..08198e836b9953b863074ad6263f0d207f674f94 100755
--- a/translations/messages+intl-icu.fr.yaml
+++ b/translations/messages+intl-icu.fr.yaml
@@ -263,3 +263,7 @@ action:
       unallowed: "Vous n'êtes pas autorisé à utiliser cette étiquette"
       uncomplete: "Les paramètres sont incomplets"
       done: "L'étiquette a bien été modifiée"
+
+js: # Below keys are available to javascript  
+  element_form:
+    geocoded_marker_text: Déplacez moi pour préciser la position</br>(au centre du bâtiment)
\ No newline at end of file