From 8b42f3edcc7aa68692288750edf1e6809ccdf9a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Fri, 12 Jun 2020 14:46:00 +0900 Subject: [PATCH] web_renderjs_ui: rework "Update Translation Data" action - user no longer have to choose the translation data script, it's selected automatically from the translation gadget configured on the web site - add some notes in workflow history for traceability - rename from "Create Translation Data" to *Update* Translation Data, as this script can be called multiple times to update - rename the dialog and script to comply with naming conventions - add a header to generated translation data script to explain that this is generated and that it should not be edited manually - generate code passing jslint and typescript --- .../Web%20Site/create_translation_data.xml | 4 +- .../rjs_gadget_translation_data_js.js | 15 +- .../Base_createTranslateData.py | 53 ---- .../your_translation_data_file.xml | 123 -------- .../WebSite_getTranslationDataTextContent.py | 50 +++ ...WebSite_getTranslationDataTextContent.xml} | 4 +- ...ebSite_getTranslationDataWebScriptValue.py | 20 ++ ...bSite_getTranslationDataWebScriptValue.xml | 62 ++++ .../WebSite_updateTranslationData.py | 30 ++ .../WebSite_updateTranslationData.xml | 62 ++++ ...bSite_viewUpdateTranslationDataDialog.xml} | 14 +- .../your_translation_data_reference.xml | 287 ++++++++++++++++++ .../Base_createBaseLanguage.py | 2 +- 13 files changed, 535 insertions(+), 191 deletions(-) delete mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/Base_createTranslateData.py delete mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_createTranslationData/your_translation_data_file.xml create mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.py rename bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/{Base_createTranslateData.xml => WebSite_getTranslationDataTextContent.xml} (93%) create mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.py create mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.xml create mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.py create mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_updateTranslationData.xml rename bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/{WebSite_createTranslationData.xml => WebSite_viewUpdateTranslationDataDialog.xml} (88%) create mode 100644 bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_viewUpdateTranslationDataDialog/your_translation_data_reference.xml 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 1e10375aaf..5ab633f789 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_translation_data_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_translation_data_js.js index 6178c83f7d..365d97512d 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/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 99b4e1f953..0000000000 --- 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_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 73d7ae53e9..0000000000 --- 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 0000000000..1a5ff11f44 --- /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/Base_createTranslateData.xml b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataTextContent.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_getTranslationDataTextContent.xml index faf1b9e6e5..c312ec74f4 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_getTranslationDataTextContent.xml @@ -50,11 +50,11 @@ </item> <item> <key> <string>_params</string> </key> - <value> <string> translation_data_file, batch_mode=0</string> </value> + <value> <string></string> </value> </item> <item> <key> <string>id</string> </key> - <value> <string>Base_createTranslateData</string> </value> + <value> <string>WebSite_getTranslationDataTextContent</string> </value> </item> </dictionary> </pickle> 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 0000000000..cf66c66f0c --- /dev/null +++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs/WebSite_getTranslationDataWebScriptValue.py @@ -0,0 +1,20 @@ +# type: () -> Optional[erp5.portal_type.WebScript] +"""Returns the web script used to contain the translation data for this RJS 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 0000000000..b60e22a069 --- /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 0000000000..5a1226a07e --- /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 0000000000..b500b5b313 --- /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 5661006a6e..2357a4ed51 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 0000000000..9455e6e6b4 --- /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 3a5e961f86..da8104b38f 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 @@ -85,6 +85,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' -- 2.30.9