fixed all translations on frontend

This commit is contained in:
David Baldwynn 2017-10-27 12:52:39 -07:00
parent e6685154dd
commit 62a34f9ab6
26 changed files with 142 additions and 91 deletions

View File

@ -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).

View File

@ -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",

View File

@ -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');
}]);

View File

@ -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.',
});
}]);

View File

@ -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.',
});
}]);

View File

@ -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.',
});
}]);

View File

@ -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.',
});
}]);

View File

@ -24,7 +24,7 @@
on-tab-and-shift-key="prevField()"
on-tab-key="nextField()"
ng-change="nextField()">
<ui-select-match placeholder="Type or select an option">
<ui-select-match placeholder="{{ 'OPTION_PLACEHOLDER' | translate }}">
</ui-select-match>
<ui-select-choices repeat="option in field.fieldOptions | filter: $select.search"
ng-class="{'active': option.option_value === field.fieldValue }">

View File

@ -29,7 +29,7 @@
ng-required="field.required"
ng-change="nextField()"/>
<div class="letter" style="float:left">
Y
{{ 'Y' | translate }}
</div>
<span>{{ 'LEGAL_ACCEPT' | translate }}</span>
</label>
@ -43,7 +43,7 @@
ng-required="field.required"
ng-change="nextField()"/>
<div class="letter" style="float:left">
N
{{ 'N' | translate }}
</div>
<span>{{ 'LEGAL_NO_ACCEPT' | translate }}</span>
</label>

View File

@ -14,7 +14,9 @@
</p>
</div>
<div class="col-xs-12 field-input">
<small style="font-size:0.6em;">Press SHIFT+ENTER to add a newline</small>
<small style="font-size:0.6em;">
{{ 'ADD_NEW_LINE_INSTR' | translate }}
</small>
<textarea class="textarea focusOn" type="text"
ng-focus="setActiveField(field._id, null, false)"
ng-model="field.fieldValue"

View File

@ -38,7 +38,7 @@
<div class="col-xs-12">
<div ng-show="forms.myForm.{{field.fieldType}}{{index}}.$invalid && !!forms.myForm.{{field.fieldType}}{{index}}.$viewValue " class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Error:</span>
<span class="sr-only">{{ 'ERROR' | translate }}:</span>
<span ng-if="field.fieldType == 'email'"> {{ 'ERROR_EMAIL_INVALID' | translate }} </span>
<span ng-if="field.fieldType == 'number'"> {{ 'ERROR_NOT_A_NUMBER' | translate }} </span>
<span ng-if="field.fieldType == 'link'"> {{ 'ERROR_URL_INVALID' | translate }} </span>

View File

@ -3,10 +3,12 @@ $(".loader").fadeOut("slow");
</script>
<section class="public-form auth sigin-view valign-wrapper">
<div class="row valign">
<h3 class="col-md-12 text-center">404 - Form Does not Exist </h3>
<h3 class="col-md-12 text-center">
{{ 'FORM_404_HEADER' | translate }}
</h3>
<div class="col-md-4 col-md-offset-4">
<div class="col-md-12 text-center" style="padding-bottom: 50px;">
The form you are trying to access does not exist. Sorry about that!
{{ 'FORM_404_BODY' | translate }}
</div>
</div>
</section>

View File

@ -3,10 +3,13 @@ $(".loader").fadeOut("slow");
</script>
<section class="public-form auth sigin-view valign-wrapper">
<div class="row valign">
<h3 class="col-md-12 text-center">Not Authorized to Access Form</h3>
<h3 class="col-md-12 text-center">
{{ 'FORM_UNAUTHORIZED_HEADER' | translate }}
</h3>
<div class="col-md-4 col-md-offset-4">
<div class="col-md-12 text-center" style="padding-bottom: 50px;">
The form you are trying to access is currently private and not accesible publically. <br> If you are the owner of the form, you can set it to "Public" in the "Configuration" panel in the form admin.
{{ 'FORM_UNAUTHORIZED_BODY1' | translate }} <br>
{{ 'FORM_UNAUTHORIZED_BODY2' | translate }}
</div>
</div>
</div>

View File

@ -8,9 +8,9 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
SIGNIN_TAB: 'Sign In',
SIGNOUT_TAB: 'Signout',
EDIT_PROFILE: 'Edit Profile',
MY_FORMS: 'My Forms',
MY_SETTINGS: 'My Settings',
CHANGE_PASSWORD: 'Change Password'
CHANGE_PASSWORD: 'Change Password',
TOGGLE_NAVIGATION: 'Toggle navigation'
});
$translateProvider.preferredLanguage('en')

View File

@ -8,8 +8,8 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
SIGNIN_TAB: 'Connexion',
SIGNOUT_TAB: 'Créer un compte',
EDIT_PROFILE: 'Modifier Mon Profil',
MY_FORMS: 'Mes Formulaires',
MY_SETTINGS: 'Mes Paramètres',
CHANGE_PASSWORD: 'Changer mon Mot de Pass'
CHANGE_PASSWORD: 'Changer mon Mot de Pass',
TOGGLE_NAVIGATION: 'Basculer la navigation',
});
}]);

View File

