1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-28 09:24:24 +01:00

allow user to change his choice about cookies

This commit is contained in:
Sylvain 2019-06-13 12:52:56 +02:00
parent e9b18fda6c
commit f69703f0a0
13 changed files with 286 additions and 175 deletions

View File

@ -51,7 +51,7 @@ Application.Controllers.controller('CookiesController', ['$scope', '$cookies', '
}
});
// if the GA_ID environment variable was not set, only functional cookies will be set, so user consent is not required
$scope.cookiesState = 'ignore';
// $scope.cookiesState = 'ignore';
};
const readCookie = function () {

View File

@ -70,10 +70,10 @@ Application.Controllers.controller('MembersController', ['$scope', 'Member', 'me
]);
/**
* Controller used when editing the current user's profile
* Controller used when editing the current user's profile (in dashboard)
*/
Application.Controllers.controller('EditProfileController', ['$scope', '$rootScope', '$state', '$window', '$sce', 'Member', 'Auth', 'Session', 'activeProviderPromise', 'growl', 'dialogs', 'CSRF', 'memberPromise', 'groups', '_t',
function ($scope, $rootScope, $state, $window, $sce, Member, Auth, Session, activeProviderPromise, growl, dialogs, CSRF, memberPromise, groups, _t) {
Application.Controllers.controller('EditProfileController', ['$scope', '$rootScope', '$state', '$window', '$sce', '$cookies', '$injector', 'Member', 'Auth', 'Session', 'activeProviderPromise', 'growl', 'dialogs', 'CSRF', 'memberPromise', 'groups', '_t',
function ($scope, $rootScope, $state, $window, $sce, $cookies, $injector, Member, Auth, Session, activeProviderPromise, growl, dialogs, CSRF, memberPromise, groups, _t) {
/* PUBLIC SCOPE */
// API URL where the form will be posted
@ -101,12 +101,14 @@ Application.Controllers.controller('EditProfileController', ['$scope', '$rootSco
// allow the user to change his password except if he connect from an SSO
$scope.preventPassword = false;
// get the status of cookies acceptance
$scope.cookiesStatus = $cookies.get('fab-manager-cookies-consent');
// mapping of fields to disable
$scope.preventField = {};
// Should the passord be modified?
$scope.password =
{ change: false };
$scope.password = { change: false };
// Angular-Bootstrap datepicker configuration for birthday
$scope.datePicker = {
@ -255,6 +257,15 @@ Application.Controllers.controller('EditProfileController', ['$scope', '$rootSco
return $window.location.href = $scope.activeProvider.link_to_sso_connect;
});
/**
* Destroy the cookie used to save the user's preference, this will trigger the choice popup again
*/
$scope.resetCookies = function () {
$cookies.remove('fab-manager-cookies-consent');
$scope.cookiesStatus = undefined;
$injector.get('$state').reload();
};
/* PRIVATE SCOPE */
/**

View File

@ -13,72 +13,79 @@
</span>
<div class="font-sbold m-t-sm">{{user.name}}</div>
<div>{{user.email}}</div>
<div class="text-xs" ng-if="user.last_sign_in_at"><i>{{ 'last_activity_on_' | translate }} {{user.last_sign_in_at | amDateFormat: 'LL'}}</i></div>
<div class="text-xs" ng-if="user.last_sign_in_at"><i>{{ 'edit_profile.last_activity_on_' | translate }} {{user.last_sign_in_at | amDateFormat: 'LL'}}</i></div>
</div>
<div class="widget-content no-bg b-b auto wrapper">
<div class="m-b-md">
<h3 class="text-u-c" translate>{{ 'group' }}</h3>
<div ng-show="!group.change">
<uib-alert type="warning">
<span class="text-black font-sbold">{{getUserGroup().name}}</span>
</uib-alert>
<button class="btn text-black btn-warning-full btn-sm m-t-n-sm"
ng-click="group.change = !group.change"
ng-hide="user.subscribed_plan.name || user.role === 'admin'"
translate>
{{ 'i_want_to_change_group' }}
</button>
</div>
<div ng-show="group.change">
<select class="form-control" ng-options="g.id as g.name for g in groups" ng-model="userGroup"></select>
<button class="btn btn-success m-t" ng-click="selectGroup()">Changer mon groupe</button>
</div>
<h3 class="text-u-c" translate>{{ 'edit_profile.group' }}</h3>
<div ng-show="!group.change">
<uib-alert type="warning">
<span class="text-black font-sbold">{{getUserGroup().name}}</span>
</uib-alert>
<button class="btn text-black btn-warning-full btn-sm m-t-n-sm"
ng-click="group.change = !group.change"
ng-hide="user.subscribed_plan.name || user.role === 'admin'"
translate>
{{ 'edit_profile.i_want_to_change_group' }}
</button>
</div>
<div ng-show="group.change">
<select class="form-control" ng-options="g.id as g.name for g in groups" ng-model="userGroup"></select>
<button class="btn btn-success m-t" ng-click="selectGroup()">Changer mon groupe</button>
</div>
</div>
<div ng-hide="fablabWithoutPlans">
<h3 class="text-u-c" translate>{{ 'subscription' }}</h3>
<div ng-show="user.subscribed_plan">
<uib-alert type="warning">
<span class="text-black font-sbold">{{ user.subscribed_plan | humanReadablePlanName }}</span>
<div class="font-sbold" ng-if="user.subscription">{{ 'your_subscription_expires_on_' | translate }} {{user.subscription.expired_at | amDateFormat: 'LL'}}</div>
</uib-alert>
<h3 class="text-u-c" translate>{{ 'edit_profile.subscription' }}</h3>
<div ng-show="user.subscribed_plan">
<uib-alert type="warning">
<span class="text-black font-sbold">{{ user.subscribed_plan | humanReadablePlanName }}</span>
<div class="font-sbold" ng-if="user.subscription">{{ 'edit_profile.your_subscription_expires_on_' | translate }} {{user.subscription.expired_at | amDateFormat: 'LL'}}</div>
</uib-alert>
</div>
<div ng-show="!user.subscribed_plan.name">{{ 'no_subscriptions' | translate }} <br><a class="btn text-black btn-warning-full btn-sm m-t-xs" ui-sref="app.public.plans" translate>{{ 'i_want_to_subscribe' }}</a></div>
</div>
<div ng-show="!user.subscribed_plan.name">{{ 'edit_profile.no_subscriptions' | translate }} <br><a class="btn text-black btn-warning-full btn-sm m-t-xs" ui-sref="app.public.plans" translate>{{ 'edit_profile.i_want_to_subscribe' }}</a></div>
</div>
<div class="m-t">
<h3 class="text-u-c" translate>{{ 'trainings' }}</h3>
<ul class="list-unstyled" ng-if="user.training_reservations.length > 0 || user.trainings.length > 0">
<li ng-repeat="r in user.training_reservations | trainingReservationsFilter:'future'">
{{r.reservable.name}} - {{ 'to_come' | translate }}
</li>
<li ng-repeat="t in user.trainings">
{{t.name}} - {{ 'approved' | translate }}
</li>
</ul>
<div ng-if="user.training_reservations.length == 0 && user.trainings.length == 0" translate>{{ 'no_trainings' }}</div>
<h3 class="text-u-c" translate>{{ 'edit_profile.trainings' }}</h3>
<ul class="list-unstyled" ng-if="user.training_reservations.length > 0 || user.trainings.length > 0">
<li ng-repeat="r in user.training_reservations | trainingReservationsFilter:'future'">
{{r.reservable.name}} - {{ 'edit_profile.to_come' | translate }}
</li>
<li ng-repeat="t in user.trainings">
{{t.name}} - {{ 'edit_profile.approved' | translate }}
</li>
</ul>
<div ng-if="user.training_reservations.length == 0 && user.trainings.length == 0" translate>{{ 'edit_profile.no_trainings' }}</div>
</div>
<div class="m-t">
<h3 class="text-u-c" translate>{{ 'projects' }}</h3>
<ul class="list-unstyled" ng-if="user.all_projects.length > 0">
<li ng-repeat="p in user.all_projects">
{{p.name}}
</li>
</ul>
<div ng-if="user.all_projects.length == 0" translate>{{ 'no_projects' }}</div>
<h3 class="text-u-c" translate>{{ 'edit_profile.projects' }}</h3>
<ul class="list-unstyled" ng-if="user.all_projects.length > 0">
<li ng-repeat="p in user.all_projects">
{{p.name}}
</li>
</ul>
<div ng-if="user.all_projects.length == 0" translate>{{ 'edit_profile.no_projects' }}</div>
</div>
<div class="m-t">
<h3 class="text-u-c" translate>{{ 'labels' }}</h3>
<span ng-if="user.tags.length > 0" ng-repeat="t in user.tags">
<span class='label label-success text-white'>{{t.name}}</span>
</span>
<div ng-if="user.tags.length == 0" translate>{{ 'no_labels' }}</div>
<h3 class="text-u-c" translate>{{ 'edit_profile.labels' }}</h3>
<span ng-if="user.tags.length > 0" ng-repeat="t in user.tags">
<span class='label label-success text-white'>{{t.name}}</span>
</span>
<div ng-if="user.tags.length == 0" translate>{{ 'edit_profile.no_labels' }}</div>
</div>
</div>
<div class="widget-content no-bg b-b auto wrapper">
<h3 class="text-u-c" translate>{{ 'edit_profile.cookies' }}</h3>
<div ng-show="cookiesStatus === 'accept'" translate>{{ 'edit_profile.cookies_accepted' }}</div>
<div ng-show="cookiesStatus === 'decline'" translate>{{ 'edit_profile.cookies_declined' }}</div>
<div ng-hide="cookiesStatus" translate>{{ 'edit_profile.cookies_unset' }}</div>
<button ng-click="resetCookies()" ng-show="cookiesStatus" class="btn text-black btn-warning-full btn-sm m-t-xs" translate>{{ 'edit_profile.reset_cookies' }}</button>
</div>
<div class="widget-content no-bg text-center auto wrapper">
<button class="btn text-white btn-danger btn-sm" ng-click="deleteUser(user)"><i class="fa fa-warning m-r-xs"></i> {{ 'delete_my_account' | translate }}</button>
<button class="btn text-white btn-danger btn-sm" ng-click="deleteUser(user)"><i class="fa fa-warning m-r-xs"></i> {{ 'edit_profile.delete_my_account' | translate }}</button>
</div>
</div>
@ -87,7 +94,7 @@
<div class="col-sm-12 col-md-12 col-lg-9">
<div class="widget panel b-a m m-t-lg">
<div class="panel-heading b-b">
<h1 class="red text-u-c" translate>{{ 'edit_my_profile' }}</h1>
<h1 class="red text-u-c" translate>{{ 'edit_profile.edit_my_profile' }}</h1>
</div>
<form role="form" name="userForm" class="form-horizontal" novalidate action="{{ actionUrl }}" ng-upload="submited(content)" upload-options-enable-rails-csrf="true">
<div class="widget-content no-bg auto">
@ -101,13 +108,13 @@
<div class="panel-body row">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<a class="btn btn-default" ng-href="{{activeProvider.link_to_sso_profile}}" target="_blank">
<i class="fa fa-edit"></i> {{ 'change_my_data' | translate }}
<i class="fa fa-edit"></i> {{ 'edit_profile.change_my_data' | translate }}
</a>
<p>{{ 'once_your_data_are_up_to_date_' | translate }} <strong translate>{{ '_click_on_the_synchronization_button_opposite_' }}</strong> {{ 'or' | translate}} <strong translate>{{ '_disconnect_then_reconnect_' }}</strong> {{ '_for_your_changes_to_take_effect' | translate }}</p>
<p>{{ 'edit_profile.once_your_data_are_up_to_date_' | translate }} <strong translate>{{ 'edit_profile._click_on_the_synchronization_button_opposite_' }}</strong> {{ 'edit_profile.or' | translate}} <strong translate>{{ 'edit_profile._disconnect_then_reconnect_' }}</strong> {{ 'edit_profile._for_your_changes_to_take_effect' | translate }}</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<a class="btn btn-default" ng-click="syncProfile()">
<i class="fa fa-refresh"></i> {{ 'sync_my_profile' | translate }}
<i class="fa fa-refresh"></i> {{ 'edit_profile.sync_my_profile' | translate }}
</a>
</div>
</div>
@ -119,7 +126,7 @@
</section>
</div>
<div class="panel-footer no-padder">
<input type="submit" value="{{ 'confirm_changes' | translate }}" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-disabled="userForm.$invalid"/>
<input type="submit" value="{{ 'edit_profile.confirm_changes' | translate }}" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-disabled="userForm.$invalid"/>
</div>
</form>
</div>

View File

@ -1,7 +1,7 @@
<div class="cookies-consent" ng-hide="cookiesState">
<p class="cookies-infos">
<span translate>{{ 'cookies.about_cookies' }}</span>
<a ng-href="{{learnMoreUrl}}" translate>{{ 'cookies.learn_more' }}</a>
<a ng-href="{{learnMoreUrl}}" target="{{ learnMoreUrl.startsWith('http') ? '_blank' : '_self' }}" translate>{{ 'cookies.learn_more' }}</a>
</p>
<div class="cookies-actions">
<button class="decline" ng-click="declineCookies()" translate>{{ 'cookies.decline' }}</button>

View File

@ -90,10 +90,10 @@
<section id="content">
<section class="vbox">
<section id="content-main" class="scrollable" ui-view="main">
</section>
<section id="cookies-modal" ui-view="cookies">
</section>
<section id="content-main" class="scrollable" ui-view="main">
</section>
</section>
</section>

View File

@ -32,34 +32,52 @@ en:
profile:
empty: ''
settings:
# dashboard: edit my profile
last_activity_on_: "Last activity on"
i_want_to_change_group: "I want to change group!"
your_subscription_expires_on_: "Your subscription expires on"
no_subscriptions: "No subscriptions"
i_want_to_subscribe: "I want to subscribe!"
to_come: "to come"
approved: "approved"
projects: "Projects"
no_projects: "No projects"
labels: "Labels"
no_labels: "No labels"
delete_my_account: "Delete my account"
edit_my_profile: "Edit my profile"
your_group_has_been_successfully_changed: "Your group has been successfully changed."
an_unexpected_error_prevented_your_group_from_being_changed: "An unexpected error prevented your group from being changed."
confirm_delete_your_account: "Do you really want to delete your account?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable."
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years."
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes."
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them."
your_user_account_has_been_successfully_deleted_goodbye: "Your user account has been successfully deleted. Goodbye."
an_error_occured_preventing_your_account_from_being_deleted: "An error occurred, preventing your account from being deleted."
used_for_statistics: "This data will be used for statistical purposes"
used_for_invoicing: "This data will be used for billing purposes"
used_for_reservation: "This data will be used in case of change on one of your bookings"
used_for_profile: "This data will only be displayed on your profile"
public_profile: "You will have a public profile and other users will be able to associate you in their projects"
edit_profile:
# dashboard: edit my profile
last_activity_on_: "Last activity on"
i_want_to_change_group: "I want to change group!"
your_subscription_expires_on_: "Your subscription expires on"
no_subscriptions: "No subscriptions"
i_want_to_subscribe: "I want to subscribe!"
to_come: "to come"
approved: "approved"
projects: "Projects"
no_projects: "No projects"
labels: "Labels"
no_labels: "No labels"
cookies: "Cookies"
cookies_accepted: "You have accepted cookies"
cookies_declined: "You have refused cookies"
cookies_unset: "You have not chosen yet"
reset_cookies: "Change my choice"
delete_my_account: "Delete my account"
edit_my_profile: "Edit my profile"
your_group_has_been_successfully_changed: "Your group has been successfully changed."
an_unexpected_error_prevented_your_group_from_being_changed: "An unexpected error prevented your group from being changed."
confirm_delete_your_account: "Do you really want to delete your account?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable."
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years."
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes."
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them."
your_user_account_has_been_successfully_deleted_goodbye: "Your user account has been successfully deleted. Goodbye."
an_error_occured_preventing_your_account_from_being_deleted: "An error occurred, preventing your account from being deleted."
used_for_statistics: "This data will be used for statistical purposes"
used_for_invoicing: "This data will be used for billing purposes"
used_for_reservation: "This data will be used in case of change on one of your bookings"
used_for_profile: "This data will only be displayed on your profile"
public_profile: "You will have a public profile and other users will be able to associate you in their projects"
trainings: "Trainings"
no_trainings: "No trainings"
subscription: "Subscription"
group: "Group"
or: "or"
confirm_changes: "Confirm changes"
change_my_data: "Change my data"
sync_my_profile: "Sync my profile"
once_your_data_are_up_to_date_: "Once your data are up to date,"
_click_on_the_synchronization_button_opposite_: "click on the synchronization button opposite"
_disconnect_then_reconnect_: "disconnect then reconnect"
_for_your_changes_to_take_effect: "for your changes to take effect."
projects:
# dashboard: my projects
you_dont_have_any_projects: "You don't have any projects."

View File

@ -32,34 +32,52 @@ es:
profile:
empty: ''
settings:
# dashboard: edit my profile
last_activity_on_: "Última vez activo"
i_want_to_change_group: "Quiero cambiar de grupo"
your_subscription_expires_on_: "su suscripción acaba el"
no_subscriptions: "Sin suscripciones"
i_want_to_subscribe: "Quiero suscribirme"
to_come: "por venir"
approved: "aprobado"
projects: "Projectos"
no_projects: "Sin projectos"
labels: "Etiquetas"
no_labels: "Sin etiquetas"
delete_my_account: "Eliminar mi cuenta"
edit_my_profile: "Editar mi perfil"
your_group_has_been_successfully_changed: "Su grupo ha sido cambiado con exito."
an_unexpected_error_prevented_your_group_from_being_changed: "Un error inesperado impidió que su grupo fuese cambiado."
confirm_delete_your_account: "¿Está seguro de querer eliminar su cuenta?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable." # missing translation
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years." # missing translation
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes." # missing translation
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them." # missing translation
your_user_account_has_been_successfully_deleted_goodbye: "Su cuenta ha sido eliminada con éxito. Adiós"
an_error_occured_preventing_your_account_from_being_deleted: "Un error inesperado impidió que su cuenta fuese eliminada."
used_for_statistics: "This data will be used for statistical purposes" # translation missing
used_for_invoicing: "This data will be used for billing purposes" # translation missing
used_for_reservation: "This data will be used in case of change on one of your bookings" # translation missing
used_for_profile: "This data will only be displayed on your profile" # translation missing
public_profile: "You will have a public profile and other users will be able to associate you in their projects" # translation missing
edit_profile:
# dashboard: edit my profile
last_activity_on_: "Última vez activo"
i_want_to_change_group: "Quiero cambiar de grupo"
your_subscription_expires_on_: "su suscripción acaba el"
no_subscriptions: "Sin suscripciones"
i_want_to_subscribe: "Quiero suscribirme"
to_come: "por venir"
approved: "aprobado"
projects: "Projectos"
no_projects: "Sin projectos"
labels: "Etiquetas"
no_labels: "Sin etiquetas"
cookies: "Cookies"
cookies_accepted: "Has aceptado las cookies"
cookies_declined: "Has negado las cookies"
cookies_unset: "No has elegido aún"
reset_cookies: "Cambiar mi elección"
delete_my_account: "Eliminar mi cuenta"
edit_my_profile: "Editar mi perfil"
your_group_has_been_successfully_changed: "Su grupo ha sido cambiado con exito."
an_unexpected_error_prevented_your_group_from_being_changed: "Un error inesperado impidió que su grupo fuese cambiado."
confirm_delete_your_account: "¿Está seguro de querer eliminar su cuenta?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable." # missing translation
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years." # missing translation
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes." # missing translation
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them." # missing translation
your_user_account_has_been_successfully_deleted_goodbye: "Su cuenta ha sido eliminada con éxito. Adiós"
an_error_occured_preventing_your_account_from_being_deleted: "Un error inesperado impidió que su cuenta fuese eliminada."
used_for_statistics: "This data will be used for statistical purposes" # translation missing
used_for_invoicing: "This data will be used for billing purposes" # translation missing
used_for_reservation: "This data will be used in case of change on one of your bookings" # translation missing
used_for_profile: "This data will only be displayed on your profile" # translation missing
public_profile: "You will have a public profile and other users will be able to associate you in their projects" # translation missing
trainings: "Cursos"
no_trainings: "Sin cursos"
subscription: "Suscripción"
group: "Grupo"
or: "ó"
confirm_changes: "Confirmar cambios"
change_my_data: "Cambiar mis datos"
sync_my_profile: "Sincronizar mi perfil"
once_your_data_are_up_to_date_: "Una vez sus datos hayan sido actualizados,"
_click_on_the_synchronization_button_opposite_: "haz clic en el botón de sincronización"
_disconnect_then_reconnect_: "reconectarse"
_for_your_changes_to_take_effect: "para que sus cambios sean aplicados."
projects:
# dashboard: my projects
you_dont_have_any_projects: "Aún no tiene proyectos."

View File

@ -32,34 +32,52 @@ fr:
profile:
empty: ''
settings:
# tableau de bord : éditer mon profil
last_activity_on_: "Dernière activité le"
i_want_to_change_group: "Je veux changer de groupe !"
your_subscription_expires_on_: "Votre abonnement expire le"
no_subscriptions: "Aucun abonnement"
i_want_to_subscribe: "Je veux m'abonner !"
to_come: "à venir"
approved: "validée"
projects: "Projets"
no_projects: "Aucun projet"
labels: "Étiquettes"
no_labels: "Aucune étiquette"
delete_my_account: "Supprimer mon compte"
edit_my_profile: "Éditer votre profil"
your_group_has_been_successfully_changed: "Votre groupe a bien été changé."
an_unexpected_error_prevented_your_group_from_being_changed: "Une erreur inattendue a empêché votre changement de groupe."
confirm_delete_your_account: "Êtes-vous sûr de vouloir supprimer votre compte ?"
all_data_will_be_lost: "Toutes vos données seront détruites et ne pourront pas être récupérées."
invoicing_data_kept: "Conformément à la réglementation, les données relatives à vos facturations seront conservées de manière séparée pendant 10 ans."
statistic_data_anonymized: "Certaines données (sexe, date de naissance, groupe) seront anonymisées et conservées à des fins statistiques."
no_further_access_to_projects: "Vos projets publiés seront anonymisés et vous n'aurez plus de possibilité de les modifier."
your_user_account_has_been_successfully_deleted_goodbye: "Votre compte utilisateur a bien été supprimé. Au revoir."
an_error_occured_preventing_your_account_from_being_deleted: "Une erreur est survenue qui a empêché la suppression de votre compte."
used_for_statistics: "Cette donnée sera utilisée à des fins statistiques"
used_for_invoicing: "Cette donnée sera utilisée à des fins de facturation"
used_for_reservation: "Cette donnée sera utilisée en cas de changement sur une de vos réservations"
used_for_profile: "Cette donnée sera seulement affichée sur votre profil"
public_profile: "Vous aurez un profil public et les autres utilisateurs pourront vous associer à leurs projets"
edit_profile:
# tableau de bord : éditer mon profil
last_activity_on_: "Dernière activité le"
i_want_to_change_group: "Je veux changer de groupe !"
your_subscription_expires_on_: "Votre abonnement expire le"
no_subscriptions: "Aucun abonnement"
i_want_to_subscribe: "Je veux m'abonner !"
to_come: "à venir"
approved: "validée"
projects: "Projets"
no_projects: "Aucun projet"
labels: "Étiquettes"
no_labels: "Aucune étiquette"
cookies: "Cookies"
cookies_accepted: "Vous avez accepté les cookies"
cookies_declined: "Vous avez refusé les cookies"
cookies_unset: "Vous n'avez pas encore choisi"
reset_cookies: "Modifier mon choix"
delete_my_account: "Supprimer mon compte"
edit_my_profile: "Éditer votre profil"
your_group_has_been_successfully_changed: "Votre groupe a bien été changé."
an_unexpected_error_prevented_your_group_from_being_changed: "Une erreur inattendue a empêché votre changement de groupe."
confirm_delete_your_account: "Êtes-vous sûr de vouloir supprimer votre compte ?"
all_data_will_be_lost: "Toutes vos données seront détruites et ne pourront pas être récupérées."
invoicing_data_kept: "Conformément à la réglementation, les données relatives à vos facturations seront conservées de manière séparée pendant 10 ans."
statistic_data_anonymized: "Certaines données (sexe, date de naissance, groupe) seront anonymisées et conservées à des fins statistiques."
no_further_access_to_projects: "Vos projets publiés seront anonymisés et vous n'aurez plus de possibilité de les modifier."
your_user_account_has_been_successfully_deleted_goodbye: "Votre compte utilisateur a bien été supprimé. Au revoir."
an_error_occured_preventing_your_account_from_being_deleted: "Une erreur est survenue qui a empêché la suppression de votre compte."
used_for_statistics: "Cette donnée sera utilisée à des fins statistiques"
used_for_invoicing: "Cette donnée sera utilisée à des fins de facturation"
used_for_reservation: "Cette donnée sera utilisée en cas de changement sur une de vos réservations"
used_for_profile: "Cette donnée sera seulement affichée sur votre profil"
public_profile: "Vous aurez un profil public et les autres utilisateurs pourront vous associer à leurs projets"
trainings: "Formations"
no_trainings: "Aucune formation"
subscription: "Abonnement"
group: "Groupe"
or: "ou"
confirm_changes: "Valider les modifications"
change_my_data: "Modifier mes données"
once_your_data_are_up_to_date_: "Une fois vos données à jour,"
_click_on_the_synchronization_button_opposite_: "cliquez sur le bouton de synchronisation ci-contre"
_disconnect_then_reconnect_: "déconnectez-vous puis re-connectez vous"
_for_your_changes_to_take_effect: "pour que les modifications soient prises en compte."
sync_my_profile: "Synchroniser mon profil"
projects:
# tableau de bord : mes projets
you_dont_have_any_projects: "Vous n'avez aucun projet."

View File

@ -32,34 +32,52 @@ pt:
profile:
empty: ''
settings:
# dashboard: edit my profile
last_activity_on_: "Última atividade em"
i_want_to_change_group: "Eu quero trocar de grupo!"
your_subscription_expires_on_: "Sua inscrição expira em"
no_subscriptions: "Sem inscrições"
i_want_to_subscribe: "Eu quero me inscrever!"
to_come: "futuros"
approved: "aprovado"
projects: "Projetos"
no_projects: "Sem projetos"
labels: "Etiquetas"
no_labels: "Sem etiquetas"
delete_my_account: "Deletar minha conta"
edit_my_profile: "Editar meu perfil"
your_group_has_been_successfully_changed: "Seu grupo foi modificado com sucesso."
an_unexpected_error_prevented_your_group_from_being_changed: "Um erro inesperado impediu o seu grupo de ser alterado."
confirm_delete_your_account: "Você realmente deseja deletar sua conta?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable." # missing translation
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years." # missing translation
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes." # missing translation
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them." # missing translation
your_user_account_has_been_successfully_deleted_goodbye: "Sua conta de usuário foi excluída com êxito. Até mais."
an_error_occured_preventing_your_account_from_being_deleted: "Ocorreu um erro, impedindo que sua conta fosse excluída."
used_for_statistics: "This data will be used for statistical purposes" # translation missing
used_for_invoicing: "This data will be used for billing purposes" # translation missing
used_for_reservation: "This data will be used in case of change on one of your bookings" # translation missing
used_for_profile: "This data will only be displayed on your profile" # translation missing
public_profile: "You will have a public profile and other users will be able to associate you in their projects" # translation missing
edit_profile:
# dashboard: edit my profile
last_activity_on_: "Última atividade em"
i_want_to_change_group: "Eu quero trocar de grupo!"
your_subscription_expires_on_: "Sua inscrição expira em"
no_subscriptions: "Sem inscrições"
i_want_to_subscribe: "Eu quero me inscrever!"
to_come: "futuros"
approved: "aprovado"
projects: "Projetos"
no_projects: "Sem projetos"
labels: "Etiquetas"
no_labels: "Sem etiquetas"
cookies: "Cookies"
cookies_accepted: "Você aceitou cookies"
cookies_declined: "Você recusou cookies"
cookies_unset: "Você ainda não escolheu"
reset_cookies: "Mude minha escolha"
delete_my_account: "Deletar minha conta"
edit_my_profile: "Editar meu perfil"
your_group_has_been_successfully_changed: "Seu grupo foi modificado com sucesso."
an_unexpected_error_prevented_your_group_from_being_changed: "Um erro inesperado impediu o seu grupo de ser alterado."
confirm_delete_your_account: "Você realmente deseja deletar sua conta?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable." # missing translation
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years." # missing translation
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes." # missing translation
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them." # missing translation
your_user_account_has_been_successfully_deleted_goodbye: "Sua conta de usuário foi excluída com êxito. Até mais."
an_error_occured_preventing_your_account_from_being_deleted: "Ocorreu um erro, impedindo que sua conta fosse excluída."
used_for_statistics: "This data will be used for statistical purposes" # translation missing
used_for_invoicing: "This data will be used for billing purposes" # translation missing
used_for_reservation: "This data will be used in case of change on one of your bookings" # translation missing
used_for_profile: "This data will only be displayed on your profile" # translation missing
public_profile: "You will have a public profile and other users will be able to associate you in their projects" # translation missing
trainings: "Treinamentos"
no_trainings: "Sem treinamentos"
subscription: "Assinatura"
group: "Grupo"
or: "ou"
confirm_changes: "Confirmar mudanças"
change_my_data: "Alterar meus dados"
sync_my_profile: "Sincronizar meu perfil"
once_your_data_are_up_to_date_: "Uma vez que seus dados estão atualizados,"
_click_on_the_synchronization_button_opposite_: "clique no botão de sincronização"
_disconnect_then_reconnect_: "disconecte e se conecte novamente"
_for_your_changes_to_take_effect: "para que suas alterações tenham efeitos."
projects:
# dashboard: my projects
you_dont_have_any_projects: "Você não tem nenhum projeto."

View File

@ -6,6 +6,13 @@ en:
about_the_fablab: "About {GENDER, select, neutral{} other{the}} {NAME}" # messageFormat interpolation
return: "Return"
# cookies
cookies:
about_cookies: "This website uses cookies for audience measurement purposes."
learn_more: "Learn more"
accept: "Accept cookies"
decline: "Refuse"
# dashboard sections
dashboard: "Dashboard"
my_profile: "My Profile"

View File

@ -6,6 +6,13 @@ es:
about_the_fablab: "Sobre {GENDER, select, male{el} female{la} neutral{} other{las}} {NAME}" # messageFormat interpolation
return: "Volver"
# cookies
cookies:
about_cookies: "Este sitio web utiliza cookies para medir la audiencia."
learn_more: "Aprende más"
accept: "Aceptar cookies"
decline: "Rehusar"
# dashboard sections
dashboard: "Panel"
my_profile: "My Perfil"

View File

@ -8,7 +8,7 @@ fr:
# cookies
cookies:
about_cookies: "Ce site web utilise des cookies à des fins de mesure d'audiance."
about_cookies: "Ce site web utilise des cookies à des fins de mesure d'audience."
learn_more: "En savoir plus"
accept: "Accepter les cookies"
decline: "Refuser"

View File

@ -6,6 +6,13 @@ pt:
about_the_fablab: "Sobre {GENDER, select, male{o} female{a} neutral{} other{do}} {NAME}" # messageFormat interpolation
return: "Voltar"
# cookies
cookies:
about_cookies: "Este site usa cookies para fins de medição de audiência."
learn_more: "Saber mais"
accept: "Aceitar cookies"
decline: "Recusar"
# dashboard sections
dashboard: "Dashboard"
my_profile: "Meu Perfil"