- Du {{event.start_date | amDateFormat:'DD/MM/YYYY'}} au {{event.end_date | amDateFormat:'DD/MM/YYYY'}}
+ From {{event.start_date | amDateFormat:'DD/MM/YYYY'}} to {{event.end_date | amDateFormat:'DD/MM/YYYY'}}
- Toute la journée
+ All day long
- De {{event.start_date | date:'HH:mm'}}
- à
+ From {{event.start_date | date:'HH:mm'}}
+ to
{{event.end_date | date:'HH:mm'}}
De {{event.start_date | amDateFormat:'HH:mm'}} à {{event.end_date | amDateFormat:'HH:mm'}}
+
From {{event.start_date | amDateFormat:'HH:mm'}} to {{event.end_date | amDateFormat:'HH:mm'}}
-
Plein tarif : {{ event.amount }} €
-
Tarif réduit* : {{ event.reduced_amount }} €
+
Full price : {{ event.amount }} €
+
Reduced price* : {{ event.reduced_amount }} €
-
Places disponibles: {{event.nb_total_places}}
+
Available seats: {{event.nb_total_places}}
-
Entrée libre
+
Free admission
@@ -89,7 +89,7 @@
- * Tarif réduit si vous avez moins de 25 ans, que vous êtes étudiant ou demandeur d'emploi.
+ * Reduced price if you are under 25, a student or unemployed.
- Sexe est obligatoire
+ Inform gender is mandatory
-
- Prénom est obligatoire
+
+ Name is required
-
- Nom est obligatoire
+
+ Last name is required
@@ -36,9 +36,9 @@
-
+
- Pseudo est obligatoire
+ Username is required
@@ -46,9 +46,9 @@
-
+
- Email est obligatoire
+ Email is required
@@ -56,10 +56,10 @@
-
+
- Mot de passe est obligatoire
- Mot de passe est trop court (au moins 8 caractères)
+ Password is required
+ Password too short (8 min)
@@ -67,10 +67,10 @@
-
+
- Mot de passe de confirmation est obligatoire
- Mot de passe ne concorde pas avec la confirmation
+ Password confirmation is mandatory
+ Password does not match confirmation
@@ -78,10 +78,10 @@
- Le profil utilisateur est obligatoire
+ The user profile is mandatory
@@ -96,11 +96,11 @@
datepicker-popup="{{datePicker.format}}"
datepicker-options="datePicker.options"
is-open="datePicker.opened"
- placeholder="Date de naissance"
+ placeholder="Date of birth"
ng-click="openDatePicker($event)"
required/>
- La date de naissance est obligatoire
+ The date of birth is mandatory
@@ -108,26 +108,26 @@
-
+
- Le numéro de téléphone est obligatoire.
+ The telephone number is mandatory.
- J'autorise les utilisateurs du Fab Lab inscrits sur le site à me contacter
+ I authorize Fablab XinFab users registered on the site to contact me
\ No newline at end of file
diff --git a/app/views/api/members/export_members.xls.erb b/app/views/api/members/export_members.xls.erb
index cce8965de..c1e160675 100644
--- a/app/views/api/members/export_members.xls.erb
+++ b/app/views/api/members/export_members.xls.erb
@@ -1,13 +1,13 @@
ID
-
Nom
-
Prénom
+
Last Name
+
First Name
Email
-
Genre
+
Gender
Age
-
Tel.
-
Type utilisateur
+
Phone
+
User Type
<% @datas.each do |data| %>
@@ -15,7 +15,7 @@
<%= data.profile.last_name %>
<%= data.profile.first_name %>
<%= data.email %>
-
<%= data.profile.gender ? 'Homme' : 'Femme' %>
+
<%= data.profile.gender ? 'Male' : 'Female' %>
<%= data.profile.age %>
<%= data.profile.phone %>
<%= data.group.name %>
diff --git a/app/views/api/notifications/_notify_admin_when_user_is_created.json.jbuilder b/app/views/api/notifications/_notify_admin_when_user_is_created.json.jbuilder
index 362430b6e..a47e68020 100644
--- a/app/views/api/notifications/_notify_admin_when_user_is_created.json.jbuilder
+++ b/app/views/api/notifications/_notify_admin_when_user_is_created.json.jbuilder
@@ -1,3 +1,3 @@
json.title notification.notification_type
-json.description "Un nouveau compte utilisateur vient d'être créé : #{ notification.attached_object.profile.full_name } <#{ notification.attached_object.email}>."
+json.description "A new user account newly created : #{ notification.attached_object.profile.full_name } <#{ notification.attached_object.email}>."
json.url notification_url(notification, format: :json)
diff --git a/app/views/devise/mailer/reset_password_instructions.html.erb b/app/views/devise/mailer/reset_password_instructions.html.erb
index f2aa6655c..3dd7d6672 100644
--- a/app/views/devise/mailer/reset_password_instructions.html.erb
+++ b/app/views/devise/mailer/reset_password_instructions.html.erb
@@ -1,7 +1,7 @@
-
Bonjour,
+
Hi,
-
Quelqu'un a demandé un lien pour changer votre mot de passe. Vous pouvez le faire via le lien ci-dessous.
+
Someone asked a link to change your password. You can do this via the link below.
-
<%= link_to 'Changer mon mot de passe', "#{root_url}#!/?reset_password_token=#{@token}" %>
+
<%= link_to 'Change my password', "#{root_url}#!/?reset_password_token=#{@token}" %>
-
Si vous n'avez pas demandé cela, merci d'ignorer ce message.
+
If you did not request this, thank you ignore this message.
L’équipe du Fab Lab vient de vous créer un compte sur <%= link_to 'le site du Fab lab', root_url %> Voici vos paramètres de connexion :
+
The FabLab team has created an account on www.xinfab.com. <%= link_to 'www.xinfab.com', root_url %> Here is your connection settings :
-
Nom de compte : <%= @user.email %>
-
Mot de passe : <%= @generated_password %>
+
Username : <%= @user.email %>
+
Password : <%= @generated_password %>
-
Ce mot de passe est temporaire, vous pourrez le modifier en accédant à l’espace « Mon compte ». Avec ce compte, vous conservez bien entendu tous les avantages liés à votre profil utilisateur Fab Lab (abonnement, formations).
+
This password is temporary, you can change it by accessing the "My Account". With this account, you retain all the benefits of course related to your user profile Fab Lab (subscription, training).
-
L'équipe Fab Lab.
\ No newline at end of file
+
The team Fablab XinFab.
\ No newline at end of file
diff --git a/config/application.rb b/config/application.rb
index 6c1a4b534..a75cbe10b 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -23,11 +23,11 @@ module Fablab
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
- config.time_zone = 'Paris'
+ config.time_zone = 'Beijing'
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
- config.i18n.default_locale = :fr
+ config.i18n.default_locale = :en
config.assets.paths << Rails.root.join('vendor', 'assets', 'components').to_s
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index ac9ff4b42..7266e3b54 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -9,10 +9,10 @@ fr:
failure:
already_authenticated: Vous êtes déjà connecté(e).
inactive: Votre compte n’est pas encore activé.
- invalid: E-mail ou mot de passe incorrect.
+ invalid: Incorrect Email or password.
invalid_token: Jeton d'authentification incorrect.
locked: Votre compte est verrouillé.
- not_found_in_database: E-mail ou mot de passe incorrect.
+ not_found_in_database: Incorrect Email or password.
timeout: Votre session est périmée, veuillez vous reconnecter pour continuer.
unauthenticated: Vous devez vous connecter ou vous enregistrer pour continuer.
unconfirmed: Vous devez confirmer votre compte par e-mail.
@@ -67,7 +67,7 @@ fr:
signed_in: Connecté(e) avec succès.
signed_out: Déconnecté(e) avec succès.
new:
- sign_in: Connexion
+ sign_in: Login
remember: Se souvenir de moi
unlocks:
send_instructions: Vous allez recevoir un e-mail sous quelques minutes contenant les instructions nécessaires au déblocage de votre compte.
@@ -80,9 +80,9 @@ fr:
didn_t_receive_confirmation_instructions: Vous n’avez pas reçu l’e-mail de confirmation ?
didn_t_receive_unlock_instructions: Vous n’avez pas reçu l’e-mail de débloquage ?
forgot_your_password: Mot de passe oublié ?
- sign_in: Connexion
+ sign_in: Login
sign_in_with_provider: Connexion avec %{provider}
- sign_up: Créer un compte
+ sign_up: Create an account
errors:
messages:
already_confirmed: a déjà été confirmé(e)
diff --git a/db/seeds.rb b/db/seeds.rb
index 0dc75ab81..f2476a06b 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -5,15 +5,15 @@
if Group.count == 0
Group.create!([
- {name: "standard, association"},
- {name: "étudiant, - de 25 ans, enseignant, demandeur d'emploi"},
- {name: "artisan, commerçant, chercheur, auto-entrepreneur"},
- {name: "PME, PMI, SARL, SA"}
+ {name: "standard, membership"},
+ {name: "student - 25 years, teachers, unemployed"},
+ {name: "artisan, trader, researcher, entrepreneur"},
+ {name: "Company"}
])
end
-if User.find_by(email: "admin@fabmanager.com").nil?
- admin = User.new(username: 'admin', email: 'admin@fabmanager.com', password: 'adminadmin', password_confirmation: 'adminadmin', group_id: Group.first.id,
+if User.find_by(email: "admin@xinfab.com").nil?
+ admin = User.new(username: 'admin', email: 'admin@xinfab.com', password: 'adminadmin', password_confirmation: 'adminadmin', group_id: Group.first.id,
profile_attributes: {first_name: 'Admin', last_name: 'Admin', gender: true, phone: '0000000000', birthday: Time.now})
#admin.skip_confirmation!
admin.add_role "admin"
@@ -23,15 +23,15 @@ end
if Component.count == 0
Component.create!([
{name: "Silicone"},
- {name: "Vinyle"},
- {name: "Bois Contre plaqué"},
- {name: "Bois Medium"},
+ {name: "Vinyl"},
+ {name: "Plywood"},
+ {name: "Wood"},
{name: "Plexi / PMMA"},
{name: "Flex"},
{name: "Vinyle"},
- {name: "Parafine"},
- {name: "Fibre de verre"},
- {name: "Résine"}
+ {name: "Paraffin"},
+ {name: "Fiberglass"},
+ {name: "Resin"}
])
end
@@ -48,29 +48,29 @@ end
if Theme.count == 0
Theme.create!([
- {name: "Vie quotidienne"},
- {name: "Robotique"},
- {name: "Arduine"},
- {name: "Capteurs"},
- {name: "Musique"},
+ {name: "Daily life"},
+ {name: "Robotics"},
+ {name: "Arduino"},
+ {name: "Sensors"},
+ {name: "Music"},
{name: "Sport"},
- {name: "Autre"}
+ {name: "other"}
])
end
if Machine.count == 0
Machine.create!([
- {name: "Découpeuse laser", description: "Préparation à l'utilisation de l'EPILOG Legend 36EXT\r\nInformations générales \r\n Pour la découpe, il suffit d'apporter votre fichier vectorisé type illustrator, svg ou dxf avec des \"lignes de coupe\" d'une épaisseur inférieur à 0,01 mm et la machine s'occupera du reste!\r\n La gravure est basée sur le spectre noir et blanc. Les nuances sont obtenues par différentes profondeurs de gravure correspondant aux niveaux de gris de votre image. Il suffit pour cela d'apporter une image scannée ou un fichier photo en noir et blanc pour pouvoir reproduire celle-ci sur votre support! \r\nQuels types de matériaux pouvons nous graver/découper?\r\n Du bois au tissu, du plexiglass au cuir, cette machine permet de découper et graver la plupart des matériaux sauf les métaux. La gravure est néanmoins possible sur les métaux recouverts d'une couche de peinture ou les aluminiums anodisés. \r\n Concernant l'épaisseur des matériaux découpés, il est préférable de ne pas dépasser 5 mm pour le bois et 6 mm pour le plexiglass.\r\n", spec: "Puissance: 40W\r\nSurface de travail: 914x609 mm \r\nEpaisseur maximale de la matière: 305mm\r\nSource laser: tube laser type CO2\r\nContrôles de vitesse et de puissance: ces deux paramètres sont ajustables en fonction du matériau (de 1% à 100%) .\r\n", slug: "decoupeuse-laser"},
- {name: "Découpeuse vinyle", description: "Préparation à l'utilisation de la Roland CAMM-1 GX24\r\nInformations générales \r\n Envie de réaliser un tee shirt personnalisé ? Un sticker à l'effigie votre groupe préféré? Un masque pour la réalisation d'un circuit imprimé? Pour cela, il suffit simplement de venir avec votre fichier vectorisé (ne pas oublier de vectoriser les textes) type illustrator svg ou dxf.\r\n \r\nMatériaux utilisés:\r\n Cette machine permet de découper principalement du vinyle,vinyle réfléchissant, flex.\r\n", spec: "Largeurs de support acceptées: de 50 mm à 700 mm\r\nVitesse de découpe: 50 cm/sec\r\nRésolution mécanique: 0,0125 mm/pas\r\n", slug: "decoupeuse-vinyle"},
- {name: "Shopbot / Grande fraiseuse", description: "La fraiseuse numérique ShopBot PRS standard\r\nInformations générales\r\nCette machine est un fraiseuse 3 axes idéale pour l'usinage de pièces de grandes dimensions. De la réalisation d'une chaise ou d'un meuble jusqu'à la construction d'une maison ou d'un assemblage immense, le ShopBot ouvre de nombreuses portes à votre imagination! \r\nMatériaux usinables\r\nLes principaux matériaux usinables sont le bois, le plastique, le laiton et bien d'autres.\r\nCette machine n'usine pas les métaux.\r\n", spec: "Surface maximale de travail: 2440x1220x150 (Z) mm\r\nLogiciel utilisé: Partworks 2D & 3D\r\nRésolution mécanique: 0,015 mm\r\nPrécision de la position: +/- 0,127mm\r\nFormats acceptés: DXF, STL \r\n", slug: "shopbot-grande-fraiseuse"},
- {name: "Imprimante 3D", description: "L'utimaker est une imprimante 3D low cost utilisant une technologie FFF (Fused Filament Fabrication) avec extrusion thermoplastique.\r\nC'est une machine idéale pour réaliser rapidement des prototypes 3D dans des couleurs différentes.\r\n", spec: "Surface maximale de travail: 210x210x220mm \r\nRésolution méchanique: 0,02 mm \r\nPrécision de position: +/- 0,05 \r\nLogiciel utilisé: Cura\r\nFormats de fichier acceptés: STL \r\nMatériaux utilisés: PLA (en stock).", slug: "imprimante-3d"},
- {name: "Petite Fraiseuse", description: "La fraiseuse numérique Roland Modela MDX-20\r\nInformations générales\r\nCette machine est utilisée pour l'usinage et le scannage 3D de précision. Elle permet principalement d'usiner des circuits imprimés et des moules de petite taille. Le faible diamètre des fraises utilisées (Ø 0,3 mm à Ø 6mm) induit que certains temps d'usinages peuvent êtres long (> 12h), c'est pourquoi cette fraiseuse peut être laissée en autonomie toute une nuit afin d'obtenir le plus précis des usinages au FabLab.\r\nMatériaux usinables:\r\nLes principaux matériaux usinables sont le bois, plâtre, résine, cire usinable, cuivre.\r\n", spec: "Taille du plateau X/Y : 220 mm x 160 mm\r\nVolume maximal de travail: 203,2 mm (X), 152,4 mm (Y), 60,5 mm (Z)\r\nPrécision usinage: 0,00625 mm\r\nPrécision scannage: réglable de 0,05 à 5 mm (axes X,Y) et 0,025 mm (axe Z)\r\nVitesse d'analyse (scannage): 4-15 mm/sec\r\n \r\n \r\nLogiciel utilisé pour le fraisage: Roland Modela player 4 \r\nLogiciel utilisé pour l'usinage de circuits imprimés: Cad.py (linux)\r\nFormats acceptés: STL,PNG 3D\r\nFormat d'exportation des données scannées: DXF, VRML, STL, 3DMF, IGES, Grayscale, Point Group et BMP\r\n", slug: "petite-fraiseuse"}
+ {name: "Laser cutter", description: "Préparation à l'utilisation de l'EPILOG Legend 36EXT\r\nInformations générales \r\n Pour la découpe, il suffit d'apporter votre fichier vectorisé type illustrator, svg ou dxf avec des \"lignes de coupe\" d'une épaisseur inférieur à 0,01 mm et la machine s'occupera du reste!\r\n La gravure est basée sur le spectre noir et blanc. Les nuances sont obtenues par différentes profondeurs de gravure correspondant aux niveaux de gris de votre image. Il suffit pour cela d'apporter une image scannée ou un fichier photo en noir et blanc pour pouvoir reproduire celle-ci sur votre support! \r\nQuels types de matériaux pouvons nous graver/découper?\r\n Du bois au tissu, du plexiglass au cuir, cette machine permet de découper et graver la plupart des matériaux sauf les métaux. La gravure est néanmoins possible sur les métaux recouverts d'une couche de peinture ou les aluminiums anodisés. \r\n Concernant l'épaisseur des matériaux découpés, il est préférable de ne pas dépasser 5 mm pour le bois et 6 mm pour le plexiglass.\r\n", spec: "Puissance: 40W\r\nSurface de travail: 914x609 mm \r\nEpaisseur maximale de la matière: 305mm\r\nSource laser: tube laser type CO2\r\nContrôles de vitesse et de puissance: ces deux paramètres sont ajustables en fonction du matériau (de 1% à 100%) .\r\n", slug: "decoupeuse-laser"},
+ {name: "Vinyl cutter", description: "Préparation à l'utilisation de la Roland CAMM-1 GX24\r\nInformations générales \r\n Envie de réaliser un tee shirt personnalisé ? Un sticker à l'effigie votre groupe préféré? Un masque pour la réalisation d'un circuit imprimé? Pour cela, il suffit simplement de venir avec votre fichier vectorisé (ne pas oublier de vectoriser les textes) type illustrator svg ou dxf.\r\n \r\nMatériaux utilisés:\r\n Cette machine permet de découper principalement du vinyle,vinyle réfléchissant, flex.\r\n", spec: "Largeurs de support acceptées: de 50 mm à 700 mm\r\nVitesse de découpe: 50 cm/sec\r\nRésolution mécanique: 0,0125 mm/pas\r\n", slug: "decoupeuse-vinyle"},
+ {name: "Shopbot / Milling", description: "La fraiseuse numérique ShopBot PRS standard\r\nInformations générales\r\nCette machine est un fraiseuse 3 axes idéale pour l'usinage de pièces de grandes dimensions. De la réalisation d'une chaise ou d'un meuble jusqu'à la construction d'une maison ou d'un assemblage immense, le ShopBot ouvre de nombreuses portes à votre imagination! \r\nMatériaux usinables\r\nLes principaux matériaux usinables sont le bois, le plastique, le laiton et bien d'autres.\r\nCette machine n'usine pas les métaux.\r\n", spec: "Surface maximale de travail: 2440x1220x150 (Z) mm\r\nLogiciel utilisé: Partworks 2D & 3D\r\nRésolution mécanique: 0,015 mm\r\nPrécision de la position: +/- 0,127mm\r\nFormats acceptés: DXF, STL \r\n", slug: "shopbot-grande-fraiseuse"},
+ {name: "3D Printer", description: "L'utimaker est une imprimante 3D low cost utilisant une technologie FFF (Fused Filament Fabrication) avec extrusion thermoplastique.\r\nC'est une machine idéale pour réaliser rapidement des prototypes 3D dans des couleurs différentes.\r\n", spec: "Surface maximale de travail: 210x210x220mm \r\nRésolution méchanique: 0,02 mm \r\nPrécision de position: +/- 0,05 \r\nLogiciel utilisé: Cura\r\nFormats de fichier acceptés: STL \r\nMatériaux utilisés: PLA (en stock).", slug: "imprimante-3d"},
+ {name: "Small milling machine", description: "La fraiseuse numérique Roland Modela MDX-20\r\nInformations générales\r\nCette machine est utilisée pour l'usinage et le scannage 3D de précision. Elle permet principalement d'usiner des circuits imprimés et des moules de petite taille. Le faible diamètre des fraises utilisées (Ø 0,3 mm à Ø 6mm) induit que certains temps d'usinages peuvent êtres long (> 12h), c'est pourquoi cette fraiseuse peut être laissée en autonomie toute une nuit afin d'obtenir le plus précis des usinages au FabLab.\r\nMatériaux usinables:\r\nLes principaux matériaux usinables sont le bois, plâtre, résine, cire usinable, cuivre.\r\n", spec: "Taille du plateau X/Y : 220 mm x 160 mm\r\nVolume maximal de travail: 203,2 mm (X), 152,4 mm (Y), 60,5 mm (Z)\r\nPrécision usinage: 0,00625 mm\r\nPrécision scannage: réglable de 0,05 à 5 mm (axes X,Y) et 0,025 mm (axe Z)\r\nVitesse d'analyse (scannage): 4-15 mm/sec\r\n \r\n \r\nLogiciel utilisé pour le fraisage: Roland Modela player 4 \r\nLogiciel utilisé pour l'usinage de circuits imprimés: Cad.py (linux)\r\nFormats acceptés: STL,PNG 3D\r\nFormat d'exportation des données scannées: DXF, VRML, STL, 3DMF, IGES, Grayscale, Point Group et BMP\r\n", slug: "petite-fraiseuse"}
])
end
if Category.count == 0
Category.create!([
- {name: "Stage"},
- {name: "Atelier"}
+ {name: "Course"},
+ {name: "Workshop"}
])
end
diff --git a/vendor/assets/components/select2/select2_locale_fr.js b/vendor/assets/components/select2/select2_locale_fr.js
index 9afda2abd..d02414e8e 100644
--- a/vendor/assets/components/select2/select2_locale_fr.js
+++ b/vendor/assets/components/select2/select2_locale_fr.js
@@ -5,9 +5,9 @@
"use strict";
$.extend($.fn.select2.defaults, {
- formatMatches: function (matches) { return matches + " résultats sont disponibles, utilisez les flèches haut et bas pour naviguer."; },
- formatNoMatches: function () { return "Aucun résultat trouvé"; },
- formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1 ? "" : "s") + " de plus"; },
+ formatMatches: function (matches) { return matches + " results are available, use the up and down arrows to navigate."; },
+ formatNoMatches: function () { return "No result found"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Thank You " + n + " character" + (n == 1 ? "" : "s") + " de plus"; },
formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1 ? "" : "s"); },
formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); },
formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires…"; },