@ -8,8 +8,8 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
SIGNIN_TAB: 'Anmeldung',
SIGNOUT_TAB: 'Abmelden',
EDIT_PROFILE: 'Profil bearbeiten',
MY_FORMS: 'Meine Formulare',
MY_SETTINGS: 'Meine Einstellungen',
CHANGE_PASSWORD: 'Passwort ändern'
CHANGE_PASSWORD: 'Passwort ändern',
TOGGLE_NAVIGATION: 'Navigation umschalten'
});
}]);

View File

@ -8,8 +8,8 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
SIGNIN_TAB: 'Accedi',
SIGNOUT_TAB: 'Esci',
EDIT_PROFILE: 'Modifica Profilo',
MY_FORMS: 'Mie Forme',
MY_SETTINGS: 'Mie Impostazioni',
CHANGE_PASSWORD: 'Cambia la password'
CHANGE_PASSWORD: 'Cambia la password',
TOGGLE_NAVIGATION: 'Attiva la navigazione'
});
}]);

View File

@ -8,9 +8,9 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
SIGNIN_TAB: 'Entrar',
SIGNOUT_TAB: 'Salir',
EDIT_PROFILE: 'Editar Perfil',
MY_FORMS: 'Mis formularios',
MY_SETTINGS: 'Mis configuraciones',
CHANGE_PASSWORD: 'Cambiar contraseña'
CHANGE_PASSWORD: 'Cambiar contraseña',
TOGGLE_NAVIGATION: 'Navegación de palanca'
});
}]);

View File

@ -2,7 +2,7 @@
<div class="container" >
<div class="navbar-header">
<button class="navbar-toggle" type="button" data-ng-click="toggleCollapsibleMenu()">
<span class="sr-only">Toggle navigation</span>
<span class="sr-only">{{ 'TOGGLE_NAVIGATION' | translate }}</span>
<span>{{ 'MENU_BTN' | translate }}</span>
</button>
<a href="/#!/" class="navbar-brand">

View File

@ -64,7 +64,8 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
CONTINUE_TO_LOGIN: 'Continue to login page',
VERIFY_SUCCESS: 'Account successfully activated',
VERIFY_ERROR: 'Verification link is invalid or has expired'
VERIFY_ERROR: 'Verification link is invalid or has expired',
ERROR: 'Error'
});
$translateProvider.preferredLanguage('en')

View File

@ -46,6 +46,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
VERIFY_SUCCESS: 'Votre compte est activé !',
VERIFY_ERROR: 'Le lien de vérification est invalide ou à expiré'
ERROR: 'Erreur'
});
}]);

View File

@ -64,6 +64,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
CONTINUE_TO_LOGIN: 'Weiter zur Anmeldeseite',
VERIFY_SUCCESS: 'Konto erfolgreich aktiviert',
VERIFY_ERROR: 'Überprüfungslink ist ungültig oder abgelaufen'
VERIFY_ERROR: 'Überprüfungslink ist ungültig oder abgelaufen',
ERROR: 'Fehler'
});
}]);

View File

@ -64,6 +64,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
CONTINUE_TO_LOGIN: 'Continua alla pagina di login',
VERIFY_SUCCESS: 'Account attivato correttamente',
VERIFY_ERROR: 'Il collegamento di verifica non è valido o è scaduto'
VERIFY_ERROR: 'Il collegamento di verifica non è valido o è scaduto',
ERROR: 'Errore'
});
}]);

View File

@ -64,6 +64,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
CONTINUE_TO_LOGIN: 'Ir a la página de ingreso',
VERIFY_SUCCESS: 'Cuenta activada exitosamente',
VERIFY_ERROR: 'El link de verificación es inválido o inexistente'
VERIFY_ERROR: 'El link de verificación es inválido o inexistente',
ERROR: 'Error'
});
}]);

View File

@ -1,25 +1,4 @@
<section class="auth sigin-view valign-wrapper" data-ng-controller="AuthenticationController">
<!--<h3 class="col-md-12 text-center">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3>-->
<!--
<div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link">
<img src="/modules/users/img/buttons/facebook.png">
</a>
<a href="/auth/twitter" class="undecorated-link">
<img src="/modules/users/img/buttons/twitter.png">
</a>
<a href="/auth/google" class="undecorated-link">
<img src="/modules/users/img/buttons/google.png">
</a>
<a href="/auth/linkedin" class="undecorated-link">
<img src="/modules/users/img/buttons/linkedin.png">
</a>
<a href="/auth/github" class="undecorated-link">
<img src="/modules/users/img/buttons/github.png">
</a>
</div>
-->
<!-- <h3 class="col-md-12 text-center">Or with your account</h3> -->
<div class="row valign">
<div class="col-md-4 col-md-offset-4">
@ -30,7 +9,7 @@
<form class="signin form-horizontal" autocomplete="off">
<fieldset>
<div data-ng-show="error" class="text-center text-danger">
Error: <strong data-ng-bind="error"></strong>
{{ 'ERROR' | translate }}: <strong data-ng-bind="error"></strong>
</div>
<div class="form-group">
<!--<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>-->

View File

@ -14,7 +14,7 @@
<button type="submit" class="btn btn-signup btn-rounded btn-block">{{ 'PASSWORD_RESTORE_HEADER' | translate }}</button>
</div>
<div data-ng-show="error" class="text-center">
<strong>Error: {{error}}</strong>
<strong>{{ 'ERROR' | translate }}: {{error}}</strong>
</div>
<div data-ng-show="success" class="text-center">
<strong>{{success}}</strong>