lato 3.13.10 → 3.13.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 815bb28a8afbb532e9d57bdbd886843d184f5c22774f7f3391c579f4f5758244
|
4
|
+
data.tar.gz: b39324de3225faf3848d02d31a8b2b08f61388608361cd51882f7721f5467d10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a38c001ac6f0fc1005296ed69ad956ace666f6466f4a4a63eed759e9cae6c57cf0a73233f3af009919a4cccd94125ed5a5c00e51a74090356cedc467710ae194
|
7
|
+
data.tar.gz: 46d415ce076c4f6b7f3e9255a9882b072e68c7d08e8d693c2310a98f6230692ecde17b82499857e798cd1f8b85bc1022169a6078decb19d88761b5da4044206f
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/lato)
|
4
4
|
|
5
|
-
Lato is a Rails Engine
|
5
|
+
Lato is a Rails Engine that offers a comprehensive web application starter kit with user management, authentication, and UI components for [Ruby on Rails](https://rubyonrails.org/).
|
6
6
|
|
7
7
|
This gem includes:
|
8
8
|
- User management with **full authentication system** (signin, signup, recover password, email validation, Google Authenticator multi-factor authentication, ETH wallet connection) and **account management** (user settings, password change, email change, etc.);
|
@@ -86,7 +86,7 @@ export default class extends Controller {
|
|
86
86
|
suggestShow(data = []) {
|
87
87
|
if (this.optionsList) this.optionsList.remove()
|
88
88
|
this.optionsList = document.createElement('ul')
|
89
|
-
this.optionsList.classList.add('list-group')
|
89
|
+
this.optionsList.classList.add('list-group', 'border')
|
90
90
|
this.optionsList.style.position = 'fixed'
|
91
91
|
this.optionsList.style.width = this.element.offsetWidth + 'px'
|
92
92
|
this.optionsList.style.maxHeight = '200px'
|
@@ -127,6 +127,14 @@ export default class extends Controller {
|
|
127
127
|
if (this.optionsList) this.optionsList.remove()
|
128
128
|
}
|
129
129
|
|
130
|
+
suggestReposition() {
|
131
|
+
if (!this.optionsList) return
|
132
|
+
|
133
|
+
const elementRect = this.element.getBoundingClientRect()
|
134
|
+
this.optionsList.style.top = elementRect.bottom + 'px'
|
135
|
+
this.optionsList.style.left = elementRect.left + 'px'
|
136
|
+
}
|
137
|
+
|
130
138
|
async setDefaultElementValue() {
|
131
139
|
try {
|
132
140
|
const url = new URL(this.pathValue, window.location.origin)
|
@@ -146,10 +154,10 @@ export default class extends Controller {
|
|
146
154
|
}
|
147
155
|
|
148
156
|
onWindowScroll(event) {
|
149
|
-
this.
|
157
|
+
this.suggestReposition()
|
150
158
|
}
|
151
159
|
|
152
160
|
onWindowResize(event) {
|
153
|
-
this.
|
161
|
+
this.suggestReposition()
|
154
162
|
}
|
155
163
|
}
|
@@ -1,17 +1,26 @@
|
|
1
|
-
<% if
|
2
|
-
<%= lato_navbar_nav_item :
|
3
|
-
|
1
|
+
<% if params[:generate_docs] %>
|
2
|
+
<%= lato_navbar_nav_item :tutorial, main_app.tutorial_path do %>
|
3
|
+
Tutorial
|
4
4
|
<% end %>
|
5
|
-
<%= lato_navbar_nav_item :
|
6
|
-
|
5
|
+
<%= lato_navbar_nav_item :github, 'https://github.com/Lato-org/lato' do %>
|
6
|
+
Github
|
7
7
|
<% end %>
|
8
8
|
<% else %>
|
9
|
-
|
10
|
-
<%=
|
9
|
+
<% if @session.valid? %>
|
10
|
+
<%= lato_navbar_nav_item :account, lato.account_path do %>
|
11
|
+
<%= I18n.t('lato.account') %>
|
12
|
+
<% end %>
|
13
|
+
<%= lato_navbar_nav_item :authentication_logout, lato.authentication_signout_path do %>
|
14
|
+
<%= I18n.t('lato.signout') %>
|
15
|
+
<% end %>
|
16
|
+
<% else %>
|
17
|
+
<%= lato_navbar_nav_item :authentication_signin, lato.authentication_signin_path do %>
|
18
|
+
<%= I18n.t('lato.signin') %>
|
19
|
+
<% end %>
|
20
|
+
<%= lato_navbar_nav_item :authentication_signup, lato.authentication_signup_path do %>
|
21
|
+
<%= I18n.t('lato.signup') %>
|
22
|
+
<% end %>
|
11
23
|
<% end %>
|
12
|
-
<%= lato_navbar_nav_item :authentication_signup, lato.authentication_signup_path do %>
|
13
|
-
<%= I18n.t('lato.signup') %>
|
14
|
-
<% end %>
|
15
|
-
<% end %>
|
16
24
|
|
17
|
-
<%= lato_navbar_nav_locales_item(flag: true) %>
|
25
|
+
<%= lato_navbar_nav_locales_item(flag: true) %>
|
26
|
+
<% end %>
|
@@ -0,0 +1,349 @@
|
|
1
|
+
# Start from: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/fr.yml
|
2
|
+
|
3
|
+
fr:
|
4
|
+
lato:
|
5
|
+
account: Compte
|
6
|
+
signout: Déconnexion
|
7
|
+
signin: Connexion
|
8
|
+
signup: Inscription
|
9
|
+
forgot_your_password?: Mot de passe oublié ?
|
10
|
+
already_have_an_account?: Vous avez déjà un compte ?
|
11
|
+
or: Ou
|
12
|
+
create_free_account: Créer un compte gratuit
|
13
|
+
privacy_policy: Politique de confidentialité
|
14
|
+
privacy_policy_checkbox: Je déclare avoir lu et accepté la %{link}
|
15
|
+
terms_and_conditions: Conditions générales
|
16
|
+
terms_and_conditions_checkbox: Je déclare avoir lu et accepté les %{link} d'utilisation
|
17
|
+
recover_password: Récupérer le mot de passe
|
18
|
+
next: Suivant
|
19
|
+
cancel: Annuler
|
20
|
+
back_to_login: Retour à la connexion
|
21
|
+
there_are_some_errors: Les erreurs suivantes se sont produites
|
22
|
+
update_password: Mise à jour du mot de passe
|
23
|
+
confirm: Confirmer
|
24
|
+
search: Rechercher
|
25
|
+
search_for: Recherche par
|
26
|
+
total_results: Résultats totaux
|
27
|
+
account_informations: Informations du compte
|
28
|
+
verify_email: Vérifier l'email
|
29
|
+
email_verified: Vérifié
|
30
|
+
update: Mettre à jour
|
31
|
+
new_password: Nouveau mot de passe
|
32
|
+
confirm_new_password: Confirmer le nouveau mot de passe
|
33
|
+
account_delete: Suppression du compte
|
34
|
+
warning: Attention
|
35
|
+
account_delete_details: En supprimant votre compte, <b>toutes les données associées seront définitivement supprimées</b>.<br>Après confirmation, il ne sera plus possible de récupérer les informations perdues.
|
36
|
+
account_delete_guide: Saisissez votre adresse e-mail d'inscription et cliquez sur "Supprimer le compte" pour continuer.
|
37
|
+
account_delete_confirm: Supprimer le compte
|
38
|
+
signup_email: Adresse e-mail d'inscription
|
39
|
+
signout_confirmation_request: "%{user}, êtes-vous sûr de vouloir vous déconnecter de votre compte ?"
|
40
|
+
recover_password_code: Code reçu par e-mail
|
41
|
+
operation_completed: Opération terminée
|
42
|
+
operation_failed: Échec de l'opération
|
43
|
+
privacy_policy_update_title: Mise à jour de la politique de confidentialité
|
44
|
+
terms_and_conditions_update_title: Mise à jour des conditions générales
|
45
|
+
accept_invitation: Accepter l'invitation
|
46
|
+
account_web3: Connexion Web3
|
47
|
+
account_web3_start_title: Connectez votre portefeuille
|
48
|
+
account_web3_start_description: Connectez votre portefeuille web3 en cliquant sur le bouton ci-dessous et en signant le message.<br>Cela vous permettra d'utiliser la plateforme sans avoir à saisir votre mot de passe.
|
49
|
+
connect_wallet: Connecter le portefeuille
|
50
|
+
disconnect_wallet: Déconnecter
|
51
|
+
connected_wallet: Connecté
|
52
|
+
web3_signin: Connexion avec Web3
|
53
|
+
retry: Réessayer
|
54
|
+
back: Retour
|
55
|
+
account_authenticator: Google Authenticator
|
56
|
+
account_authenticator_start_title: Activer Google Authenticator
|
57
|
+
account_authenticator_start_description: Générez un code QR en cliquant sur le bouton ci-dessous et scannez-le avec l'application Google Authenticator sur votre téléphone.<br>Cela vous permettra de protéger votre compte avec une authentification à deux facteurs.
|
58
|
+
account_authenticator_ready_qr: Scannez le code QR avec l'application Google Authenticator pour activer la protection de votre compte avec une authentification à deux facteurs.
|
59
|
+
generate_qr_code: Générer un code QR
|
60
|
+
cancel_authenticator: Déconnecter
|
61
|
+
authenticator: Authentification à deux facteurs
|
62
|
+
authenticator_code_help: Saisissez le code généré par l'application Google Authenticator pour le compte <b>%{email}</b>
|
63
|
+
reset_password: Réinitialisez votre mot de passe
|
64
|
+
per_page: Par page
|
65
|
+
per_page_description: Éléments par page
|
66
|
+
confirm_title: Confirmation
|
67
|
+
confirm_yes: Oui, confirmer
|
68
|
+
confirm_no: Non, annuler
|
69
|
+
operation_title: Opération en cours
|
70
|
+
operation_subtitle: Veuillez patienter...
|
71
|
+
operation_completed_title: Opération terminée
|
72
|
+
operation_completed_subtitle: L'opération a été réalisée avec succès
|
73
|
+
operation_failed_title: Échec de l'opération
|
74
|
+
operation_failed_subtitle: Une erreur s'est produite lors de l'opération
|
75
|
+
|
76
|
+
invitation_mailer:
|
77
|
+
invite_mail_subject: Vous avez reçu une invitation
|
78
|
+
user_mailer:
|
79
|
+
email_verification_mail_subject: Confirmez votre adresse e-mail
|
80
|
+
password_update_mail_subject: Définissez un nouveau mot de passe
|
81
|
+
signin_success_mail_subject: Nouvelle connexion à votre compte
|
82
|
+
|
83
|
+
account_controller:
|
84
|
+
update_user_action_notice: Informations du compte mises à jour avec succès
|
85
|
+
request_verify_email_action_notice: Nous vous avons envoyé un e-mail avec les étapes à suivre pour terminer la procédure
|
86
|
+
update_password_action_notice: Mot de passe mis à jour avec succès
|
87
|
+
authentication_controller:
|
88
|
+
verify_email_action_notice: Adresse e-mail vérifiée avec succès
|
89
|
+
update_password_action_notice: Votre mot de passe a été mis à jour avec succès
|
90
|
+
|
91
|
+
activerecord:
|
92
|
+
attributes:
|
93
|
+
lato/user:
|
94
|
+
first_name: Prénom
|
95
|
+
last_name: Nom
|
96
|
+
password_confirmation: Confirmation du mot de passe
|
97
|
+
email: E-mail
|
98
|
+
accepted_privacy_policy_version: Politique de confidentialité
|
99
|
+
accepted_terms_and_conditions_version: Conditions générales
|
100
|
+
errors:
|
101
|
+
messages:
|
102
|
+
record_invalid: 'Validation échouée : %{errors}'
|
103
|
+
restrict_dependent_destroy:
|
104
|
+
has_one: L'enregistrement ne peut pas être supprimé car il existe un %{record} dépendant
|
105
|
+
has_many: L'enregistrement ne peut pas être supprimé car il existe des %{record} dépendants
|
106
|
+
models:
|
107
|
+
lato/user:
|
108
|
+
attributes:
|
109
|
+
base:
|
110
|
+
email_sending_error: Impossible d'envoyer l'e-mail
|
111
|
+
email_verification_limit: Veuillez attendre au moins 2 minutes avant de réessayer la vérification de l'e-mail
|
112
|
+
email_verification_code_expired: Le code de vérification de l'e-mail a expiré
|
113
|
+
email_verification_code_invalid: Le code de vérification de l'e-mail n'est pas valide
|
114
|
+
password_update_code_expired: Le code de vérification a expiré
|
115
|
+
password_update_code_invalid: Le code de vérification n'est pas valide
|
116
|
+
privacy_policy_invalid: Pour accepter la politique de confidentialité, vous devez cocher la case de confirmation
|
117
|
+
terms_and_conditions_invalid: Pour accepter les conditions générales, vous devez cocher la case de confirmation
|
118
|
+
invitation_invalid: Invitation non valide
|
119
|
+
web3_address_invalid: L'adresse envoyée n'est pas correctement signée
|
120
|
+
web3_connection_error: Impossible de connecter le portefeuille
|
121
|
+
authenticator_code_invalid: Le code saisi n'est pas correct
|
122
|
+
password:
|
123
|
+
not_correct: incorrect
|
124
|
+
password_confirmation:
|
125
|
+
confirmation: ne correspond pas au mot de passe
|
126
|
+
email:
|
127
|
+
taken: déjà utilisé par un autre compte
|
128
|
+
not_registered: non enregistrée
|
129
|
+
not_correct: incorrect
|
130
|
+
accepted_privacy_policy_version:
|
131
|
+
inclusion: non acceptée
|
132
|
+
accepted_terms_and_conditions_version:
|
133
|
+
inclusion: non acceptées
|
134
|
+
web3_address:
|
135
|
+
not_correct: incorrect
|
136
|
+
lato/invitation:
|
137
|
+
attributes:
|
138
|
+
base:
|
139
|
+
already_accepted: Invitation déjà acceptée par l'utilisateur
|
140
|
+
email_sending_error: Impossible d'envoyer l'e-mail
|
141
|
+
email_sending_limit: Veuillez attendre au moins 2 minutes avant de réessayer d'envoyer une invitation
|
142
|
+
|
143
|
+
|
144
|
+
date:
|
145
|
+
abbr_day_names:
|
146
|
+
- dim
|
147
|
+
- lun
|
148
|
+
- mar
|
149
|
+
- mer
|
150
|
+
- jeu
|
151
|
+
- ven
|
152
|
+
- sam
|
153
|
+
abbr_month_names:
|
154
|
+
-
|
155
|
+
- janv
|
156
|
+
- févr
|
157
|
+
- mars
|
158
|
+
- avr
|
159
|
+
- mai
|
160
|
+
- juin
|
161
|
+
- juil
|
162
|
+
- août
|
163
|
+
- sept
|
164
|
+
- oct
|
165
|
+
- nov
|
166
|
+
- déc
|
167
|
+
day_names:
|
168
|
+
- dimanche
|
169
|
+
- lundi
|
170
|
+
- mardi
|
171
|
+
- mercredi
|
172
|
+
- jeudi
|
173
|
+
- vendredi
|
174
|
+
- samedi
|
175
|
+
formats:
|
176
|
+
default: "%d/%m/%Y"
|
177
|
+
long: "%d %B %Y"
|
178
|
+
short: "%d %b"
|
179
|
+
month_names:
|
180
|
+
-
|
181
|
+
- janvier
|
182
|
+
- février
|
183
|
+
- mars
|
184
|
+
- avril
|
185
|
+
- mai
|
186
|
+
- juin
|
187
|
+
- juillet
|
188
|
+
- août
|
189
|
+
- septembre
|
190
|
+
- octobre
|
191
|
+
- novembre
|
192
|
+
- décembre
|
193
|
+
order:
|
194
|
+
- :day
|
195
|
+
- :month
|
196
|
+
- :year
|
197
|
+
datetime:
|
198
|
+
distance_in_words:
|
199
|
+
about_x_hours:
|
200
|
+
one: environ une heure
|
201
|
+
other: environ %{count} heures
|
202
|
+
about_x_months:
|
203
|
+
one: environ un mois
|
204
|
+
other: environ %{count} mois
|
205
|
+
about_x_years:
|
206
|
+
one: environ un an
|
207
|
+
other: environ %{count} ans
|
208
|
+
almost_x_years:
|
209
|
+
one: presque un an
|
210
|
+
other: presque %{count} ans
|
211
|
+
half_a_minute: une demi-minute
|
212
|
+
less_than_x_seconds:
|
213
|
+
one: moins d'une seconde
|
214
|
+
other: moins de %{count} secondes
|
215
|
+
less_than_x_minutes:
|
216
|
+
one: moins d'une minute
|
217
|
+
other: moins de %{count} minutes
|
218
|
+
over_x_years:
|
219
|
+
one: plus d'un an
|
220
|
+
other: plus de %{count} ans
|
221
|
+
x_seconds:
|
222
|
+
one: 1 seconde
|
223
|
+
other: "%{count} secondes"
|
224
|
+
x_minutes:
|
225
|
+
one: 1 minute
|
226
|
+
other: "%{count} minutes"
|
227
|
+
x_days:
|
228
|
+
one: 1 jour
|
229
|
+
other: "%{count} jours"
|
230
|
+
x_months:
|
231
|
+
one: 1 mois
|
232
|
+
other: "%{count} mois"
|
233
|
+
x_years:
|
234
|
+
one: 1 an
|
235
|
+
other: "%{count} ans"
|
236
|
+
prompts:
|
237
|
+
second: Seconde
|
238
|
+
minute: Minute
|
239
|
+
hour: Heure
|
240
|
+
day: Jour
|
241
|
+
month: Mois
|
242
|
+
year: Année
|
243
|
+
errors:
|
244
|
+
format: "%{attribute} %{message}"
|
245
|
+
messages:
|
246
|
+
accepted: doit être accepté
|
247
|
+
blank: ne peut pas être vide
|
248
|
+
confirmation: ne correspond pas à %{attribute}
|
249
|
+
empty: ne peut pas être vide
|
250
|
+
equal_to: doit être égal à %{count}
|
251
|
+
even: doit être pair
|
252
|
+
exclusion: est réservé
|
253
|
+
greater_than: doit être supérieur à %{count}
|
254
|
+
greater_than_or_equal_to: doit être supérieur ou égal à %{count}
|
255
|
+
inclusion: n'est pas inclus dans la liste
|
256
|
+
invalid: n'est pas valide
|
257
|
+
less_than: doit être inférieur à %{count}
|
258
|
+
less_than_or_equal_to: doit être inférieur ou égal à %{count}
|
259
|
+
model_invalid: 'Validation échouée : %{errors}'
|
260
|
+
not_a_number: n'est pas un nombre
|
261
|
+
not_an_integer: n'est pas un entier
|
262
|
+
odd: doit être impair
|
263
|
+
other_than: doit être différent de %{count}
|
264
|
+
present: doit être vide
|
265
|
+
required: doit exister
|
266
|
+
taken: est déjà pris
|
267
|
+
too_long:
|
268
|
+
one: est trop long (maximum 1 caractère)
|
269
|
+
other: est trop long (maximum %{count} caractères)
|
270
|
+
too_short:
|
271
|
+
one: est trop court (minimum 1 caractère)
|
272
|
+
other: est trop court (minimum %{count} caractères)
|
273
|
+
wrong_length:
|
274
|
+
one: n'a pas la bonne longueur (doit être de 1 caractère)
|
275
|
+
other: n'a pas la bonne longueur (doit être de %{count} caractères)
|
276
|
+
template:
|
277
|
+
body: 'Vérifiez les champs suivants :'
|
278
|
+
header:
|
279
|
+
one: 'Impossible d’enregistrer ce %{model} : 1 erreur'
|
280
|
+
other: 'Impossible d’enregistrer ce %{model} : %{count} erreurs.'
|
281
|
+
helpers:
|
282
|
+
select:
|
283
|
+
prompt: Sélectionner...
|
284
|
+
submit:
|
285
|
+
create: Créer %{model}
|
286
|
+
submit: Envoyer %{model}
|
287
|
+
update: Mettre à jour %{model}
|
288
|
+
number:
|
289
|
+
currency:
|
290
|
+
format:
|
291
|
+
delimiter: " "
|
292
|
+
format: "%n %u"
|
293
|
+
precision: 2
|
294
|
+
separator: ","
|
295
|
+
significant: false
|
296
|
+
strip_insignificant_zeros: false
|
297
|
+
unit: "€"
|
298
|
+
format:
|
299
|
+
delimiter: " "
|
300
|
+
precision: 2
|
301
|
+
separator: ","
|
302
|
+
significant: false
|
303
|
+
strip_insignificant_zeros: false
|
304
|
+
human:
|
305
|
+
decimal_units:
|
306
|
+
format: "%n %u"
|
307
|
+
units:
|
308
|
+
billion: Milliards
|
309
|
+
million: Millions
|
310
|
+
quadrillion: Billiards
|
311
|
+
thousand: Mille
|
312
|
+
trillion: Billions
|
313
|
+
unit: ''
|
314
|
+
format:
|
315
|
+
delimiter: ''
|
316
|
+
precision: 3
|
317
|
+
significant: true
|
318
|
+
strip_insignificant_zeros: true
|
319
|
+
storage_units:
|
320
|
+
format: "%n %u"
|
321
|
+
units:
|
322
|
+
byte:
|
323
|
+
one: Octet
|
324
|
+
other: Octets
|
325
|
+
eb: Eo
|
326
|
+
gb: Go
|
327
|
+
kb: Ko
|
328
|
+
mb: Mo
|
329
|
+
pb: Po
|
330
|
+
tb: To
|
331
|
+
percentage:
|
332
|
+
format:
|
333
|
+
delimiter: ''
|
334
|
+
format: "%n%"
|
335
|
+
precision:
|
336
|
+
format:
|
337
|
+
delimiter: ''
|
338
|
+
support:
|
339
|
+
array:
|
340
|
+
last_word_connector: " et "
|
341
|
+
two_words_connector: " et "
|
342
|
+
words_connector: ", "
|
343
|
+
time:
|
344
|
+
am: am
|
345
|
+
formats:
|
346
|
+
default: "%a %d %b %Y, %H:%M:%S %z"
|
347
|
+
long: "%d %B %Y %H:%M"
|
348
|
+
short: "%d %b %H:%M"
|
349
|
+
pm: pm
|
data/lib/lato/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lato
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.13.
|
4
|
+
version: 3.13.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregorio Galante
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -254,6 +254,7 @@ files:
|
|
254
254
|
- app/views/layouts/lato/mailer.html.erb
|
255
255
|
- config/importmap.rb
|
256
256
|
- config/locales/en.yml
|
257
|
+
- config/locales/fr.yml
|
257
258
|
- config/locales/it.yml
|
258
259
|
- config/locales/ro.yml
|
259
260
|
- config/routes.rb
|