translate app + add french translation

This commit is contained in:
Sam 2016-05-05 16:00:58 +03:00
parent 864f75837a
commit 1efc0e2b6a
20 changed files with 190 additions and 103 deletions

View file

@ -1,8 +1,8 @@
'use strict';
// Configuring the Forms drop-down menus
angular.module('forms').filter('formValidity',
function(){
angular.module('forms')
.filter('formValidity', function(){
return function(formObj){
if(formObj && formObj.form_fields && formObj.visible_form_fields){

View file

@ -0,0 +1,32 @@
'use strict';
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
$translateProvider.translations('english', {
FORM_SUCCESS: 'Form entry successfully submitted!',
BACK_TO_FORM: 'Go back to Form',
EDIT_FORM: 'Edit this TellForm',
CREATE_FORM: 'Create this TellForm',
ADVANCEMENT: '{{done}} out of {{total}} answered',
CONTINUE_FORM: 'Continue to Form',
REQUIRED: 'required',
OPTIONAL: 'optional',
ERROR_EMAIL_INVALID: 'Please enter a valid email address',
ERROR_NOT_A_NUMBER: 'Please enter valid numbers only',
ERROR_URL_INVALID: 'Please a valid url',
OK: 'OK',
ENTER: 'press ENTER',
CONTINUE: 'Continue',
LEGAL_ACCEPT: 'I accept',
LEGAL_NO_ACCEPT: 'I dont accept',
DELETE: 'Delete',
CANCEL: 'Cancel',
UPLOAD_FILE: 'Upload your File'
});
$translateProvider.preferredLanguage('english')
.fallbackLanguage('english')
.useSanitizeValueStrategy('escape');
}]);

View file

@ -0,0 +1,27 @@
'use strict';
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
$translateProvider.translations('french', {
FORM_SUCCESS: 'Votre formulaire a été enregistré!',
BACK_TO_FORM: 'Retourner au formulaire',
EDIT_FORM: 'Éditer le Tellform',
CREATE_FORM: 'Créer un TellForm',
ADVANCEMENT: '{{done}} complétés sur {{total}}',
CONTINUE_FORM: 'Aller au formulaire',
REQUIRED: 'obligatoire',
OPTIONAL: 'facultatif',
ERROR_EMAIL_INVALID: 'Merci de rentrer une adresse mail valide',
ERROR_NOT_A_NUMBER: 'Merce de ne rentrer que des nombres',
ERROR_URL_INVALID: 'Merci de rentrer une url valide',
OK: 'OK',
ENTER: 'presser ENTRÉE',
CONTINUE: 'Continuer',
LEGAL_ACCEPT: 'Jaccepte',
LEGAL_NO_ACCEPT: 'Jen naccepte pas',
DELETE: 'Supprimer',
CANCEL: 'Réinitialiser',
UPLOAD_FILE: 'Envoyer des fichier'
});
}]);

View file

