diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.js
index 1fecda7d20375481389fd1ddaadfa91115fcc909..3d4cc5798d4d14485c3e48c78637c9fdf7ba236f 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.js
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.js
@@ -6,7 +6,6 @@
   var warmup_gadget_done = false,
     warmup_list = [
       'gadget_erp5_label_field.html',
-      'gadget_translation.html',
       'gadget_erp5_header.html',
       'gadget_erp5_ojs_panel.html',
       'gadget_html5_input.html',
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.xml
index c51785c49516407240a35a91675252225d5b202c..b678a9ded5cb9197aaedc8e3c3310acc2ad5ceb9 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_router_js.xml
@@ -258,8 +258,8 @@
                           </tuple>
                           <state>
                             <tuple>
-                              <float>1575297418.87</float>
-                              <string>UTC</string>
+                              <float>1592203174.96</float>
+                              <string>GMT+2</string>
                             </tuple>
                           </state>
                         </object>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_data_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_data_js.js
new file mode 100644
index 0000000000000000000000000000000000000000..365d97512d1aecded3bc75b853212bcfe427bf06
--- /dev/null
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_data_js.js
@@ -0,0 +1,16 @@
+/**
+ * This translation data is generated automatically and updated with upgrader in post-upgarde.
+ * Do not edit manually, but use "Update Translation Data" action on web site to update from
+ * Localizer and from data-i18n tags on web pages.
+ */
+/*globals window*/
+/*jslint indent: 2, nomen: true */
+
+(function (window) {
+  "use strict";
+  // @ts-ignore
+  window.translation_data = {
+    "en": {
+    }
+  };
+}(window));
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_data_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_data_js.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8962892789b1de7951546c379b71b22179363956
--- /dev/null
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_data_js.xml
@@ -0,0 +1,334 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Web Script" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Access_contents_information_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Add_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Change_local_roles_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Modify_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_View_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_officejs_smart_assistant_translation_data.js</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_officejs_smart_assistant_translation_data_js</string> </value>
+        </item>
+        <item>
+            <key> <string>language</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Web Script</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Gadget OfficeJS Smart Assistant Translation Data JS</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>document_publication_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>edit_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>processing_status_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>publish_alive</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1592183181.57</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>published_alive</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>edit</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value>
+                        <none/>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>984.37603.11244.57514</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>state</string> </key>
+                      <value> <string>current</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1592183248.27</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="5" aka="AAAAAAAAAAU=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>detect_converted_file</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>external_processing_state</string> </key>
+                      <value> <string>converted</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>0.0.0.0</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1592182978.08</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_html.html b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_html.html
new file mode 100644
index 0000000000000000000000000000000000000000..0b2da762cca858b2e1e6c37d51788c966c618f6c
--- /dev/null
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_html.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width" />
+    <title>OfficeJS Smart Assistant Translation Gadget</title>
+    <link rel="http://www.renderjs.org/rel/interface" href="interface_translation.html">
+
+    <!-- renderjs -->
+    <script src="rsvp.js" type="text/javascript"></script>
+    <script src="renderjs.js" type="text/javascript"></script>
+
+    <!-- custom script -->
+    <script src="gadget_officejs_smart_assistant_translation_data.js" type="text/javascript"></script>
+    <script src="gadget_translation.js" type="text/javascript"></script>
+
+    </head>
+  <body>
+  </body>
+</html>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_html.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_html.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6a6a7ebeab5e25679ead8cc6741899708b57d57
--- /dev/null
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_smart_assistant_translation_html.xml
@@ -0,0 +1,338 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Web Page" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Access_contents_information_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Add_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Change_local_roles_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Modify_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_View_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_officejs_smart_assistant_translation.html</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_officejs_smart_assistant_translation_html</string> </value>
+        </item>
+        <item>
+            <key> <string>language</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Web Page</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Gadget OfficeJS Smart Assistant Translation</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>document_publication_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>edit_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>processing_status_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>publish_alive</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1592183173.6</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>published_alive</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>edit</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value>
+                        <none/>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>984.37602.14867.46882</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>state</string> </key>
+                      <value> <string>current</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1592183209.31</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="5" aka="AAAAAAAAAAU=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>detect_converted_file</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>external_processing_state</string> </key>
+                      <value> <string>converted</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>0.0.0.0</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1592182976.2</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_bookmark_manager.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_bookmark_manager.xml
index a1d2fdc1edb5f4b3a990418df261328fbe9a814e..3dd98dd586c7629639b949d63fa39d0240af865f 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_bookmark_manager.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_bookmark_manager.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -469,10 +459,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror.xml
index 7c62cb4978df4e9ec60ee60874219b1cb84f375a..02bb4ee6f6777c5d2339a9ca13e75cabdcfbb631 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -493,10 +483,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror/app.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror/app.xml
index f53ea2237859e7629627aefce4a17d76cda05e4e..80b815237eeea9827359d24f0e156b843d7121da 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror/app.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_codemirror/app.xml
@@ -209,16 +209,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -425,10 +415,6 @@ WebSection_getCodemirrorEditorPrecacheManifestList</string> </value>
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_webapp_manifest_url</string> </key>
             <value> <string>gadget_officejs_json_manifest_javascript_editor.json</string> </value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs.xml
index c5eaae92d1a3b1986fc1d9a8959a337835e8dab1..991c1246b1afb5a387e010f29ec08123aa08d0e8 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs.xml
@@ -249,26 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_manifest_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -447,10 +427,6 @@
             <key> <string>configuration_latest_version</string> </key>
             <value> <string>development</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_manifest_url</string> </key>
-            <value> <string>gadget_officejs.appcache</string> </value>
-        </item>
         <item>
             <key> <string>configuration_panel_gadget_url</string> </key>
             <value> <string>gadget_officejs_application_panel.html</string> </value>
@@ -469,10 +445,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs/development.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs/development.xml
index 27b48c3bd16878f71de27ae6d59c57a422e8c4b0..7109263b3f22f558cff073d2016e4e436619276c 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs/development.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_cribjs/development.xml
@@ -209,16 +209,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -309,10 +299,6 @@
             <key> <string>configuration_router_gadget_url</string> </key>
             <value> <string>gadget_officejs_crib_router.html</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_x_frame_options</string> </key>
             <value> <string>SAMEORIGIN</string> </value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_drive_app.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_drive_app.xml
index 2a58909ea23609b715653c9e14be51127280db88..0ec29ad449a22ec7bb8e3af06eb82a5e1e6040d3 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_drive_app.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_drive_app.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -469,10 +459,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_media_player.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_media_player.xml
index 4f249bd910a39f9baa852f131657492e7f0af9b8..aad0fc0ebf35ba424595f57dd7c0084c96932394 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_media_player.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_media_player.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -469,10 +459,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_notebook.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_notebook.xml
index c10757f0eabba2194ada3a892aa3c9c48c991958..72057f982624e9c4e3f98cd5dc518eaa8de9c8f3 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_notebook.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_notebook.xml
@@ -249,26 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_manifest_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -457,10 +437,6 @@
             <key> <string>configuration_latest_version</string> </key>
             <value> <string>app</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_manifest_url</string> </key>
-            <value> <string>gadget_officejs.appcache</string> </value>
-        </item>
         <item>
             <key> <string>configuration_panel_gadget_url</string> </key>
             <value> <string>gadget_officejs_application_panel.html</string> </value>
@@ -479,10 +455,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_pdf_viewer.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_pdf_viewer.xml
index de74b9d2c935ba22ebdedd12e08ac55650627ec1..b811ed6853d6a269bd44482c496c5d193f27178f 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_pdf_viewer.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_pdf_viewer.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -479,10 +469,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant.xml
index 678ec1acc03ee6de255564203ae9a16f2eb3d5b6..ccb5a6b3821e5ff5ee99f3ffe732ce70ef4a4e11 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -475,10 +465,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant/app.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant/app.xml
index 2a47d5c6c97b92c4111ba3d0241e7c4a85132a46..2124b5c954b56c8a912905426634fa9d7f223d29 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant/app.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_smart_assistant/app.xml
@@ -391,9 +391,7 @@ WebSection_getSmartAssistantPrecacheManifestList</string> </value>
         </item>
         <item>
             <key> <string>configuration_translation_gadget_url</string> </key>
-            <value>
-              <none/>
-            </value>
+            <value> <string>gadget_officejs_smart_assistant_translation.html</string> </value>
         </item>
         <item>
             <key> <string>configuration_webapp_manifest</string> </key>
@@ -664,8 +662,8 @@ WebSection_getSmartAssistantPrecacheManifestList</string> </value>
                           </tuple>
                           <state>
                             <tuple>
-                              <float>1587729410.45</float>
-                              <string>UTC</string>
+                              <float>1592182961.5</float>
+                              <string>GMT+2</string>
                             </tuple>
                           </state>
                         </object>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_svg_editor.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_svg_editor.xml
index 1d2c910024c79040d507f784d803a3c2cf818270..575fcb46c79e3e4e4ec2cc86c2db6edf7151c591 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_svg_editor.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_svg_editor.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -479,10 +469,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_text_editor.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_text_editor.xml
index 15074bf3dc3fcb21bd02d4040ba6d5e334bdebba..16943f8b5cb9e7d6bb22f97dd9a5717595321a86 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_text_editor.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_text_editor.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -479,10 +469,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_wallsearch.xml b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_wallsearch.xml
index d17d6ea6cd4cbb5bed63830d8a213f7b7ad65e9a..c4ebfb8a3423459356eaaf501332fa5af649a2eb 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_wallsearch.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_site_module/officejs_wallsearch.xml
@@ -249,26 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_manifest_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -457,10 +437,6 @@
             <key> <string>configuration_latest_version</string> </key>
             <value> <string>app</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_manifest_url</string> </key>
-            <value> <string>gadget_officejs.appcache</string> </value>
-        </item>
         <item>
             <key> <string>configuration_panel_gadget_url</string> </key>
             <value> <string>gadget_officejs_application_panel.html</string> </value>
@@ -479,10 +455,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_officejs_smart_assistant/WebSection_getSmartAssistantPrecacheManifestList.py b/bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_officejs_smart_assistant/WebSection_getSmartAssistantPrecacheManifestList.py
index 8db0341f4e118542baec54c217d2dea9413e8bce..eb4fc8e7b444c8d81a32172647f7a9aed7ea6b81 100644
--- a/bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_officejs_smart_assistant/WebSection_getSmartAssistantPrecacheManifestList.py
+++ b/bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_officejs_smart_assistant/WebSection_getSmartAssistantPrecacheManifestList.py
@@ -20,9 +20,9 @@ url_list = [
   "gadget_jio.js",
   "gadget_translate.html",
   "gadget_translate.js",
-  "gadget_translation.html",
+  "gadget_officejs_smart_assistant_translation.html",
   "gadget_translation.js",
-  "gadget_translation_data.js",
+  "gadget_officejs_smart_assistant_translation_data.js",
   "gadget_erp5_editor_panel.html",
   "gadget_erp5_editor_panel.js",
   "gadget_erp5_ojs_panel.html",
diff --git a/bt5/erp5_officejs/bt/template_path_list b/bt5/erp5_officejs/bt/template_path_list
index 618c11100c7d0b5dd30fee92d680450f40066495..557036aff1cf5d7f9d2767608541aac84a42da47 100644
--- a/bt5/erp5_officejs/bt/template_path_list
+++ b/bt5/erp5_officejs/bt/template_path_list
@@ -49,4 +49,4 @@ web_site_module/officejs_text_editor/**
 web_site_module/officejs_todomvc
 web_site_module/officejs_wallsearch
 web_site_module/officejs_wallsearch/**
-web_site_module/officejs_whiteboard
+web_site_module/officejs_whiteboard
\ No newline at end of file
diff --git a/bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs.xml b/bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs.xml
index 6e68c540488fb6e59bbce9643c251e9faf16da1f..80ede6f8fafbbdd3d40e0cf60fcc305b072ccba9 100644
--- a/bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs.xml
+++ b/bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs.xml
@@ -199,16 +199,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -403,10 +393,6 @@
             <key> <string>configuration_service_worker_url</string> </key>
             <value> <string>gadget_erp5_serviceworker.js</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value> <string>object_view</string> </value>
diff --git a/bt5/erp5_officejs_appstore_base/PathTemplateItem/web_site_module/application-list/publisher.xml b/bt5/erp5_officejs_appstore_base/PathTemplateItem/web_site_module/application-list/publisher.xml
index f381d6d24b908ec973eb5f6616da81cd7846416a..42f7fb9bf343cc3531e9750d18df37d6900c762c 100644
--- a/bt5/erp5_officejs_appstore_base/PathTemplateItem/web_site_module/application-list/publisher.xml
+++ b/bt5/erp5_officejs_appstore_base/PathTemplateItem/web_site_module/application-list/publisher.xml
@@ -204,16 +204,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -310,10 +300,6 @@
             <key> <string>configuration_panel_gadget_url</string> </key>
             <value> <string>gadget_ojs_appstore_panel.html</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value> <string>object_view</string> </value>
diff --git a/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_image_editor.xml b/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_image_editor.xml
index 8c1ebdcb348be4b40ce2d956236bad954b79f7ba..0e69e09b60b9e42f383910a60baa7dfb25ef8112 100644
--- a/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_image_editor.xml
+++ b/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_image_editor.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -479,10 +469,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_web_table_editor.xml b/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_web_table_editor.xml
index a8e84d35d21276d8446c44075e0410eb03f0b24e..b58e49a78c60f71a2ec45ac2578f05419fe25b5f 100644
--- a/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_web_table_editor.xml
+++ b/bt5/erp5_officejs_jquery_app/PathTemplateItem/web_site_module/officejs_web_table_editor.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -479,10 +469,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_presentation.xml b/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_presentation.xml
index 36ec89991046dc7d84a0e1bd9a6df5d1791be317..8dc660e764a161138ca34c6dff809cc5e16b491a 100644
--- a/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_presentation.xml
+++ b/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_presentation.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -465,10 +455,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_spreadsheet.xml b/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_spreadsheet.xml
index 963ce049767ac56d600ae40dc1ba39657cd9bde5..1b11f8a12142efc3bcddd513700ee0cbb1935078 100644
--- a/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_spreadsheet.xml
+++ b/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_spreadsheet.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -465,10 +455,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_text.xml b/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_text.xml
index 3058485a44069f19cb96df0765a3b6ca7a23c131..dd8a870e0a86fba483e664980729aebfd4539dc7 100644
--- a/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_text.xml
+++ b/bt5/erp5_officejs_ooffice/PathTemplateItem/web_site_module/ooffice_text.xml
@@ -249,16 +249,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -465,10 +455,6 @@
               <none/>
             </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value>
diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_data_js.js b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_data_js.js
new file mode 100644
index 0000000000000000000000000000000000000000..365d97512d1aecded3bc75b853212bcfe427bf06
--- /dev/null
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_data_js.js
@@ -0,0 +1,16 @@
+/**
+ * This translation data is generated automatically and updated with upgrader in post-upgarde.
+ * Do not edit manually, but use "Update Translation Data" action on web site to update from
+ * Localizer and from data-i18n tags on web pages.
+ */
+/*globals window*/
+/*jslint indent: 2, nomen: true */
+
+(function (window) {
+  "use strict";
+  // @ts-ignore
+  window.translation_data = {
+    "en": {
+    }
+  };
+}(window));
diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_data_js.xml b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_data_js.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a3648ffa4ba6d0114e6682a82d6342eef60010bb
--- /dev/null
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_data_js.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Web Script" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Access_contents_information_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Add_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Change_local_roles_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Modify_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_View_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_supportrequest_translation_data.js</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_supportrequest_translation_data_js</string> </value>
+        </item>
+        <item>
+            <key> <string>language</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Web Script</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Gadget Support Request Translation Data JS</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>document_publication_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>edit_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>processing_status_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>publish</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1591875339.98</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>published</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>edit</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value>
+                        <none/>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>984.32480.44432.8157</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>state</string> </key>
+                      <value> <string>current</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1591922643.84</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="5" aka="AAAAAAAAAAU=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>detect_converted_file</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>external_processing_state</string> </key>
+                      <value> <string>converted</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>0.0.0.0</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1591875298.83</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_html.html b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_html.html
new file mode 100644
index 0000000000000000000000000000000000000000..1fe64c4ff83970248cd9f6b79962acc56694a8e1
--- /dev/null
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_html.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width" />
+    <title>Support Request Translation Gadget</title>
+    <link rel="http://www.renderjs.org/rel/interface" href="interface_translation.html">
+
+    <!-- renderjs -->
+    <script src="rsvp.js" type="text/javascript"></script>
+    <script src="renderjs.js" type="text/javascript"></script>
+
+    <!-- custom script -->
+    <script src="gadget_supportrequest_translation_data.js" type="text/javascript"></script>
+    <script src="gadget_translation.js" type="text/javascript"></script>
+
+    </head>
+  <body>
+  </body>
+</html>
diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_html.xml b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_html.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d121305560881c65761cb6690a63782629f11b5
--- /dev/null
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_translation_html.xml
@@ -0,0 +1,335 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Web Page" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Access_contents_information_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Add_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Change_local_roles_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Modify_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_View_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_supportrequest_translation.html</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_supportrequest_translation_html</string> </value>
+        </item>
+        <item>
+            <key> <string>language</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Web Page</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Gadget Support Request Translation</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>document_publication_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>edit_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>processing_status_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>publish</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1591875405.78</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>published</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>edit</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value>
+                        <none/>
+                      </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>984.32471.63420.28689</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>state</string> </key>
+                      <value> <string>current</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1591875367.49</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="5" aka="AAAAAAAAAAU=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>detect_converted_file</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>actor</string> </key>
+                      <value> <string>ERP5TypeTestCase</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>comment</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>error_message</string> </key>
+                      <value> <string></string> </value>
+                  </item>
+                  <item>
+                      <key> <string>external_processing_state</string> </key>
+                      <value> <string>converted</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>serial</string> </key>
+                      <value> <string>0.0.0.0</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>time</string> </key>
+                      <value>
+                        <object>
+                          <klass>
+                            <global name="DateTime" module="DateTime.DateTime"/>
+                          </klass>
+                          <tuple>
+                            <none/>
+                          </tuple>
+                          <state>
+                            <tuple>
+                              <float>1591875264.79</float>
+                              <string>GMT+2</string>
+                            </tuple>
+                          </state>
+                        </object>
+                      </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_site_module/erp5_officejs_support_request_ui.xml b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_site_module/erp5_officejs_support_request_ui.xml
index de0fc21e9d022f1481df1db998ed410ece2d5ca8..b96caa5b7e73b6cf5029c58a95be0dc522003d13 100644
--- a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_site_module/erp5_officejs_support_request_ui.xml
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_site_module/erp5_officejs_support_request_ui.xml
@@ -405,7 +405,7 @@ WebSection_getOfficeJSSupportRequestPrecacheManifestList</string> </value>
         </item>
         <item>
             <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
+            <value> <string>gadget_supportrequest_translation.html</string> </value>
         </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
diff --git a/bt5/erp5_web_jabber_client/PathTemplateItem/web_page_module/jabber_gadget_jabberclient_appcache.xml b/bt5/erp5_web_jabber_client/PathTemplateItem/web_page_module/jabber_gadget_jabberclient_appcache.xml
index 1f4d148bf54430431bac19dd5e9e80bcf15f21c7..2b7a0ca8642afeb1989ff92373ab1d84fad46765 100644
--- a/bt5/erp5_web_jabber_client/PathTemplateItem/web_page_module/jabber_gadget_jabberclient_appcache.xml
+++ b/bt5/erp5_web_jabber_client/PathTemplateItem/web_page_module/jabber_gadget_jabberclient_appcache.xml
@@ -126,9 +126,6 @@ handlebars.js\n
 jiodev.js\n
 renderjs.js\n
 rsvp.js\n
-gadget_translation.html\n
-gadget_translation.js\n
-gadget_translation_data.js\n
 gadget_erp5_router.html\n
 gadget_erp5_router.js\n
 gadget_erp5_notification.html\n
diff --git a/bt5/erp5_web_jabber_client/PathTemplateItem/web_site_module/jabber_client.xml b/bt5/erp5_web_jabber_client/PathTemplateItem/web_site_module/jabber_client.xml
index 51600d0c2d4d2f71b50d278176f456e0bba39574..d1755ff9f01be4fd7f61b6ecdc8be2a7e7247936 100644
--- a/bt5/erp5_web_jabber_client/PathTemplateItem/web_site_module/jabber_client.xml
+++ b/bt5/erp5_web_jabber_client/PathTemplateItem/web_site_module/jabber_client.xml
@@ -169,16 +169,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -371,10 +361,6 @@
             <key> <string>configuration_stylesheet_url</string> </key>
             <value> <string>gadget_jabberclient.css</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_webapp_manifest_url</string> </key>
             <value>
diff --git a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml
index 4a4c7d5ce89962b28b34ad3f6236e225309aa210..74c078c4075cdd45f33d009fb42531894da545fd 100644
--- a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml
+++ b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml
@@ -213,16 +213,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -345,10 +335,6 @@
             <key> <string>configuration_router_gadget_url</string> </key>
             <value> <string>gadget_officejs_monitoring_router.html</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_x_frame_options</string> </key>
             <value> <string>ALLOW-FROM-ALL</string> </value>
diff --git a/bt5/erp5_web_project_ui/PathTemplateItem/web_site_module/project_management.xml b/bt5/erp5_web_project_ui/PathTemplateItem/web_site_module/project_management.xml
index 5a83ba372b6ea86379b29ca20a2faccdd3ae8cd5..25c5c4cf17be4fe5dfd9fcd03d68c74b9b370858 100644
--- a/bt5/erp5_web_project_ui/PathTemplateItem/web_site_module/project_management.xml
+++ b/bt5/erp5_web_project_ui/PathTemplateItem/web_site_module/project_management.xml
@@ -199,16 +199,6 @@
                       <value> <string>string</string> </value>
                   </item>
                 </dictionary>
-                <dictionary>
-                  <item>
-                      <key> <string>id</string> </key>
-                      <value> <string>configuration_translation_gadget_url</string> </value>
-                  </item>
-                  <item>
-                      <key> <string>type</string> </key>
-                      <value> <string>string</string> </value>
-                  </item>
-                </dictionary>
                 <dictionary>
                   <item>
                       <key> <string>id</string> </key>
@@ -390,10 +380,6 @@ WebSection_getWebProjectPrecacheManifestList</string> </value>
             <key> <string>configuration_service_worker_url</string> </key>
             <value> <string>gadget_erp5_serviceworker.js</string> </value>
         </item>
-        <item>
-            <key> <string>configuration_translation_gadget_url</string> </key>
-            <value> <string>gadget_translation.html</string> </value>
-        </item>
         <item>
             <key> <string>configuration_view_action_category</string> </key>
             <value> <string>object_view</string> </value>
diff --git a/bt5/erp5_web_renderjs_ui/ActionTemplateItem/portal_types/Web%20Site/create_translation_data.xml b/bt5/erp5_web_renderjs_ui/ActionTemplateItem/portal_types/Web%20Site/create_translation_data.xml
index 1e10375aaf1b45666dc7cd7a4bc7429856638a72..5ab633f789c2a9e94f12264797f22d77fddcdd45 100644
--- a/bt5/erp5_web_renderjs_ui/ActionTemplateItem/portal_types/Web%20Site/create_translation_data.xml
+++ b/bt5/erp5_web_renderjs_ui/ActionTemplateItem/portal_types/Web%20Site/create_translation_data.xml
@@ -60,7 +60,7 @@
         </item>
         <item>
             <key> <string>title</string> </key>
-            <value> <string>Create Translation Data</string> </value>
+            <value> <string>Update Translation Data</string> </value>
         </item>
         <item>
             <key> <string>visible</string> </key>
@@ -77,7 +77,7 @@
       <dictionary>
         <item>
             <key> <string>text</string> </key>
-            <value> <string>string:${object_url}/WebSite_createTranslationData</string> </value>
+            <value> <string>string:${object_url}/WebSite_viewUpdateTranslationDataDialog</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_form_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_form_js.js
index 8945ea09fb651d5af677ee2dcca67a226fc2715c..8a234de8a622608caf5950ea3e65afc51da7faf5 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_form_js.js
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_form_js.js
@@ -17,8 +17,6 @@ and handling data send&receive.
       'gadget_erp5_form.html',
       'gadget_erp5_field_float.html',
       'gadget_erp5_field_listbox.html',
-      // Used in panel
-      'gadget_translation.html',
       'gadget_erp5_panel.html',
       'gadget_erp5_header.html',
       'gadget_erp5_searchfield.html',
diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_translation_data_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_translation_data_js.js
index 6178c83f7d51a0e1afe1372b6272a1e4412bf2e9..365d97512d1aecded3bc75b853212bcfe427bf06 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_translation_data_js.js
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_translation_data_js.js
@@ -1,11 +1,16 @@
+/**
+ * This translation data is generated automatically and updated with upgrader in post-upgarde.
+ * Do not edit manually, but use "Update Translation Data" action on web site to update from
+ * Localizer and from data-i18n tags on web pages.
+ */
 /*globals window*/
-/*jslint indent: 2, nomen: true, maxlen: 80*/
+/*jslint indent: 2, nomen: true */
+
 (function (window) {
   "use strict";
-
+  // @ts-ignore
   window.translation_data = {
-    en: {
+    "en": {
     }
   };
-
-}(window));
\ No newline at end of file
+}(window));
diff --git a/bt5/erp5_web_renderjs_ui/PropertySheetTemplateItem/portal_property_sheets/WebSiteRenderJSUpgradeConstraint/translation_signature_constraint.xml b/bt5/erp5_web_renderjs_ui/PropertySheetTemplateItem/portal_property_sheets/WebSiteRenderJSUpgradeConstraint/translation_signature_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35ed58e3cd7b053db43e5ee4f035cd7ba66b1671
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/PropertySheetTemplateItem/portal_property_sheets/WebSiteRenderJSUpgradeConstraint/translation_signature_constraint.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Script Constraint" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_identity_criterion</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_range_criterion</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>constraint_type/post_upgrade</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>translation_signature_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Script Constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>script_id</string> </key>
+            <value> <string>WebSite_checkTranslationConsistency</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/Base_createTranslateData.py b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/Base_createTranslateData.py
deleted file mode 100644
index 99b4e1f953add7a18b1e2d55c07b05b38a99ab3f..0000000000000000000000000000000000000000
--- a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/Base_createTranslateData.py
+++ /dev/null
@@ -1,53 +0,0 @@
-import re
-import json
-
-portal = context.getPortalObject()
-
-Base_translateString = context.Base_translateString
-#(data-i18n)=["']{{((?:.(?!["']?(?:\S+)=|[>"']))+.)}}["']
-attribute_filter_re = re.compile(r"""(data-i18n)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?""")
-
-translate_word = []
-
-for web_page in portal.web_page_module.searchFolder(portal_type='Web Page',
-                                                    reference=context.Base_getTranslationSourceFileList(only_html=1)):
-  data = attribute_filter_re.findall(web_page.getTextContent())
-  for attribute in data:
-    a = re.sub(r'[{|}]', "", attribute[1])
-    a = re.sub(r'\[.*?\]', "", a)
-    if a:
-      translate_word.append(a)
-
-translate_word =  list(set(translate_word))
-
-
-language_list = context.getAvailableLanguageSet()
-
-content = """
-/*globals window*/\n
-/*jslint indent: 2, nomen: true, maxlen: 80*/\n
-(function (window) {\n
-  "use strict";\n
-"""
-
-tmp = {}
-
-for language in language_list:
-  tmp[language] = {}
-  for word in translate_word:
-    tmp[language][word] = Base_translateString(word, lang = language)
-
-
-
-content += "  window.translation_data = " + json.dumps(tmp, indent=3, ensure_ascii=False, separators=(',', ': '))
-content += ";\n}(window));"
-#return json.dumps(tmp, indent=3, ensure_ascii=False, separators=(',', ': '))
-translation_data_file=context.web_page_module.searchFolder(portal_type='Web Script',reference=translation_data_file)[0]
-translation_data_file.edit(text_content = content)
-
-# Edit web section modification date
-context.edit()
-
-if batch_mode:
-  return 'done'
-return context.Base_redirect('view', keep_items=dict(portal_status_message=Base_translateString("Translation Data Create")))
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_checkTranslationConsistency.py b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_checkTranslationConsistency.py
new file mode 100644
index 0000000000000000000000000000000000000000..d08adfc8f7944e0888b5ad6b89888da634a7d025
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_checkTranslationConsistency.py
@@ -0,0 +1,50 @@
+"""Check that RenderJS translation gadget data is up to date.
+
+This compare the current content of the translation gadget data against what
+the content would be if "Update Translation Data" were used. If the scripts
+are different, update the translation data to fix.
+"""
+from collections import defaultdict
+
+if not context.getAvailableLanguageList():
+  return []
+
+if context.getSkinSelectionName() != 'RJS':
+  return []
+
+# find the .js containing translation data
+gadget_translation_data_js = context.WebSite_getTranslationDataWebScriptValue()
+if gadget_translation_data_js is None:
+  return []
+
+error_list = []
+if context.WebSite_getTranslationDataTextContent(
+) != gadget_translation_data_js.getTextContent():
+  error_list.append("Translation data script content is not up to date")
+
+  if fixit:
+    # try to detect the case of two incompatible web sites configured for the same translation gadget.
+    # Use a mapping of set of web site ids keyed by translation data script reference and check
+    # if we update the same translation data script more than once in the same REQUEST.
+    # Using REQUEST is not really good, since upgrader uses grouped activities and we can just check
+    # web sites processed in the same activity group, but that's easy and hopefully better than nothing.
+    already_updated_websites = container.REQUEST.get(
+        script.getId(), defaultdict(set))
+    container.REQUEST.set(script.getId(), already_updated_websites)
+    gadget_translation_data_js_reference = gadget_translation_data_js.getReference()
+    already_updated_websites[gadget_translation_data_js_reference].add(context.getId())
+    if len(already_updated_websites[gadget_translation_data_js_reference]) > 1:
+      raise RuntimeError(
+          "Translation script %s is used by more than one web site with different configurations (%s)"
+          % (
+              gadget_translation_data_js_reference,
+              ", ".join(already_updated_websites[gadget_translation_data_js_reference]),
+          ))
+
+    context.WebSite_updateTranslationData()
+    # since we might have modified some cached files, check again the modification date
+    # consistency.
+    error_list.extend(
+        context.WebSite_checkCacheModificationDateConsistency(fixit=True))
+
+return error_list
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/Base_createTranslateData.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_checkTranslationConsistency.xml
similarity index 93%
rename from bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/Base_createTranslateData.xml
rename to bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_checkTranslationConsistency.xml
index faf1b9e6e552d5843c706e835388c2cb836bad28..d7482ccac26f313af5784ae6a4843c4fabedb01d 100644
--- a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/Base_createTranslateData.xml
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_checkTranslationConsistency.xml
@@ -50,11 +50,11 @@
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string> translation_data_file, batch_mode=0</string> </value>
+            <value> <string>fixit=False</string> </value>
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>Base_createTranslateData</string> </value>
+            <value> <string>WebSite_checkTranslationConsistency</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_createTranslationData/your_translation_data_file.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_createTranslationData/your_translation_data_file.xml
deleted file mode 100644
index 73d7ae53e9f73103b39aba4e18c2dd940c7fdb6c..0000000000000000000000000000000000000000
--- a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_createTranslationData/your_translation_data_file.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
-    </pickle>
-    <pickle>
-      <dictionary>
-        <item>
-            <key> <string>delegated_list</string> </key>
-            <value>
-              <list>
-                <string>first_item</string>
-                <string>items</string>
-                <string>title</string>
-              </list>
-            </value>
-        </item>
-        <item>
-            <key> <string>id</string> </key>
-            <value> <string>your_translation_data_file</string> </value>
-        </item>
-        <item>
-            <key> <string>message_values</string> </key>
-            <value>
-              <dictionary>
-                <item>
-                    <key> <string>external_validator_failed</string> </key>
-                    <value> <string>The input failed the external validator.</string> </value>
-                </item>
-              </dictionary>
-            </value>
-        </item>
-        <item>
-            <key> <string>overrides</string> </key>
-            <value>
-              <dictionary>
-                <item>
-                    <key> <string>field_id</string> </key>
-                    <value> <string></string> </value>
-                </item>
-                <item>
-                    <key> <string>form_id</string> </key>
-                    <value> <string></string> </value>
-                </item>
-              </dictionary>
-            </value>
-        </item>
-        <item>
-            <key> <string>tales</string> </key>
-            <value>
-              <dictionary>
-                <item>
-                    <key> <string>field_id</string> </key>
-                    <value> <string></string> </value>
-                </item>
-                <item>
-                    <key> <string>first_item</string> </key>
-                    <value> <string></string> </value>
-                </item>
-                <item>
-                    <key> <string>form_id</string> </key>
-                    <value> <string></string> </value>
-                </item>
-                <item>
-                    <key> <string>items</string> </key>
-                    <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
-                    </value>
-                </item>
-                <item>
-                    <key> <string>title</string> </key>
-                    <value> <string></string> </value>
-                </item>
-              </dictionary>
-            </value>
-        </item>
-        <item>
-            <key> <string>values</string> </key>
-            <value>
-              <dictionary>
-                <item>
-                    <key> <string>field_id</string> </key>
-                    <value> <string>my_list_field</string> </value>
-                </item>
-                <item>
-                    <key> <string>first_item</string> </key>
-                    <value> <int>1</int> </value>
-                </item>
-                <item>
-                    <key> <string>form_id</string> </key>
-                    <value> <string>Base_viewFieldLibrary</string> </value>
-                </item>
-                <item>
-                    <key> <string>items</string> </key>
-                    <value>
-                      <list/>
-                    </value>
-                </item>
-                <item>
-                    <key> <string>title</string> </key>
-                    <value> <string>Translation Data File</string> </value>
-                </item>
-              </dictionary>
-            </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-  <record id="2" aka="AAAAAAAAAAI=">
-    <pickle>
-      <global name="TALESMethod" module="Products.Formulator.TALESField"/>
-    </pickle>
-    <pickle>
-      <dictionary>
-        <item>
-            <key> <string>_text</string> </key>
-            <value> <string>python: [ (x,x) for x in here.Base_getTranslationSourceFileList()]</string> </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-</ZopeData>
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.py b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.py
new file mode 100644
index 0000000000000000000000000000000000000000..1a5ff11f4437d640dcd5443aa35852bc7d1e4264
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.py
@@ -0,0 +1,50 @@
+"""Returns the `text_content` that should be set on the translation data script for this RJS website.
+"""
+import re
+import json
+
+portal = context.getPortalObject()
+Base_translateString = context.Base_translateString
+
+# Collect all translatable messages from web pages referenced by this web sites.
+# The convention is to use data-i18n tags in HTML, like:
+#   <span data-18n="The message">The message</span>
+# or in comments, like this:
+#   <!-- data-i18n="The message" -->
+attribute_filter_re = re.compile(r"""(data-i18n)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?""")
+translatable_message_set = set([])
+for web_page in portal.web_page_module.searchFolder(portal_type='Web Page',
+                                                    reference=context.Base_getTranslationSourceFileList(only_html=1)):
+  data = attribute_filter_re.findall(web_page.getTextContent())
+  for attribute in data:
+    a = re.sub(r'[{|}]', "", attribute[1])
+    a = re.sub(r'\[.*?\]', "", a)
+    if a:
+      translatable_message_set.add(a)
+
+tmp = {}
+for language in context.getAvailableLanguageSet():
+  tmp[language] = {}
+  for word in translatable_message_set:
+    tmp[language][word] = Base_translateString(word, lang = language)
+
+return """/**
+ * This translation data is generated automatically and updated with upgrader in post-upgarde.
+ * Do not edit manually, but use "Update Translation Data" action on web site to update from
+ * Localizer and from data-i18n tags on web pages.
+ */
+/*globals window*/
+/*jslint indent: 2, nomen: true */
+
+(function (window) {
+  "use strict";
+  // @ts-ignore
+  window.translation_data = %s;
+}(window));
+""" % ("\n  ".join(
+        json.dumps(
+            tmp,
+            sort_keys=True,
+            indent=2,
+            ensure_ascii=False,
+            separators=(',', ': ')).splitlines()))
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c312ec74f4b6fb3320525fc1fecc80abae5217d5
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>WebSite_getTranslationDataTextContent</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.py b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa53dd13ecb74500ed26d7c21459a86b1b9eac51
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.py
@@ -0,0 +1,33 @@
+# type: () -> Optional[erp5.portal_type.WebScript]
+"""Returns the web script used to contain the translation data for this RJS web site.
+"""
+
+# OfficeJS is a bit more complex, the translation gadget is defined on the
+# `app` web section, which is defined in "configuration_latest_version"
+officejs_latest_version = context.getLayoutProperty(
+    "configuration_latest_version")
+if officejs_latest_version:
+  if officejs_latest_version.endswith('/'):
+    officejs_latest_version = officejs_latest_version[:-1]
+  context = context.restrictedTraverse(officejs_latest_version, None)
+  if context is None:
+    return None
+  # now `context` is the app web section and the logic is same as with a normal
+  # ERP5JS web site.
+
+translation_gadget_url = context.getLayoutProperty(
+    "configuration_translation_gadget_url")
+if not translation_gadget_url:
+  return None
+translation_gadget = context.getDocumentValue(translation_gadget_url)
+if not translation_gadget:
+  return None
+
+# find the .js containing translation data
+for successor in translation_gadget.getImplicitSuccessorValueList():
+  successor = successor.getObject()
+  if successor.getReference() and successor.getReference().endswith(
+      'translation_data.js'):
+    return successor
+
+return None
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b60e22a0697f678bfd99aef7b6f514512fe95843
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>WebSite_getTranslationDataWebScriptValue</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.py b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.py
new file mode 100644
index 0000000000000000000000000000000000000000..5a1226a07e9462b880768aebb96ac41135f46628
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.py
@@ -0,0 +1,30 @@
+from Products.ERP5Type.Message import translateString
+portal = context.getPortalObject()
+
+gadget_translation_data_js = context.WebSite_getTranslationDataWebScriptValue()
+if gadget_translation_data_js is None:
+  return context.Base_redirect(
+      form_id,
+      keep_items=dict(
+          portal_status_message=translateString("No translation data script.")))
+
+gadget_translation_data_js.setTextContent(
+    context.WebSite_getTranslationDataTextContent())
+portal.portal_workflow.doActionFor(
+    gadget_translation_data_js,
+    'edit_action',
+    comment=translateString(
+        "Translation data updated from web site ${web_site_id}.",
+        mapping={'web_site_id': context.getId()}))
+
+# Edit web section modification date
+portal.portal_workflow.doActionFor(
+    context,
+    'edit_action',
+    comment=translateString("Translation data updated.",))
+
+if REQUEST is not None:
+  return context.Base_redirect(
+      form_id,
+      keep_items=dict(
+          portal_status_message=translateString("Translation data updated.")))
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b500b5b313403d4e15f997ef610c23c85bba44fd
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>form_id=\'\', REQUEST=None</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>WebSite_updateTranslationData</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_createTranslationData.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_viewUpdateTranslationDataDialog.xml
similarity index 88%
rename from bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_createTranslationData.xml
rename to bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_viewUpdateTranslationDataDialog.xml
index 5661006a6eadb593c515160ec38692aac8f5e737..2357a4ed51615d599853b9586aec6af907e8921a 100644
--- a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_createTranslationData.xml
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_viewUpdateTranslationDataDialog.xml
@@ -14,7 +14,11 @@
         </item>
         <item>
             <key> <string>action</string> </key>
-            <value> <string>Base_createTranslateData</string> </value>
+            <value> <string>WebSite_updateTranslationData</string> </value>
+        </item>
+        <item>
+            <key> <string>action_title</string> </key>
+            <value> <string></string> </value>
         </item>
         <item>
             <key> <string>description</string> </key>
@@ -72,7 +76,7 @@
                     <key> <string>left</string> </key>
                     <value>
                       <list>
-                        <string>your_translation_data_file</string>
+                        <string>your_translation_data_reference</string>
                       </list>
                     </value>
                 </item>
@@ -87,7 +91,7 @@
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>WebSite_createTranslationData</string> </value>
+            <value> <string>WebSite_viewUpdateTranslationDataDialog</string> </value>
         </item>
         <item>
             <key> <string>method</string> </key>
@@ -95,7 +99,7 @@
         </item>
         <item>
             <key> <string>name</string> </key>
-            <value> <string>WebSite_createTranslationData</string> </value>
+            <value> <string>WebSite_viewUpdateTranslationDataDialog</string> </value>
         </item>
         <item>
             <key> <string>pt</string> </key>
@@ -111,7 +115,7 @@
         </item>
         <item>
             <key> <string>title</string> </key>
-            <value> <string>Create Translation Data</string> </value>
+            <value> <string>Update Translation Data</string> </value>
         </item>
         <item>
             <key> <string>unicode_mode</string> </key>
diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_viewUpdateTranslationDataDialog/your_translation_data_reference.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_viewUpdateTranslationDataDialog/your_translation_data_reference.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9455e6e6b4d599c8c3d3b1c4351bf4cd8927ec80
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_viewUpdateTranslationDataDialog/your_translation_data_reference.xml
@@ -0,0 +1,287 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="StringField" module="Products.Formulator.StandardFields"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_translation_data_reference</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+                <item>
+                    <key> <string>required_not_found</string> </key>
+                    <value> <string>Input is required but no input given.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_long</string> </key>
+                    <value> <string>Too much input was given.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>input_type</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>input_type</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>input_type</string> </key>
+                    <value> <string>text</string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Translation Data Script</string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python: context.WebSite_getTranslationDataWebScriptValue().getReference() if context.WebSite_getTranslationDataWebScriptValue() else context.Base_translateString("No translation data script.")</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Base_createBaseLanguage.py b/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Base_createBaseLanguage.py
index 60f5637569a299d1b463dc81b3d9b5cd77dc5ac4..c1e0453854e7052ff0d021edc3cc7d0cbd19eeb5 100644
--- a/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Base_createBaseLanguage.py
+++ b/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Base_createBaseLanguage.py
@@ -86,6 +86,6 @@ for tmp in param_dict:
   context.Base_addUITestTranslation(message = tmp['message'], translation = tmp['translation'], language = tmp['language'])
 
 context.web_site_module.renderjs_runner.setAvailableLanguageSet(['en', 'fr', 'wo'])
-context.web_site_module.renderjs_runner.Base_createTranslateData(translation_data_file='gadget_translation_data.js',batch_mode=1)
+context.web_site_module.renderjs_runner.WebSite_updateTranslationData()
 context.ERP5Site_updateTranslationTable()
 return 'done'
diff --git a/bt5/erp5_web_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testRJSUpgrader.py b/bt5/erp5_web_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testRJSUpgrader.py
index 34e5f579fa8dc20c5fb16ac8a456688db706744e..7b004dd1be18a6ad04556419eb486ab59ebdfc06 100644
--- a/bt5/erp5_web_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testRJSUpgrader.py
+++ b/bt5/erp5_web_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testRJSUpgrader.py
@@ -119,3 +119,63 @@ class TestRenderJSUpgrade(ERP5TypeTestCase):
         [
           'Error: Web Site %s references a non existant appcache %s' % (self.web_site.getRelativeUrl(), non_existant_appcache)
         ], [str(m.getMessage()) for m in self.web_site.checkConsistency()])
