From 175d3348a1cf1c71b4d097190a976f66c16aa5e7 Mon Sep 17 00:00:00 2001 From: clarlars Date: Tue, 30 Jul 2019 16:07:12 -0700 Subject: [PATCH 1/2] Implement clean functionality --- Gruntfile.js | 95 ++++ app/config/assets/commonDefinitions.clean.js | 18 +- .../forms/framework.clean/formDef.json | 466 +++++++++++++----- .../forms/framework.clean/framework.xlsx | Bin 17547 -> 20173 bytes .../framework/frameworkDefinitions.clean.js | 189 ++++--- app/config/assets/index.clean.html | 14 - 6 files changed, 588 insertions(+), 194 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 8db1f3422..c45f2f609 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -120,9 +120,11 @@ module.exports = function (grunt) { deviceMount: '/sdcard/opendatakit', // The mount point of the device for odk collect forms. formMount: '/sdcard/odk/forms', + assetsDir: 'app/config/assets', // The directory where the 'tables' directory containing the tableId // directories lives. tablesDir: 'app/config/tables', + dataDir: 'app/data', // Where the templates for a new tableId folder lives. i.e. if you want // to add a table, the contents of this directory would be copied to // tablesDir/tableId. @@ -2066,4 +2068,97 @@ var zipAllFiles = function( destZipFile, filesList, completionFn ) { if (set === "off") grunt.option("force", false); if (set === "restore") grunt.option("force", previous_force_state); }); + + function deleteFilesList(grunt, workingDir, toBeDeleted) { + toBeDeleted.forEach(function (fileName) { + var dirToUse = workingDir; + if (!dirToUse.endsWith('/')) { + dirToUse = dirToUse + '/'; + } + + var src = dirToUse + fileName; + grunt.log.writeln('deleteTopLevel: deleting ' + src); + grunt.file.delete(src, {force: true}); + }); + } + + var deleteTopLevel = function(grunt, dirToDelete) { + var toBeDeleted = grunt.file.expand( + {cwd: dirToDelete }, + '*'); + deleteFilesList(grunt, dirToDelete, toBeDeleted); + }; + + grunt.registerTask( + 'clean', + 'Remove unnecessry files to make a clean app-designer', + function() { + + deleteTopLevel(grunt, tablesConfig.tablesDir); + deleteTopLevel(grunt, tablesConfig.assetsDir + '/csv'); + deleteTopLevel(grunt, tablesConfig.dataDir); + deleteTopLevel(grunt, tablesConfig.appDir + '/' + tablesConfig.outputCsvDir); + deleteTopLevel(grunt, tablesConfig.appDir + '/' + tablesConfig.outputDbDir); + deleteTopLevel(grunt, tablesConfig.appDir + '/' + tablesConfig.outputDebugDir); + deleteTopLevel(grunt, tablesConfig.appDir + '/' + tablesConfig.outputPropsDir); + + var assetFilesToDelete = grunt.file.expand( + {filter: 'isFile', + cwd: tablesConfig.assetsDir }, + '*.*', + '!favicon.ico', + 'css/**', + '!css/odk-survey.css', + 'csv/**', + 'framework/**', + '!**/*.clean.*', + '!framework/forms/framework.clean/**', + 'img/**', + '!img/play.png', + '!img/form_logo.png', + '!img/backup.png', + '!img/advance.png', + '!img/little_arrow.png', + 'js/**', + '!js/util.js', + '!libs/**', + '!commonDefinitions.js', + '!index.html', + '!framework/forms/framework/formDef.json', + '!framework/forms/framework/framework.xlsx', + '!framework/frameworkDefinitions.js' + ); + + // Delete unnecessary files + deleteFilesList(grunt, tablesConfig.assetsDir, assetFilesToDelete); + + // Find all instances of things with .clean in it + var cleanFilesToDelete = grunt.file.expand( + { cwd: tablesConfig.assetsDir, + filter: 'isFile'}, + '**/*.clean.*', + '**/*.clean/**' + ); + + // Copy *.clean files over to the correct directory + cleanFilesToDelete.forEach(function(fileName) { + var src = tablesConfig.assetsDir + '/' + fileName; + var dest = src; + var dest = dest.replace(new RegExp('.clean', 'g'), ''); + grunt.log.writeln('copy ' + src + ' to ' + dest); + grunt.file.copy(src, dest); + }); + + // Delete all of the .clean files now + deleteFilesList(grunt, tablesConfig.assetsDir, cleanFilesToDelete); + + // Delete all of the other framework directories + var assetsDirToDelete = grunt.file.expand( + {cwd: tablesConfig.assetsDir + '/framework/forms'}, + '*', + '*.*', + '!framework/**'); + + deleteFilesList(grunt, tablesConfig.assetsDir + '/framework/forms', assetsDirToDelete); + }); }; diff --git a/app/config/assets/commonDefinitions.clean.js b/app/config/assets/commonDefinitions.clean.js index 2da079bcc..98b1f21c0 100644 --- a/app/config/assets/commonDefinitions.clean.js +++ b/app/config/assets/commonDefinitions.clean.js @@ -9,7 +9,8 @@ window.odkCommonDefinitions = { "locale": { "text": { "en": "English", - "hi": "अंग्रेज़ी ", + "hi": "अंग्रेज़ी", + "es": "Inglés", "default": "English" } } @@ -23,12 +24,27 @@ window.odkCommonDefinitions = { "text": { "en": "Hindi", "hi": "हिंदी", + "es": "Hindi", "default": "Hindi" } } }, "_row_num": 8, "name": "hi" + }, + { + "display": { + "locale": { + "text": { + "en": "Spanish", + "hi": "स्पेनिश", + "es": "Español", + "default": "Spanish" + } + } + }, + "_row_num": 9, + "name": "es" } ] }, diff --git a/app/config/assets/framework/forms/framework.clean/formDef.json b/app/config/assets/framework/forms/framework.clean/formDef.json index 727bcb1f6..82fba7c2f 100644 --- a/app/config/assets/framework/forms/framework.clean/formDef.json +++ b/app/config/assets/framework/forms/framework.clean/formDef.json @@ -65,6 +65,18 @@ "_row_num": 10 } ], + "choices": [ + { + "choice_list_name": "test_forms", + "data_value": "form_id_here", + "display": { + "title": { + "text": "form_title_here" + } + }, + "_row_num": 2 + } + ], "settings": [ { "setting_name": "table_id", @@ -90,6 +102,7 @@ "text": { "en": "Common Javascript Framework", "hi": "सामान्य जावास्क्रिप्ट फ़्रेमवर्क", + "es": "Marco común de Javascript", "default": "Common Javascript Framework" } } @@ -105,6 +118,7 @@ "text": { "en": "English", "hi": "अंग्रेज़ी", + "es": "Inglés", "default": "English" } } @@ -118,6 +132,7 @@ "text": { "en": "Hindi", "hi": "हिंदी", + "es": "Hindi", "default": "Hindi" } } @@ -125,55 +140,58 @@ "_row_num": 8 }, { - "setting_name": "framework_variant", - "_row_num": 9 - } - ], - "choices": [ - { - "choice_list_name": "test_forms", - "data_value": "form_id_here", + "setting_name": "es", "display": { - "title": { - "text": "form_title_here" + "locale": { + "text": { + "en": "Spanish", + "hi": "स्पेनिश", + "es": "Español", + "default": "Spanish" + } } }, - "_row_num": 2 + "_row_num": 9 } ], "framework_translations": [ { "string_token": "constraint_message", "text": { - "default": "Constraint violated." + "default": "Constraint violated.", + "es": "Restricción incumplida" }, "_row_num": 2 }, { "string_token": "invalid_value_message", "text": { - "default": "Invalid value." + "default": "Invalid value.", + "es": "Valor no válido." }, "_row_num": 3 }, { "string_token": "required_message", "text": { - "default": "Required value not provided." + "default": "Required value not provided.", + "es": "Dato requerido no proporcionado" }, "_row_num": 4 }, { "string_token": "required_exception_message", "text": { - "default": "Exception while evaluating required() expression. See console log." + "default": "Exception while evaluating required() expression. See console log.", + "es": "Excepción al evaluar la expresión requerido(). Ver consola de registro" }, "_row_num": 5 }, { "string_token": "constraint_exception_message", "text": { - "default": "Exception while evaluating constraint() expression. See console log." + "default": "Exception while evaluating constraint() expression. See console log.", + "es": "Excepción al evaluar la expresión restricción(). Ver consola de registro" }, "_row_num": 6 }, @@ -181,7 +199,8 @@ "string_token": "acknLabel", "text": { "default": "Acknowledge", - "hi": "स्वीकार करना" + "hi": "स्वीकार करना", + "es": "Admitir" }, "_row_num": 7 }, @@ -189,7 +208,8 @@ "string_token": "back_button_label", "text": { "default": "Back", - "hi": "लौटना" + "hi": "लौटना", + "es": "Atrás" }, "_row_num": 8 }, @@ -197,7 +217,8 @@ "string_token": "next_button_label", "text": { "default": "Next", - "hi": "आगामी" + "hi": "आगामी", + "es": "Siguiente" }, "_row_num": 9 }, @@ -205,238 +226,272 @@ "string_token": "continue_button_label", "text": { "default": "Continue", - "hi": "जारी रहना" + "hi": "जारी रहना", + "es": "Continuar" }, "_row_num": 10 }, { "string_token": "select_one_dropdown_label", "text": { - "default": "Choose Option" + "default": "Choose Option", + "es": "Elige una opción" }, "_row_num": 11 }, { "string_token": "requiredValueErr", "text": { - "default": "Required value was not provided." + "default": "Required value was not provided.", + "es": "Dato requerido no proporcionado" }, "_row_num": 12 }, { "string_token": "geopoint_button_label", "text": { - "default": "Record Location" + "default": "Record Location", + "es": "Grabar ubicación" }, "_row_num": 13 }, { "string_token": "geopoint_latitude_component", "text": { - "default": "Latitude: {{value.latitude}}" + "default": "Latitude: {{value.latitude}}", + "es": "Latitud: {{value.latitude}}" }, "_row_num": 14 }, { "string_token": "geopoint_longitude_component", "text": { - "default": "Longitude: {{value.longitude}}" + "default": "Longitude: {{value.longitude}}", + "es": "Longitud: {{value.longitude}}" }, "_row_num": 15 }, { "string_token": "geopoint_altitude_component", "text": { - "default": "Altitude: {{value.altitude}}" + "default": "Altitude: {{value.altitude}}", + "es": "Altitud: {{value.altitude}}" }, "_row_num": 16 }, { "string_token": "geopoint_accuracy_component", "text": { - "default": "Accuracy: {{value.accuracy}}" + "default": "Accuracy: {{value.accuracy}}", + "es": "Precisión: {{value.accuracy}}" }, "_row_num": 17 }, { "string_token": "waiting_text", "text": { - "default": "Please wait…" + "default": "Please wait…", + "es": "Por favor, espere…" }, "_row_num": 18 }, { "string_token": "take_video_button_label", "text": { - "default": "Take Video" + "default": "Take Video", + "es": "Graba un vídeo" }, "_row_num": 19 }, { "string_token": "choose_video_button_label", "text": { - "default": "Choose Video" + "default": "Choose Video", + "es": "Elige un vídeo" }, "_row_num": 20 }, { "string_token": "video_control_not_supported", "text": { - "default": "Video controls are not supported." + "default": "Video controls are not supported.", + "es": "Controles de vídeo no son compatibles." }, "_row_num": 21 }, { "string_token": "take_audio_button_label", "text": { - "default": "Capture Audio" + "default": "Capture Audio", + "es": "Captura audio" }, "_row_num": 22 }, { "string_token": "choose_audio_button_label", "text": { - "default": "Choose Audio" + "default": "Choose Audio", + "es": "Elige audio" }, "_row_num": 23 }, { "string_token": "audio_control_not_supported", "text": { - "default": "Audio controls are not supported." + "default": "Audio controls are not supported.", + "es": "Controles de audio no son compatibles." }, "_row_num": 24 }, { "string_token": "confirm_action_no_label", "text": { - "default": "NO" + "default": "NO", + "es": "NO" }, "_row_num": 25 }, { "string_token": "confirm_action_yes_label", "text": { - "default": "YES" + "default": "YES", + "es": "SI" }, "_row_num": 26 }, { "string_token": "external_link_button_label", "text": { - "default": "Follow link" + "default": "Follow link", + "es": "Sigue el enlace" }, "_row_num": 27 }, { "string_token": "survey_form_identification", "text": { - "default": "
ODK Survey

Form name: {{localizeText form_title}}

{{#if form_version}}

Form version: {{form_version}}

{{/if}}
" + "default": "
ODK Survey

Form name: {{localizeText form_title}}

{{#if form_version}}

Form version: {{form_version}}

{{/if}}
", + "es": "
ODK Survey

Nombre del Formulario: {{localizeText form_title}}

{{#if form_version}}

Version de Formulario: {{form_version}}

{{/if}}
" }, "_row_num": 28 }, { "string_token": "finalize_survey_instance_detail", "text": { - "default": "

You are at the end of instance:

\"{{display_field}}\"


" + "default": "

You are at the end of instance:

\"{{display_field}}\"


", + "es": "

Está en el final de la instancia:

\"{{display_field}}\"


" }, "_row_num": 29 }, { "string_token": "finalize_survey_button_label", "text": { - "default": "Finalize" + "default": "Finalize", + "es": "Finalizar" }, "_row_num": 30 }, { "string_token": "save_as_incomplete_survey_button_label", "text": { - "default": "Incomplete" + "default": "Incomplete", + "es": "Incompleto" }, "_row_num": 31 }, { "string_token": "take_image_button_label", "text": { - "default": "Take Photo" + "default": "Take Photo", + "es": "Tomé una foto" }, "_row_num": 33 }, { "string_token": "choose_image_button_label", "text": { - "default": "Choose Image" + "default": "Choose Image", + "es": "Elige una imagen" }, "_row_num": 34 }, { "string_token": "launch_intent_button_label", "text": { - "default": "Launch Intent" + "default": "Launch Intent", + "es": "Lanzamiento de intención" }, "_row_num": 35 }, { "string_token": "opening_survey_instance_detail", "text": { - "default": "{{#if display_field}}\n

You are at the start of instance:

\n

\"{{display_field}}\"

\n {{else}}\n

You are at the start of a new instance.

\n {{/if}}\n
\n {{#if last_save_date}}\n

Last saved:

\n

{{last_save_date}}

\n {{/if}}\n
" + "default": "{{#if display_field}}\n

You are at the start of instance:

\n

\"{{display_field}}\"

\n {{else}}\n

You are at the start of a new instance.

\n {{/if}}\n
\n {{#if last_save_date}}\n

Last saved:

\n

{{last_save_date}}

\n {{/if}}\n
", + "es": "{{#if display_field}}\n

estás en el inicio de la instancia:

\n

\"{{display_field}}\"

\n {{else}}\n

estás en el inicio de una nueva instancia.

\n {{/if}}\n
\n {{#if last_save_date}}\n

guardado por última vez:

\n

{{last_save_date}}

\n {{/if}}\n
" }, "_row_num": 36 }, { "string_token": "opening_survey_next_button_label", "text": { - "default": "Go to next prompt" + "default": "Go to next prompt", + "es": "Ir al siguiente" }, "_row_num": 37 }, { "string_token": "options_popup_language_heading", "text": { - "default": "Language" + "default": "Language", + "es": "Idioma" }, "_row_num": 38 }, { "string_token": "options_popup_contents_heading", "text": { - "default": "Contents" + "default": "Contents", + "es": "Contenido" }, "_row_num": 39 }, { "string_token": "options_popup_ignore_changes_heading", "text": { - "default": "Ignore Changes + Exit" + "default": "Ignore Changes + Exit", + "es": "Ignorar cambios y salir" }, "_row_num": 40 }, { "string_token": "options_popup_save_changes_heading", "text": { - "default": "Save Changes + Exit" + "default": "Save Changes + Exit", + "es": "Guardar cambios y salir" }, "_row_num": 41 }, { "string_token": "options_popup_finalize_changes_heading", "text": { - "default": "Finalize Changes + Exit" + "default": "Finalize Changes + Exit", + "es": "Finalizar cambios y salir" }, "_row_num": 42 }, { "string_token": "screen_popup_ok_button_label", "text": { - "default": "OK" + "default": "OK", + "es": "Confirmar" }, "_row_num": 43 }, { "string_token": "select_with_other_other_label", "text": { - "default": "Other:" + "default": "Other:", + "es": "Otro:" }, "_row_num": 44 }, @@ -444,93 +499,130 @@ "string_token": "select_deselect_label", "text": { "default": "Deselect", - "hi": "अचयनित" + "hi": "अचयनित", + "es": "Deseleccioanr" }, "_row_num": 45 }, { "string_token": "take_signature_button_label", "text": { - "default": "Get Signature" + "default": "Get Signature", + "es": "Obtener firma" }, "_row_num": 46 }, { "string_token": "instances_survey_create_button_label", "text": { - "default": "Create new instance" + "default": "Create new instance", + "es": "Crear nueva instancia" }, "_row_num": 47 }, { "string_token": "instances_no_saved_instances_label", "text": { - "default": "No saved instances." + "default": "No saved instances.", + "es": "Instancias no guardadas" }, "_row_num": 48 }, { "string_token": "instances_last_save_date_label", "text": { - "default": "

Last Save Date:

" + "default": "

Last Save Date:

", + "es": "

Última fecha guardada:

" }, "_row_num": 49 }, { "string_token": "instances_previously_created_instances_label", "text": { - "default": "

Previously created instances:

" + "default": "

Previously created instances:

", + "es": "

Instancias creadas previamente:

" }, "_row_num": 50 }, { "string_token": "savepoint_type_finalized_text_label", "text": { - "default": "Finalized" + "default": "Finalized", + "es": "Finalizado" }, "_row_num": 51 }, { "string_token": "savepoint_type_incomplete_text_label", "text": { - "default": "Incomplete" + "default": "Incomplete", + "es": "Incompleto" }, "_row_num": 52 }, { "string_token": "savepoint_type_checkpoint_text_label", "text": { - "default": "Checkpoint" + "default": "Checkpoint", + "es": "Cambios no guardados" }, "_row_num": 53 }, { "string_token": "linked_table_new_instance_label", "text": { - "default": "Create new instance" + "default": "Create new instance", + "es": "Crear nueva instancia" }, "_row_num": 54 }, { "string_token": "barcode_button_label", "text": { - "default": "Scan Barcode" + "default": "Scan Barcode", + "es": "Escanear Código de Barras" }, "_row_num": 55 }, { "string_token": "invalid_numeric_message", "text": { - "default": "Numeric value expected" + "default": "Numeric value expected", + "es": "Valor numérico esperado" }, "_row_num": 56 }, { "string_token": "invalid_integer_message", "text": { - "default": "Integer value expected" + "default": "Integer value expected", + "es": "Valor entero esperado" }, "_row_num": 57 + }, + { + "string_token": "confirm_exit_label", + "text": { + "default": "Exit", + "es": "Salir" + }, + "_row_num": 58 + }, + { + "string_token": "confirm_cancel_label", + "text": { + "default": "Cancel", + "es": "Cancelar" + }, + "_row_num": 59 + }, + { + "string_token": "confirm_message", + "text": { + "default": "Are you sure you want to exit and lose all changes?", + "es": "¿Estás seguro de que quieres salir y perder todos los cambios?" + }, + "_row_num": 60 } ] }, @@ -575,6 +667,7 @@ "text": { "en": "Common Javascript Framework", "hi": "सामान्य जावास्क्रिप्ट फ़्रेमवर्क", + "es": "Marco común de Javascript", "default": "Common Javascript Framework" } } @@ -590,6 +683,7 @@ "text": { "en": "English", "hi": "अंग्रेज़ी", + "es": "Inglés", "default": "English" } } @@ -603,14 +697,25 @@ "text": { "en": "Hindi", "hi": "हिंदी", + "es": "Hindi", "default": "Hindi" } } }, "_row_num": 8 }, - "framework_variant": { - "setting_name": "framework_variant", + "es": { + "setting_name": "es", + "display": { + "locale": { + "text": { + "en": "Spanish", + "hi": "स्पेनिश", + "es": "Español", + "default": "Spanish" + } + } + }, "_row_num": 9 }, "_locales": { @@ -623,6 +728,7 @@ "text": { "en": "English", "hi": "अंग्रेज़ी", + "es": "Inglés", "default": "English" } } @@ -636,12 +742,27 @@ "text": { "en": "Hindi", "hi": "हिंदी", + "es": "Hindi", "default": "Hindi" } } }, "_row_num": 8, "name": "hi" + }, + { + "display": { + "locale": { + "text": { + "en": "Spanish", + "hi": "स्पेनिश", + "es": "Español", + "default": "Spanish" + } + } + }, + "_row_num": 9, + "name": "es" } ] }, @@ -657,6 +778,7 @@ "text": { "en": "Common Javascript Framework", "hi": "सामान्य जावास्क्रिप्ट फ़्रेमवर्क", + "es": "Marco común de Javascript", "default": "Common Javascript Framework" } } @@ -685,35 +807,40 @@ "constraint_message": { "string_token": "constraint_message", "text": { - "default": "Constraint violated." + "default": "Constraint violated.", + "es": "Restricción incumplida" }, "_row_num": 2 }, "invalid_value_message": { "string_token": "invalid_value_message", "text": { - "default": "Invalid value." + "default": "Invalid value.", + "es": "Valor no válido." }, "_row_num": 3 }, "required_message": { "string_token": "required_message", "text": { - "default": "Required value not provided." + "default": "Required value not provided.", + "es": "Dato requerido no proporcionado" }, "_row_num": 4 }, "required_exception_message": { "string_token": "required_exception_message", "text": { - "default": "Exception while evaluating required() expression. See console log." + "default": "Exception while evaluating required() expression. See console log.", + "es": "Excepción al evaluar la expresión requerido(). Ver consola de registro" }, "_row_num": 5 }, "constraint_exception_message": { "string_token": "constraint_exception_message", "text": { - "default": "Exception while evaluating constraint() expression. See console log." + "default": "Exception while evaluating constraint() expression. See console log.", + "es": "Excepción al evaluar la expresión restricción(). Ver consola de registro" }, "_row_num": 6 }, @@ -721,7 +848,8 @@ "string_token": "acknLabel", "text": { "default": "Acknowledge", - "hi": "स्वीकार करना" + "hi": "स्वीकार करना", + "es": "Admitir" }, "_row_num": 7 }, @@ -729,7 +857,8 @@ "string_token": "back_button_label", "text": { "default": "Back", - "hi": "लौटना" + "hi": "लौटना", + "es": "Atrás" }, "_row_num": 8 }, @@ -737,7 +866,8 @@ "string_token": "next_button_label", "text": { "default": "Next", - "hi": "आगामी" + "hi": "आगामी", + "es": "Siguiente" }, "_row_num": 9 }, @@ -745,238 +875,272 @@ "string_token": "continue_button_label", "text": { "default": "Continue", - "hi": "जारी रहना" + "hi": "जारी रहना", + "es": "Continuar" }, "_row_num": 10 }, "select_one_dropdown_label": { "string_token": "select_one_dropdown_label", "text": { - "default": "Choose Option" + "default": "Choose Option", + "es": "Elige una opción" }, "_row_num": 11 }, "requiredValueErr": { "string_token": "requiredValueErr", "text": { - "default": "Required value was not provided." + "default": "Required value was not provided.", + "es": "Dato requerido no proporcionado" }, "_row_num": 12 }, "geopoint_button_label": { "string_token": "geopoint_button_label", "text": { - "default": "Record Location" + "default": "Record Location", + "es": "Grabar ubicación" }, "_row_num": 13 }, "geopoint_latitude_component": { "string_token": "geopoint_latitude_component", "text": { - "default": "Latitude: {{value.latitude}}" + "default": "Latitude: {{value.latitude}}", + "es": "Latitud: {{value.latitude}}" }, "_row_num": 14 }, "geopoint_longitude_component": { "string_token": "geopoint_longitude_component", "text": { - "default": "Longitude: {{value.longitude}}" + "default": "Longitude: {{value.longitude}}", + "es": "Longitud: {{value.longitude}}" }, "_row_num": 15 }, "geopoint_altitude_component": { "string_token": "geopoint_altitude_component", "text": { - "default": "Altitude: {{value.altitude}}" + "default": "Altitude: {{value.altitude}}", + "es": "Altitud: {{value.altitude}}" }, "_row_num": 16 }, "geopoint_accuracy_component": { "string_token": "geopoint_accuracy_component", "text": { - "default": "Accuracy: {{value.accuracy}}" + "default": "Accuracy: {{value.accuracy}}", + "es": "Precisión: {{value.accuracy}}" }, "_row_num": 17 }, "waiting_text": { "string_token": "waiting_text", "text": { - "default": "Please wait…" + "default": "Please wait…", + "es": "Por favor, espere…" }, "_row_num": 18 }, "take_video_button_label": { "string_token": "take_video_button_label", "text": { - "default": "Take Video" + "default": "Take Video", + "es": "Graba un vídeo" }, "_row_num": 19 }, "choose_video_button_label": { "string_token": "choose_video_button_label", "text": { - "default": "Choose Video" + "default": "Choose Video", + "es": "Elige un vídeo" }, "_row_num": 20 }, "video_control_not_supported": { "string_token": "video_control_not_supported", "text": { - "default": "Video controls are not supported." + "default": "Video controls are not supported.", + "es": "Controles de vídeo no son compatibles." }, "_row_num": 21 }, "take_audio_button_label": { "string_token": "take_audio_button_label", "text": { - "default": "Capture Audio" + "default": "Capture Audio", + "es": "Captura audio" }, "_row_num": 22 }, "choose_audio_button_label": { "string_token": "choose_audio_button_label", "text": { - "default": "Choose Audio" + "default": "Choose Audio", + "es": "Elige audio" }, "_row_num": 23 }, "audio_control_not_supported": { "string_token": "audio_control_not_supported", "text": { - "default": "Audio controls are not supported." + "default": "Audio controls are not supported.", + "es": "Controles de audio no son compatibles." }, "_row_num": 24 }, "confirm_action_no_label": { "string_token": "confirm_action_no_label", "text": { - "default": "NO" + "default": "NO", + "es": "NO" }, "_row_num": 25 }, "confirm_action_yes_label": { "string_token": "confirm_action_yes_label", "text": { - "default": "YES" + "default": "YES", + "es": "SI" }, "_row_num": 26 }, "external_link_button_label": { "string_token": "external_link_button_label", "text": { - "default": "Follow link" + "default": "Follow link", + "es": "Sigue el enlace" }, "_row_num": 27 }, "survey_form_identification": { "string_token": "survey_form_identification", "text": { - "default": "
ODK Survey

Form name: {{localizeText form_title}}

{{#if form_version}}

Form version: {{form_version}}

{{/if}}
" + "default": "
ODK Survey

Form name: {{localizeText form_title}}

{{#if form_version}}

Form version: {{form_version}}

{{/if}}
", + "es": "
ODK Survey

Nombre del Formulario: {{localizeText form_title}}

{{#if form_version}}

Version de Formulario: {{form_version}}

{{/if}}
" }, "_row_num": 28 }, "finalize_survey_instance_detail": { "string_token": "finalize_survey_instance_detail", "text": { - "default": "

You are at the end of instance:

\"{{display_field}}\"


" + "default": "

You are at the end of instance:

\"{{display_field}}\"


", + "es": "

Está en el final de la instancia:

\"{{display_field}}\"


" }, "_row_num": 29 }, "finalize_survey_button_label": { "string_token": "finalize_survey_button_label", "text": { - "default": "Finalize" + "default": "Finalize", + "es": "Finalizar" }, "_row_num": 30 }, "save_as_incomplete_survey_button_label": { "string_token": "save_as_incomplete_survey_button_label", "text": { - "default": "Incomplete" + "default": "Incomplete", + "es": "Incompleto" }, "_row_num": 31 }, "take_image_button_label": { "string_token": "take_image_button_label", "text": { - "default": "Take Photo" + "default": "Take Photo", + "es": "Tomé una foto" }, "_row_num": 33 }, "choose_image_button_label": { "string_token": "choose_image_button_label", "text": { - "default": "Choose Image" + "default": "Choose Image", + "es": "Elige una imagen" }, "_row_num": 34 }, "launch_intent_button_label": { "string_token": "launch_intent_button_label", "text": { - "default": "Launch Intent" + "default": "Launch Intent", + "es": "Lanzamiento de intención" }, "_row_num": 35 }, "opening_survey_instance_detail": { "string_token": "opening_survey_instance_detail", "text": { - "default": "{{#if display_field}}\n

You are at the start of instance:

\n

\"{{display_field}}\"

\n {{else}}\n

You are at the start of a new instance.

\n {{/if}}\n
\n {{#if last_save_date}}\n

Last saved:

\n

{{last_save_date}}

\n {{/if}}\n
" + "default": "{{#if display_field}}\n

You are at the start of instance:

\n

\"{{display_field}}\"

\n {{else}}\n

You are at the start of a new instance.

\n {{/if}}\n
\n {{#if last_save_date}}\n

Last saved:

\n

{{last_save_date}}

\n {{/if}}\n
", + "es": "{{#if display_field}}\n

estás en el inicio de la instancia:

\n

\"{{display_field}}\"

\n {{else}}\n

estás en el inicio de una nueva instancia.

\n {{/if}}\n
\n {{#if last_save_date}}\n

guardado por última vez:

\n

{{last_save_date}}

\n {{/if}}\n
" }, "_row_num": 36 }, "opening_survey_next_button_label": { "string_token": "opening_survey_next_button_label", "text": { - "default": "Go to next prompt" + "default": "Go to next prompt", + "es": "Ir al siguiente" }, "_row_num": 37 }, "options_popup_language_heading": { "string_token": "options_popup_language_heading", "text": { - "default": "Language" + "default": "Language", + "es": "Idioma" }, "_row_num": 38 }, "options_popup_contents_heading": { "string_token": "options_popup_contents_heading", "text": { - "default": "Contents" + "default": "Contents", + "es": "Contenido" }, "_row_num": 39 }, "options_popup_ignore_changes_heading": { "string_token": "options_popup_ignore_changes_heading", "text": { - "default": "Ignore Changes + Exit" + "default": "Ignore Changes + Exit", + "es": "Ignorar cambios y salir" }, "_row_num": 40 }, "options_popup_save_changes_heading": { "string_token": "options_popup_save_changes_heading", "text": { - "default": "Save Changes + Exit" + "default": "Save Changes + Exit", + "es": "Guardar cambios y salir" }, "_row_num": 41 }, "options_popup_finalize_changes_heading": { "string_token": "options_popup_finalize_changes_heading", "text": { - "default": "Finalize Changes + Exit" + "default": "Finalize Changes + Exit", + "es": "Finalizar cambios y salir" }, "_row_num": 42 }, "screen_popup_ok_button_label": { "string_token": "screen_popup_ok_button_label", "text": { - "default": "OK" + "default": "OK", + "es": "Confirmar" }, "_row_num": 43 }, "select_with_other_other_label": { "string_token": "select_with_other_other_label", "text": { - "default": "Other:" + "default": "Other:", + "es": "Otro:" }, "_row_num": 44 }, @@ -984,93 +1148,130 @@ "string_token": "select_deselect_label", "text": { "default": "Deselect", - "hi": "अचयनित" + "hi": "अचयनित", + "es": "Deseleccioanr" }, "_row_num": 45 }, "take_signature_button_label": { "string_token": "take_signature_button_label", "text": { - "default": "Get Signature" + "default": "Get Signature", + "es": "Obtener firma" }, "_row_num": 46 }, "instances_survey_create_button_label": { "string_token": "instances_survey_create_button_label", "text": { - "default": "Create new instance" + "default": "Create new instance", + "es": "Crear nueva instancia" }, "_row_num": 47 }, "instances_no_saved_instances_label": { "string_token": "instances_no_saved_instances_label", "text": { - "default": "No saved instances." + "default": "No saved instances.", + "es": "Instancias no guardadas" }, "_row_num": 48 }, "instances_last_save_date_label": { "string_token": "instances_last_save_date_label", "text": { - "default": "

Last Save Date:

" + "default": "

Last Save Date:

", + "es": "

Última fecha guardada:

" }, "_row_num": 49 }, "instances_previously_created_instances_label": { "string_token": "instances_previously_created_instances_label", "text": { - "default": "

Previously created instances:

" + "default": "

Previously created instances:

", + "es": "

Instancias creadas previamente:

" }, "_row_num": 50 }, "savepoint_type_finalized_text_label": { "string_token": "savepoint_type_finalized_text_label", "text": { - "default": "Finalized" + "default": "Finalized", + "es": "Finalizado" }, "_row_num": 51 }, "savepoint_type_incomplete_text_label": { "string_token": "savepoint_type_incomplete_text_label", "text": { - "default": "Incomplete" + "default": "Incomplete", + "es": "Incompleto" }, "_row_num": 52 }, "savepoint_type_checkpoint_text_label": { "string_token": "savepoint_type_checkpoint_text_label", "text": { - "default": "Checkpoint" + "default": "Checkpoint", + "es": "Cambios no guardados" }, "_row_num": 53 }, "linked_table_new_instance_label": { "string_token": "linked_table_new_instance_label", "text": { - "default": "Create new instance" + "default": "Create new instance", + "es": "Crear nueva instancia" }, "_row_num": 54 }, "barcode_button_label": { "string_token": "barcode_button_label", "text": { - "default": "Scan Barcode" + "default": "Scan Barcode", + "es": "Escanear Código de Barras" }, "_row_num": 55 }, "invalid_numeric_message": { "string_token": "invalid_numeric_message", "text": { - "default": "Numeric value expected" + "default": "Numeric value expected", + "es": "Valor numérico esperado" }, "_row_num": 56 }, "invalid_integer_message": { "string_token": "invalid_integer_message", "text": { - "default": "Integer value expected" + "default": "Integer value expected", + "es": "Valor entero esperado" }, "_row_num": 57 + }, + "confirm_exit_label": { + "string_token": "confirm_exit_label", + "text": { + "default": "Exit", + "es": "Salir" + }, + "_row_num": 58 + }, + "confirm_cancel_label": { + "string_token": "confirm_cancel_label", + "text": { + "default": "Cancel", + "es": "Cancelar" + }, + "_row_num": 59 + }, + "confirm_message": { + "string_token": "confirm_message", + "text": { + "default": "Are you sure you want to exit and lose all changes?", + "es": "¿Estás seguro de que quieres salir y perder todos los cambios?" + }, + "_row_num": 60 } } }, @@ -1086,6 +1287,7 @@ "text": { "en": "English", "hi": "अंग्रेज़ी", + "es": "Inglés", "default": "English" } } @@ -1099,12 +1301,27 @@ "text": { "en": "Hindi", "hi": "हिंदी", + "es": "Hindi", "default": "Hindi" } } }, "_row_num": 8, "name": "hi" + }, + { + "display": { + "locale": { + "text": { + "en": "Spanish", + "hi": "स्पेनिश", + "es": "Español", + "default": "Spanish" + } + } + }, + "_row_num": 9, + "name": "es" } ] }, @@ -1144,6 +1361,7 @@ "text": { "en": "Common Javascript Framework", "hi": "सामान्य जावास्क्रिप्ट फ़्रेमवर्क", + "es": "Marco común de Javascript", "default": "Common Javascript Framework" } } @@ -1408,7 +1626,7 @@ "_aspect": "default", "_key": "displayName", "_type": "object", - "_value": "{\"text\":{\"en\":\"Common Javascript Framework\",\"hi\":\"सामान्य जावास्क्रिप्ट फ़्रेमवर्क\",\"default\":\"Common Javascript Framework\"}}" + "_value": "{\"text\":{\"en\":\"Common Javascript Framework\",\"hi\":\"सामान्य जावास्क्रिप्ट फ़्रेमवर्क\",\"es\":\"Marco común de Javascript\",\"default\":\"Common Javascript Framework\"}}" } ] } diff --git a/app/config/assets/framework/forms/framework.clean/framework.xlsx b/app/config/assets/framework/forms/framework.clean/framework.xlsx index 2d49aff792b71a6a0c05c0817d11df20bd328b7d..4916d337648a7eacb0649e4d47292a957eafe082 100644 GIT binary patch delta 14826 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 B!!ZB= delta 12436 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
ODK Survey

Form name: {{localizeText form_title}}

{{#if form_version}}

Form version: {{form_version}}

{{/if}}
" + "default": "
ODK Survey

Form name: {{localizeText form_title}}

{{#if form_version}}

Form version: {{form_version}}

{{/if}}
", + "es": "
ODK Survey

Nombre del Formulario: {{localizeText form_title}}

{{#if form_version}}

Version de Formulario: {{form_version}}

{{/if}}
" }, "_row_num": 28 }, "finalize_survey_instance_detail": { "string_token": "finalize_survey_instance_detail", "text": { - "default": "

You are at the end of instance:

\"{{display_field}}\"


" + "default": "

You are at the end of instance:

\"{{display_field}}\"


", + "es": "

Está en el final de la instancia:

\"{{display_field}}\"


" }, "_row_num": 29 }, "finalize_survey_button_label": { "string_token": "finalize_survey_button_label", "text": { - "default": "Finalize" + "default": "Finalize", + "es": "Finalizar" }, "_row_num": 30 }, "save_as_incomplete_survey_button_label": { "string_token": "save_as_incomplete_survey_button_label", "text": { - "default": "Incomplete" + "default": "Incomplete", + "es": "Incompleto" }, "_row_num": 31 }, "take_image_button_label": { "string_token": "take_image_button_label", "text": { - "default": "Take Photo" + "default": "Take Photo", + "es": "Tomé una foto" }, "_row_num": 33 }, "choose_image_button_label": { "string_token": "choose_image_button_label", "text": { - "default": "Choose Image" + "default": "Choose Image", + "es": "Elige una imagen" }, "_row_num": 34 }, "launch_intent_button_label": { "string_token": "launch_intent_button_label", "text": { - "default": "Launch Intent" + "default": "Launch Intent", + "es": "Lanzamiento de intención" }, "_row_num": 35 }, "opening_survey_instance_detail": { "string_token": "opening_survey_instance_detail", "text": { - "default": "{{#if display_field}}\n

You are at the start of instance:

\n

\"{{display_field}}\"

\n {{else}}\n

You are at the start of a new instance.

\n {{/if}}\n
\n {{#if last_save_date}}\n

Last saved:

\n

{{last_save_date}}

\n {{/if}}\n
" + "default": "{{#if display_field}}\n

You are at the start of instance:

\n

\"{{display_field}}\"

\n {{else}}\n

You are at the start of a new instance.

\n {{/if}}\n
\n {{#if last_save_date}}\n

Last saved:

\n

{{last_save_date}}

\n {{/if}}\n
", + "es": "{{#if display_field}}\n

estás en el inicio de la instancia:

\n

\"{{display_field}}\"

\n {{else}}\n

estás en el inicio de una nueva instancia.

\n {{/if}}\n
\n {{#if last_save_date}}\n

guardado por última vez:

\n

{{last_save_date}}

\n {{/if}}\n
" }, "_row_num": 36 }, "opening_survey_next_button_label": { "string_token": "opening_survey_next_button_label", "text": { - "default": "Go to next prompt" + "default": "Go to next prompt", + "es": "Ir al siguiente" }, "_row_num": 37 }, "options_popup_language_heading": { "string_token": "options_popup_language_heading", "text": { - "default": "Language" + "default": "Language", + "es": "Idioma" }, "_row_num": 38 }, "options_popup_contents_heading": { "string_token": "options_popup_contents_heading", "text": { - "default": "Contents" + "default": "Contents", + "es": "Contenido" }, "_row_num": 39 }, "options_popup_ignore_changes_heading": { "string_token": "options_popup_ignore_changes_heading", "text": { - "default": "Ignore Changes + Exit" + "default": "Ignore Changes + Exit", + "es": "Ignorar cambios y salir" }, "_row_num": 40 }, "options_popup_save_changes_heading": { "string_token": "options_popup_save_changes_heading", "text": { - "default": "Save Changes + Exit" + "default": "Save Changes + Exit", + "es": "Guardar cambios y salir" }, "_row_num": 41 }, "options_popup_finalize_changes_heading": { "string_token": "options_popup_finalize_changes_heading", "text": { - "default": "Finalize Changes + Exit" + "default": "Finalize Changes + Exit", + "es": "Finalizar cambios y salir" }, "_row_num": 42 }, "screen_popup_ok_button_label": { "string_token": "screen_popup_ok_button_label", "text": { - "default": "OK" + "default": "OK", + "es": "Confirmar" }, "_row_num": 43 }, "select_with_other_other_label": { "string_token": "select_with_other_other_label", "text": { - "default": "Other:" + "default": "Other:", + "es": "Otro:" }, "_row_num": 44 }, @@ -302,93 +344,130 @@ window.odkFrameworkDefinitions = { "string_token": "select_deselect_label", "text": { "default": "Deselect", - "hindi": "अचयनित" + "hi": "अचयनित", + "es": "Deseleccioanr" }, "_row_num": 45 }, "take_signature_button_label": { "string_token": "take_signature_button_label", "text": { - "default": "Get Signature" + "default": "Get Signature", + "es": "Obtener firma" }, "_row_num": 46 }, "instances_survey_create_button_label": { "string_token": "instances_survey_create_button_label", "text": { - "default": "Create new instance" + "default": "Create new instance", + "es": "Crear nueva instancia" }, "_row_num": 47 }, "instances_no_saved_instances_label": { "string_token": "instances_no_saved_instances_label", "text": { - "default": "No saved instances." + "default": "No saved instances.", + "es": "Instancias no guardadas" }, "_row_num": 48 }, "instances_last_save_date_label": { "string_token": "instances_last_save_date_label", "text": { - "default": "

Last Save Date:

" + "default": "

Last Save Date:

", + "es": "

Última fecha guardada:

" }, "_row_num": 49 }, "instances_previously_created_instances_label": { "string_token": "instances_previously_created_instances_label", "text": { - "default": "

Previously created instances:

" + "default": "

Previously created instances:

", + "es": "

Instancias creadas previamente:

" }, "_row_num": 50 }, "savepoint_type_finalized_text_label": { "string_token": "savepoint_type_finalized_text_label", "text": { - "default": "Finalized" + "default": "Finalized", + "es": "Finalizado" }, "_row_num": 51 }, "savepoint_type_incomplete_text_label": { "string_token": "savepoint_type_incomplete_text_label", "text": { - "default": "Incomplete" + "default": "Incomplete", + "es": "Incompleto" }, "_row_num": 52 }, "savepoint_type_checkpoint_text_label": { "string_token": "savepoint_type_checkpoint_text_label", "text": { - "default": "Checkpoint" + "default": "Checkpoint", + "es": "Cambios no guardados" }, "_row_num": 53 }, "linked_table_new_instance_label": { "string_token": "linked_table_new_instance_label", "text": { - "default": "Create new instance" + "default": "Create new instance", + "es": "Crear nueva instancia" }, "_row_num": 54 }, "barcode_button_label": { "string_token": "barcode_button_label", "text": { - "default": "Scan Barcode" + "default": "Scan Barcode", + "es": "Escanear Código de Barras" }, "_row_num": 55 }, "invalid_numeric_message": { "string_token": "invalid_numeric_message", "text": { - "default": "Numeric value expected" + "default": "Numeric value expected", + "es": "Valor numérico esperado" }, "_row_num": 56 }, "invalid_integer_message": { "string_token": "invalid_integer_message", "text": { - "default": "Integer value expected" + "default": "Integer value expected", + "es": "Valor entero esperado" }, "_row_num": 57 + }, + "confirm_exit_label": { + "string_token": "confirm_exit_label", + "text": { + "default": "Exit", + "es": "Salir" + }, + "_row_num": 58 + }, + "confirm_cancel_label": { + "string_token": "confirm_cancel_label", + "text": { + "default": "Cancel", + "es": "Cancelar" + }, + "_row_num": 59 + }, + "confirm_message": { + "string_token": "confirm_message", + "text": { + "default": "Are you sure you want to exit and lose all changes?", + "es": "¿Estás seguro de que quieres salir y perder todos los cambios?" + }, + "_row_num": 60 } } } \ No newline at end of file diff --git a/app/config/assets/index.clean.html b/app/config/assets/index.clean.html index 1d5576b1e..f5f1e7ec6 100644 --- a/app/config/assets/index.clean.html +++ b/app/config/assets/index.clean.html @@ -13,19 +13,5 @@
Replace this config/assets/index.html with your own.
- -
- From 5c63b90d3baa4206b0bd4e4f8cd62399fb78f6aa Mon Sep 17 00:00:00 2001 From: clarlars Date: Tue, 30 Jul 2019 16:12:44 -0700 Subject: [PATCH 2/2] Change command from clean to empty to prevent task name collision --- Gruntfile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index c45f2f609..e198805fc 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2090,8 +2090,8 @@ var zipAllFiles = function( destZipFile, filesList, completionFn ) { }; grunt.registerTask( - 'clean', - 'Remove unnecessry files to make a clean app-designer', + 'empty', + 'Remove unnecessary files to make an empty app-designer', function() { deleteTopLevel(grunt, tablesConfig.tablesDir);