@ -1,10 +1,13 @@
'use strict';
// SubmitForm controller
angular.module('forms').controller('SubmitFormController', ['$scope', '$rootScope', '$state', 'myForm', 'Auth',
function($scope, $rootScope, $state, myForm, Auth) {
angular.module('forms').controller('SubmitFormController', [
'$scope', '$rootScope', '$state', '$translate', 'myForm', 'Auth',
function($scope, $rootScope, $state, $translate, myForm, Auth) {
$scope.authentication = Auth;
$scope.myform = myForm;
console.log(myForm);
$translate.use(myForm.language);
if(!$scope.myform.isLive){
// Show navbar if form is not public AND user IS loggedin
@ -19,6 +22,5 @@ angular.module('forms').controller('SubmitFormController', ['$scope', '$rootScop
}else{
$scope.hideNav = $rootScope.hideNav = true;
}
}
]);

View file

@ -1,5 +1,5 @@
angular.module('forms', ['duScroll', 'ngResource', 'NodeForm.templates']);
angular.module('forms', ['duScroll', 'ngResource', 'NodeForm.templates', 'pascalprecht.translate']);
angular.module('NodeForm', [
'ui.select', 'cgBusy', 'ngSanitize', 'vButton', 'ngResource',

File diff suppressed because one or more lines are too long

View file

@ -14,25 +14,11 @@ angular.module('forms').directive('fieldDirective', ['$http', '$compile', '$root
var getTemplateUrl = function(fieldType) {
var type = fieldType;
var templateUrl = 'modules/forms/base/views/directiveViews/field/';
var supported_fields = [
'textfield',
'textarea',
'date',
'dropdown',
'hidden',
'password',
'radio',
'legal',
'statement',
'rating',
'yes_no',
'number',
'natural'
];
if (__indexOf.call(supportedFields, type) >= 0) {
if (__indexOf.call(supportedFields, type) >= 0) {
templateUrl = templateUrl+type+'.html';
}
return $templateCache.get('../public/'+templateUrl);
return $templateCache.get(templateUrl);
};
return {

View file

@ -1,6 +1,7 @@
'use strict';
angular.module('forms').directive('submitFormDirective', ['$http', 'TimeCounter', '$filter', '$rootScope', 'Auth',
angular.module('forms').directive('submitFormDirective',
['$http', 'TimeCounter', '$filter', '$rootScope', 'Auth',
function ($http, TimeCounter, $filter, $rootScope, Auth) {
return {
templateUrl: 'modules/forms/base/views/directiveViews/form/submit-form.client.view.html', restrict: 'E',
@ -11,12 +12,17 @@ angular.module('forms').directive('submitFormDirective', ['$http', 'TimeCounter'
$scope.authentication = $rootScope.authentication;
$scope.noscroll = false;
$scope.forms = {};
$scope.form_fields_count = $scope.myform.visible_form_fields.filter(function(field){
var form_fields_count = $scope.myform.visible_form_fields.filter(function(field){
if(field.fieldType === 'statement' || field.fieldType === 'rating'){
return false;
}
return true;
}).length;
$scope.translateAdvancementData = {
done: $filter('formValidity')($scope.myform),
total: form_fields_count
};
$scope.reloadForm = function(){
//Reset Form
@ -99,6 +105,11 @@ angular.module('forms').directive('submitFormDirective', ['$http', 'TimeCounter'
$scope.selected._id = field_id;
$scope.selected.index = field_index;
$scope.translateAdvancementData = {
done: $filter('formValidity')($scope.myform),
total: form_fields_count
};
if(animateScroll){
$scope.noscroll=true;
setTimeout(function() {

View file

@ -18,7 +18,7 @@
<div class="row form-actions">
<p class="col-xs-3 col-xs-offset-3 text-center">
<button class="btn btn-info" type="button">
<a ng-click="exitpageData()" style="color:white; font-size: 1.6em; text-decoration: none;">Continue to Form</a>
<a ng-click="exitpageData()" style="color:white; font-size: 1.6em; text-decoration: none;">{{ 'CONTINUE_FORM' | translate }}</a>
</button>
</p>
</div>

View file

@ -7,7 +7,7 @@
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</small>
{{field.title}}
<span class="required-error" ng-show="!field.required && !field.fieldValue">optional</span>
<span class="required-error" ng-show="!field.required && !field.fieldValue">{{ 'OPTIONAL' | translate }}</span>
</h3>
</div>
<div class="col-xs-12 field-input">

View file

@ -8,7 +8,7 @@
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</small>
{{field.title}}
<span class="required-error" ng-show="!field.required">optional</span>
<span class="required-error" ng-show="!field.required">{{ 'OPTIONAL' | translate }}</span>
</h3>
</div>
<div class="col-xs-12 field-input">

View file

@ -6,7 +6,7 @@
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</small>
{{field.title}}
<span class="required-error" ng-show="!field.required">optional</span>
<span class="required-error" ng-show="!field.required">{{ 'OPTIONAL' | translate }}</span>
</h3>
</div>
<div class="col-sm-8 field-input">
@ -20,17 +20,17 @@
<div class="input-group-btn">
<button type="button" ng-if="field.file" ng-click="removeFile(field);" title="Clear selected files" class="btn btn-danger fileinput-remove fileinput-remove-button">
<i class="glyphicon glyphicon-trash" ></i>
Delete
{{ 'DELETE' | translate }}
</button>
<button type="button" ng-if="field.fileLoading" title="Abort ongoing upload" class="btn btn-default" ng-click="cancelFileUpload(field)">
<i class="glyphicon glyphicon-ban-circle"></i>
Cancel
{{ 'CANCEL' | translate }}
</button>
<div class="btn btn-success btn-file" ngf-select ngf-change="uploadPDF($files)" ng-if="!field.file">
<i class="glyphicon glyphicon-upload"></i>
Upload your File
{{ UPLOAD_FILE | translate }}
</div>
</div>
</div>

View file

@ -8,7 +8,7 @@
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</small>
{{field.title}}
<span class="required-error" ng-show="!field.required">optional</span>
<span class="required-error" ng-show="!field.required">{{ 'OPTIONAL' | translate }}</span>
</h3>
<br>
<p style="color:#ddd;">{{field.description}}</p>
@ -29,7 +29,7 @@
<div class="letter" style="float:left">
Y
</div>
<span> I accept </span>
<span> {{ 'LEGAL_ACCEPT' | translate }} </span>
</label>
<label class="btn col-md-5 col-md-offset-1 col-xs-12"
ng-class="{activeBtn: field.fieldValue == 'false'}">
@ -44,7 +44,7 @@
<div class="letter" style="float:left">
N
</div>
<span>I don't accept </span>
<span>{{ 'LEGAL_NO_ACCEPT' | translate }} </span>
</label>
</div>

View file

@ -9,7 +9,7 @@
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</small>
{{field.title}}
<span class="required-error" ng-show="!field.required">optional</span>
<span class="required-error" ng-show="!field.required">{{ 'OPTIONAL' | translate }}</span>
</h3>
</div>
<div class="col-xs-12 field-input">

View file

@ -7,7 +7,7 @@
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</small>
{{field.title}}
<span class="required-error" ng-show="!field.required">optional</span>
<span class="required-error" ng-show="!field.required">{{ 'OPTIONAL' | translate }}</span>
</h3>
</div>
<div class="col-xs-12 field-input">

View file

@ -13,7 +13,7 @@
ng-style="{'font-size': '1.3em', 'background-color':design.colors.buttonColor, 'color':design.colors.buttonTextColor}"
ng-focused="setActiveField(field._id, index, true)"
ng-click="$root.nextField()">
Continue
{{ 'CONTINUE' | translate }}
</button>
</div>
</div>

View file

@ -33,11 +33,11 @@
ng-click="$root.nextField()"
class="btn col-sm-5 col-xs-5">
OK <i class="fa fa-check"></i>
{{ 'OK' | translate }} <i class="fa fa-check"></i>
</button>
<div class="col-sm-3 col-xs-6" style="margin-top:0.2em">
<small style="color:#ddd; font-size:70%">
press ENTER
{{ 'ENTER' | translate }}
</small>
</div>
</div>

View file

@ -10,7 +10,7 @@
{{field.title}}
<span class="required-error" ng-show="!field.required">
(optional)
({{ 'OPTIONAL' | translate }})
</span>
</h3>
</div>
@ -35,9 +35,9 @@
<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 ng-if="field.fieldType == 'email'"> Please enter a valid email address </span>
<span ng-if="field.validateRegex"> Please enter valid numbers only </span>
<span ng-if="field.fieldType == 'link'"> Please a valid url </span>
<span ng-if="field.fieldType == 'email'"> {{ 'ERROR_EMAIL_INVALID' | translate }} </span>
<span ng-if="field.validateRegex"> {{ 'ERROR_NOT_A_NUMBER' | translate }} </span>
<span ng-if="field.fieldType == 'link'"> {{ 'ERROR_URL_INVALID' | translate }} </span>
</div>
</div>
</div>
@ -49,11 +49,11 @@
ng-click="$root.nextField()"
class="btn col-sm-5 col-xs-5">
OK <i class="fa fa-check"></i>
{{ 'OK' | translate }} <i class="fa fa-check"></i>
</button>
<div class="col-xs-6 col-sm-3" style="margin-top:0.2em">
<small style="color:#ddd; font-size:70%">
press ENTER
{{ 'ENTER' | translate }}
</small>
</div>
</div>

View file

@ -10,7 +10,7 @@
</small>
{{field.title}}
<span class="required-error" ng-show="!field.required">
optional
{{ 'OPTIONAL' | translate }}
</span>
</h3>
<p class="row">

View file

@ -57,6 +57,7 @@ ng-style="{'color':button.color}">
</field-directive>
</div>
</form>
</div>
@ -92,7 +93,7 @@ ng-style="{'color':button.color}">
<div class="col-sm-2 hidden-xs" style="font-size: 75%; margin-top:3.25em">
<small>
press ENTER
{{ 'ENTER' | translate }}
</small>
</div>
</div>
@ -102,20 +103,20 @@ ng-style="{'color':button.color}">
<div class="container-fluid">
<div class="row">
<div class="col-sm-5 col-md-6 col-xs-5" ng-show="!myform.submitted">
<p class="lead">{{myform | formValidity}} out of {{form_fields_count}} answered</p>
<p class="lead">{{ 'ADVANCEMENT' | translate:translateAdvancementData }}</p>
</div>
<div class="col-md-6 col-md-offset-0 col-sm-offset-2 col-sm-3 col-xs-offset-1 col-xs-6 row">
<div class="col-md-4 col-md-offset-2 hidden-sm hidden-xs" ng-if="!authentication.isAuthenticated()">
<a href="/#!/forms" class="btn"
ng-style="{'background-color':myform.design.colors.buttonColor, 'color':myform.design.colors.buttonTextColor}">
Create a TellForm
{{ 'CREATE_FORM' | translate }}
</a>
</div>
<div class="col-md-4 col-md-offset-2 hidden-sm hidden-xs" ng-if="authentication.isAuthenticated()">
<a href="/#!/forms/{{myform._id}}/admin/create"
ng-style="{'background-color':myform.design.colors.buttonColor, 'color':myform.design.colors.buttonTextColor}"
class="btn">
Edit this TellForm
{{ 'EDIT_FORM' | translate }}
</a>
</div>
<div class="col-md-4 col-sm-10 col-md-offset-0 col-sm-offset-2 col-xs-12 row">
@ -144,13 +145,13 @@ ng-style="{'color':button.color}">
style="padding-top: 5vh;">
<div class="field row text-center">
<div class="col-xs-12 col-sm-12 col-md-6 col-md-offset-3 text-center">Form entry successfully submitted!</div>
<div class="col-xs-12 col-sm-12 col-md-6 col-md-offset-3 text-center">{{ 'FROM_SUCCESS' | translate }}</div>
</div>
<div class="row form-actions">
<p class="text-center">
<button ng-click="reloadForm()" class="btn" type="button"
ng-style="{'background-color':myform.design.colors.buttonColor, 'color':myform.design.colors.buttonTextColor}">
<span style="font-size: 1.6em;"> Go back to Form</span>
<span style="font-size: 1.6em;"> {{ 'BACK_TO_FORM' | translate }}</span>
</button>
</p>
</div>