+
+  def test_upgrade_site_translation(self):
+    test_upgrade_site_translation_data_js = self.portal.web_page_module.newContent(
+        portal_type='Web Script',
+        reference='test_upgrade_site_translation_data.js',
+        text_content='// will be filled',
+    )
+    test_upgrade_site_translation_data_js.publish()
+    test_upgrade_site_translation_data_js_modification_date = test_upgrade_site_translation_data_js.getModificationDate()
+
+    test_upgrade_site_translation_data_html = self.portal.web_page_module.newContent(
+        portal_type='Web Page',
+        reference='test_upgrade_site_translation.html',
+        content_type='text/html',
+        text_content=textwrap.dedent('''
+            <!DOCTYPE html>
+              <html>
+                <head>
+                  <meta charset="utf-8" />
+                  <meta name="viewport" content="width=device-width" />
+                  <title>Translation Gadget</title>
+                  <link rel="http://www.renderjs.org/rel/interface" href="interface_translation.html">
+
+                  <!-- renderjs -->
+                  <script src="rsvp.js" type="text/javascript"></script>
+                  <script src="renderjs.js" type="text/javascript"></script>
+
+                  <!-- custom script -->
+                  <script src="test_upgrade_site_translation_data.js" type="text/javascript"></script>
+                  <script src="gadget_translation.js" type="text/javascript"></script>
+
+                  </head>
+                <body>
+                </body>
+              </html>
+              '''),
+      )
+    test_upgrade_site_translation_data_html.publish()
+
+    self.web_site.setProperty(
+        'configuration_translation_gadget_url',
+        'test_upgrade_site_translation.html',
+    )
+    self.web_site.setAvailableLanguageList(['en', 'fa'])
+    self.tic()
+    self.assertEqual(
+        ['Translation data script content is not up to date'],
+        [str(m.getMessage()) for m in self.web_site.checkConsistency()])
+    self.web_site.fixConsistency()
+    self.tic()
+
+    self.assertEqual(
+        [],
+        [str(m.getMessage()) for m in self.web_site.checkConsistency()])
+    self.assertIn(
+        "window.translation_data = ",
+        test_upgrade_site_translation_data_js.getTextContent())
+    self.assertGreater(
+        test_upgrade_site_translation_data_js.getModificationDate(),
+        test_upgrade_site_translation_data_js_modification_date)