diff --git a/gruntfile.js b/gruntfile.js index efa55746..9817b75e 100755 --- a/gruntfile.js +++ b/gruntfile.js @@ -291,7 +291,14 @@ module.exports = function(grunt) { target: { src: ['./scripts/setup.js'] } - } + }, + i18nlint: { + options: { + templateDelimiters: ['{', '}'], + ignoreTags: ['head', 'script', 'style', '{%'] + }, + src: watchFiles.clientViews.concat(watchFiles.serverViews) + }, }); grunt.event.on('coverage', function(lcov, done){ @@ -335,7 +342,7 @@ module.exports = function(grunt) { grunt.registerTask('secure', ['env:secure', 'lint', 'html2js:main', 'html2js:forms', 'concurrent:default']); // Lint task(s). - grunt.registerTask('lint', ['jshint', 'csslint']); + grunt.registerTask('lint', ['jshint', 'csslint', 'i18nlint']); grunt.registerTask('lint:tests', ['jshint:allTests']); // Build task(s). diff --git a/package.json b/package.json index 634c55a7..d3bc262a 100644 --- a/package.json +++ b/package.json @@ -87,14 +87,15 @@ "grunt-contrib-concat": "^1.0.1", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-uglify": "^0.11.1", + "grunt-contrib-watch": "~0.6.1", "grunt-execute": "^0.2.2", + "grunt-i18nlint": "github:jwarby/grunt-i18nlint", + "grunt-karma": "~0.12.1", "grunt-mocha-istanbul": "^3.0.1", "grunt-mocha-test": "~0.12.1", - "grunt-contrib-watch": "~0.6.1", "grunt-newer": "~1.1.1", - "grunt-usemin": "^3.1.1", - "grunt-karma": "~0.12.1", "grunt-nodemon": "~0.4.0", + "grunt-usemin": "^3.1.1", "grunt-wiredep": "^3.0.1", "istanbul": "^0.4.0", "jasmine-core": "^2.4.1", diff --git a/public/form_modules/forms/base/config/i18n/english.js b/public/form_modules/forms/base/config/i18n/english.js index 6d670c03..fe12abaf 100644 --- a/public/form_modules/forms/base/config/i18n/english.js +++ b/public/form_modules/forms/base/config/i18n/english.js @@ -2,7 +2,7 @@ angular.module('view-form').config(['$translateProvider', function ($translateProvider) { - $translateProvider.translations('english', { + $translateProvider.translations('en', { FORM_SUCCESS: 'Form entry successfully submitted!', REVIEW: 'Review', BACK_TO_FORM: 'Go back to Form', @@ -28,10 +28,22 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr CANCEL: 'Cancel', SUBMIT: 'Submit', UPLOAD_FILE: 'Upload your File', + Y: 'Y', + N: 'N', + OPTION_PLACEHOLDER: 'Type or select an option', + ADD_NEW_LINE_INSTR: 'Press SHIFT+ENTER to add a newline', + ERROR: 'Error', + + FORM_404_HEADER: '404 - Form Does Not Exist', + FORM_404_BODY: 'The form you are trying to access does not exist. Sorry about that!', + + FORM_UNAUTHORIZED_HEADER: 'Not Authorized to Access Form', + FORM_UNAUTHORIZED_BODY1: 'The form you are trying to access is currently private and not accesible publically.', + FORM_UNAUTHORIZED_BODY2: 'If you are the owner of the form, you can set it to "Public" in the "Configuration" panel in the form admin.', }); - $translateProvider.preferredLanguage('english') - .fallbackLanguage('english') + $translateProvider.preferredLanguage('en') + .fallbackLanguage('en') .useSanitizeValueStrategy('escape'); }]); diff --git a/public/form_modules/forms/base/config/i18n/french.js b/public/form_modules/forms/base/config/i18n/french.js index ebefc7e5..c544ea1f 100644 --- a/public/form_modules/forms/base/config/i18n/french.js +++ b/public/form_modules/forms/base/config/i18n/french.js @@ -2,7 +2,7 @@ angular.module('view-form').config(['$translateProvider', function ($translateProvider) { - $translateProvider.translations('french', { + $translateProvider.translations('fr', { FORM_SUCCESS: 'Votre formulaire a été enregistré!', REVIEW: 'Incomplet', BACK_TO_FORM: 'Retourner au formulaire', @@ -30,6 +30,16 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr UPLOAD_FILE: 'Envoyer un fichier', Y: 'O', N: 'N', + OPTION_PLACEHOLDER: 'Tapez ou sélectionnez une option', + ADD_NEW_LINE_INSTR: 'Appuyez sur MAJ + ENTRÉE pour ajouter une nouvelle ligne', + ERROR: 'Erreur', + + FORM_404_HEADER: '404 - Le formulaire n\'existe pas', + FORM_404_BODY: 'Le formulaire auquel vous essayez d\'accéder n\'existe pas. Désolé pour ça!', + + FORM_UNAUTHORIZED_HEADER: 'Non autorisé à accéder au formulaire', +   FORM_UNAUTHORIZED_BODY1: 'Le formulaire auquel vous essayez d\'accéder est actuellement privé et inaccessible publiquement.', +   FORM_UNAUTHORIZED_BODY2: 'Si vous êtes le propriétaire du formulaire, vous pouvez le définir sur "Public" dans le panneau "Configuration" du formulaire admin.', }); }]); diff --git a/public/form_modules/forms/base/config/i18n/german.js b/public/form_modules/forms/base/config/i18n/german.js index 24be68b7..df335ce5 100644 --- a/public/form_modules/forms/base/config/i18n/german.js +++ b/public/form_modules/forms/base/config/i18n/german.js @@ -2,12 +2,12 @@ angular.module('view-form').config(['$translateProvider', function ($translateProvider) { - $translateProvider.translations('german', { + $translateProvider.translations('de', { FORM_SUCCESS: 'Ihre Angaben wurden gespeichert.', REVIEW: 'Unvollständig', BACK_TO_FORM: 'Zurück zum Formular', - EDIT_FORM: '', - CREATE_FORM: '', + EDIT_FORM: 'Bearbeiten Sie diese TellForm', + CREATE_FORM: 'Dieses TellForm erstellen', ADVANCEMENT: '{{done}} von {{total}} beantwortet', CONTINUE_FORM: 'Zum Formular', REQUIRED: 'verpflichtend', @@ -30,6 +30,16 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr UPLOAD_FILE: 'Datei versenden', Y: 'J', N: 'N', + OPTION_PLACEHOLDER: 'Geben oder wählen Sie eine Option aus', + ADD_NEW_LINE_INSTR: 'Drücken Sie UMSCHALT + EINGABETASTE, um eine neue Zeile hinzuzufügen', + ERROR: 'Fehler', + + FORM_404_HEADER: '404 - Formular existiert nicht', + FORM_404_BODY: 'Das Formular, auf das Sie zugreifen möchten, existiert nicht. Das tut mir leid!', + + FORM_UNAUTHORIZED_HEADER: 'Nicht zum Zugriffsformular berechtigt\' ', +   FORM_UNAUTHORIZED_BODY1: 'Das Formular, auf das Sie zugreifen möchten, ist derzeit privat und nicht öffentlich zugänglich.', +   FORM_UNAUTHORIZED_BODY2: 'Wenn Sie der Eigentümer des Formulars sind, können Sie es im Fenster "Konfiguration" im Formular admin auf "Öffentlich" setzen.', }); }]); diff --git a/public/form_modules/forms/base/config/i18n/italian.js b/public/form_modules/forms/base/config/i18n/italian.js index 06cddc67..62058a2e 100644 --- a/public/form_modules/forms/base/config/i18n/italian.js +++ b/public/form_modules/forms/base/config/i18n/italian.js @@ -2,12 +2,12 @@ angular.module('view-form').config(['$translateProvider', function ($translateProvider) { - $translateProvider.translations('italian', { + $translateProvider.translations('it', { FORM_SUCCESS: 'Il formulario è stato inviato con successo!', REVIEW: 'Incompleto', BACK_TO_FORM: 'Ritorna al formulario', - EDIT_FORM: '', - CREATE_FORM: '', + EDIT_FORM: 'Modifica questo TellForm', + CREATE_FORM: 'Crea questo TellForm', ADVANCEMENT: '{{done}} su {{total}} completate', CONTINUE_FORM: 'Vai al formulario', REQUIRED: 'obbligatorio', @@ -30,6 +30,16 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr UPLOAD_FILE: 'Invia un file', Y: 'S', N: 'N', + OPTION_PLACEHOLDER: 'Digitare o selezionare un\'opzione', + ADD_NEW_LINE_INSTR: 'Premere SHIFT + INVIO per aggiungere una nuova riga', + ERROR: 'Errore', + + FORM_404_HEADER: '404 - Il modulo non esiste', + FORM_404_BODY: 'La forma che stai cercando di accedere non esiste. Ci dispiace!', + + FORM_UNAUTHORIZED_HEADER: 'Non autorizzato per accedere al modulo', +   FORM_UNAUTHORIZED_BODY1: 'Il modulo che si sta tentando di accedere è attualmente privato e non accessibile in pubblico.', +   FORM_UNAUTHORIZED_BODY2: 'Se sei il proprietario del modulo, puoi impostarlo su "Pubblico" nel pannello "Configurazione" nell\'amministratore di moduli.', }); }]); diff --git a/public/form_modules/forms/base/config/i18n/spanish.js b/public/form_modules/forms/base/config/i18n/spanish.js index 90564938..86861eb3 100644 --- a/public/form_modules/forms/base/config/i18n/spanish.js +++ b/public/form_modules/forms/base/config/i18n/spanish.js @@ -2,34 +2,44 @@ angular.module('view-form').config(['$translateProvider', function ($translateProvider) { - $translateProvider.translations('spanish', { - FORM_SUCCESS: '¡El formulario ha sido enviado con éxito!', - REVIEW: 'Revisar', - BACK_TO_FORM: 'Regresar al formulario', - EDIT_FORM: '', - CREATE_FORM: '', - ADVANCEMENT: '{{done}} de {{total}} contestadas', - CONTINUE_FORM: 'Continuar al formulario', - REQUIRED: 'Información requerida', - COMPLETING_NEEDED: '{{answers_not_completed}} respuesta(s) necesita(n) ser completada(s)', - OPTIONAL: 'Opcional', - ERROR_EMAIL_INVALID: 'Favor de proporcionar un correo electrónico válido', - ERROR_NOT_A_NUMBER: 'Por favor, introduzca sólo números válidos', - ERROR_URL_INVALID: 'Favor de proporcionar un url válido', - OK: 'OK', - ENTER: 'pulse INTRO', - YES: 'Si', - NO: 'No', - NEWLINE: 'presione SHIFT+INTRO para crear una nueva línea', - CONTINUE: 'Continuar', - LEGAL_ACCEPT: 'Yo acepto', - LEGAL_NO_ACCEPT: 'Yo no acepto', - DELETE: 'Eliminar', - CANCEL: 'Cancelar', - SUBMIT: 'Registrar', - UPLOAD_FILE: 'Cargar el archivo', - Y: 'S', - N: 'N' - }); + $translateProvider.translations('es', { + FORM_SUCCESS: '¡El formulario ha sido enviado con éxito!', + REVIEW: 'Revisar', + BACK_TO_FORM: 'Regresar al formulario', + EDIT_FORM: 'Editar este TellForm', + CREATE_FORM: 'Crear este TellForm', + ADVANCEMENT: '{{done}} de {{total}} contestadas', + CONTINUE_FORM: 'Continuar al formulario', + REQUIRED: 'Información requerida', + COMPLETING_NEEDED: '{{answers_not_completed}} respuesta(s) necesita(n) ser completada(s)', + OPTIONAL: 'Opcional', + ERROR_EMAIL_INVALID: 'Favor de proporcionar un correo electrónico válido', + ERROR_NOT_A_NUMBER: 'Por favor, introduzca sólo números válidos', + ERROR_URL_INVALID: 'Favor de proporcionar un url válido', + OK: 'OK', + ENTER: 'pulse INTRO', + YES: 'Si', + NO: 'No', + NEWLINE: 'presione SHIFT+INTRO para crear una nueva línea', + CONTINUE: 'Continuar', + LEGAL_ACCEPT: 'Yo acepto', + LEGAL_NO_ACCEPT: 'Yo no acepto', + DELETE: 'Eliminar', + CANCEL: 'Cancelar', + SUBMIT: 'Registrar', + UPLOAD_FILE: 'Cargar el archivo', + Y: 'S', + N: 'N', + OPTION_PLACEHOLDER: 'Escriba o seleccione una opción', + ADD_NEW_LINE_INSTR: 'Presione MAYÚS + ENTRAR para agregar una nueva línea', + ERROR: 'Error', + + FORM_404_HEADER: '404 - La forma no existe', + FORM_404_BODY: 'El formulario al que intenta acceder no existe. ¡Lo siento por eso!', + + FORM_UNAUTHORIZED_HEADER: 'Non autorizzato per accedere al modulo', +   FORM_UNAUTHORIZED_BODY1: 'Il modulo che si sta tentando di accedere è attualmente privato e non accessibile in pubblico.', +   FORM_UNAUTHORIZED_BODY2: 'Se sei il proprietario del modulo, puoi impostarlo su "Pubblico" nel pannello "Configurazione" nell\'amministratore di moduli.', + }); }]); diff --git a/public/form_modules/forms/base/views/directiveViews/field/dropdown.html b/public/form_modules/forms/base/views/directiveViews/field/dropdown.html index 913fc5cc..21151b22 100755 --- a/public/form_modules/forms/base/views/directiveViews/field/dropdown.html +++ b/public/form_modules/forms/base/views/directiveViews/field/dropdown.html @@ -24,7 +24,7 @@ on-tab-and-shift-key="prevField()" on-tab-key="nextField()" ng-change="nextField()"> - + diff --git a/public/form_modules/forms/base/views/directiveViews/field/legal.html b/public/form_modules/forms/base/views/directiveViews/field/legal.html index e9412411..fc20be68 100644 --- a/public/form_modules/forms/base/views/directiveViews/field/legal.html +++ b/public/form_modules/forms/base/views/directiveViews/field/legal.html @@ -29,7 +29,7 @@ ng-required="field.required" ng-change="nextField()"/>
- Y + {{ 'Y' | translate }}
{{ 'LEGAL_ACCEPT' | translate }} @@ -43,7 +43,7 @@ ng-required="field.required" ng-change="nextField()"/>
- N + {{ 'N' | translate }}
{{ 'LEGAL_NO_ACCEPT' | translate }} diff --git a/public/form_modules/forms/base/views/directiveViews/field/textarea.html b/public/form_modules/forms/base/views/directiveViews/field/textarea.html index feaec4c4..b4aa3d31 100755 --- a/public/form_modules/forms/base/views/directiveViews/field/textarea.html +++ b/public/form_modules/forms/base/views/directiveViews/field/textarea.html @@ -14,7 +14,9 @@

- Press SHIFT+ENTER to add a newline + + {{ 'ADD_NEW_LINE_INSTR' | translate }} +