rodauth-i18n 0.2.1 → 0.4.0

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: d035217bfe2466bbd5b689d59b3469b15dfd9eb5b5b70ac00a2a6868c22108c2
4
- data.tar.gz: 1844d4468c69fe7e28704ad0bbcfd9c3c79a5b750bff23552a137a6e3f233a8d
3
+ metadata.gz: b0d8fc280f95fc131e22bffdd6e2882a687c1ab90e38875ac11c828f61dcb754
4
+ data.tar.gz: 7c606c3f81b7ffc60b79fa7b2b27c1844107127a565cdfd23424c1a0f6fdc6ff
5
5
  SHA512:
6
- metadata.gz: a3f3b650c95ee21371ac5f3c2e5cc068af598b16430890b5e695feac42ccbacef5523d3f31f4e571f71d8c4219dff1f8d1f754f4c77d2c0ea5692a6a4465642a
7
- data.tar.gz: 39cd36cc115f0e54c905c442b5c70971369245cd95901c6d191ac5221afff13ef34b033dd683fe0c90a03aa3c19656f774e49c16c096eb693a3ce341d06b210b
6
+ metadata.gz: e9c618f25473a572a92ba3b01c374da3cc92eef697234fff68e2625294583531a328c001e1555b1a6b8644323d3abf8d6573c2958d321057c7c46283f08cc58b
7
+ data.tar.gz: dc285a9aa1be1683918c931155673659b74a839bca8ded5e7590e119edc99ab8c2728565a5549fd6096c59096907c24919d90fa96d5e0cba96d4a2b925830dac
data/README.md CHANGED
@@ -9,7 +9,7 @@ It also includes built-in translations for various languages, which you are enco
9
9
  Add this line to your application's Gemfile:
10
10
 
11
11
  ```ruby
12
- gem "rodauth-i18n", "~> 0.2"
12
+ gem "rodauth-i18n", "~> 0.4"
13
13
  ```
14
14
 
15
15
  And then execute:
@@ -26,7 +26,7 @@ $ gem install rodauth-i18n
26
26
 
27
27
  ## Usage
28
28
 
29
- Enable the `i18n` feature in your Rodauth configuration:
29
+ Enable the `i18n` feature in your Rodauth configuration, which overrides Rodauth's `#translate` method to use the [I18n] gem.
30
30
 
31
31
  ```rb
32
32
  plugin :rodauth do
@@ -35,7 +35,7 @@ plugin :rodauth do
35
35
  end
36
36
  ```
37
37
 
38
- This will make translations go through the [I18n] gem, and will automatically load translations for locales specified in `I18n.available_locales` (if unset, translations for *all* locales will be loaded).
38
+ Enabling the feature will automatically load built-in translations for locales specified in `I18n.available_locales`. If unset, translations for *all* locales will be loaded.
39
39
 
40
40
  ### Per configuration translations
41
41
 
@@ -71,14 +71,19 @@ i18n_cascade? false
71
71
 
72
72
  ### Copying translations
73
73
 
74
- In a Rails app, you can copy built-in translations into your app via the `rodauth:i18n:translations` generator, which receives a list of locales to copy translations for:
74
+ In a Rails app, you can copy built-in translations into your app via the `rodauth:translations` generator. By default, it will import translations for available locales, but you can also give it a list of locales:
75
75
 
76
76
  ```sh
77
- $ rails generate rodauth:i18n:translations en hr
77
+ $ rails generate rodauth:translations en hr
78
78
  # create config/locales/rodauth.en.yml
79
79
  # create config/locales/rodauth.hr.yml
80
+
81
+ $ rails generate rodauth:translations
82
+ # imports translations for available locales
80
83
  ```
81
84
 
85
+ Only translations for currently enabled Rodauth features will be imported. Re-running the generator will import translations for any newly enabled features, remove translations for any disabled features, and keep any existing translations unchanged.
86
+
82
87
  On other web frameworks, you can copy the translation files directly from the `locales/` directory.
83
88
 
84
89
  ### Raising on missing translations
@@ -97,6 +102,14 @@ In some cases it can be useful to fall back to untranslated value when the trans
97
102
  i18n_fallback_to_untranslated? { Rails.env.production? }
98
103
  ```
99
104
 
105
+ ### Available locales
106
+
107
+ If you want to load translations for a set of locales different than `I18n.available_locales`, you can configure that:
108
+
109
+ ```rb
110
+ i18n_available_locales [:en, :pt]
111
+ ```
112
+
100
113
  ### Overriding current locale
101
114
 
102
115
  The current locale defaults to `I18n.locale`, but you can override that:
@@ -0,0 +1,90 @@
1
+ require "rails/generators"
2
+ require "active_support/core_ext/hash/slice"
3
+
4
+ module Rodauth
5
+ module Rails
6
+ class TranslationsGenerator < ::Rails::Generators::Base
7
+ source_root File.expand_path("#{__dir__}/../../../locales")
8
+ namespace "rodauth:translations"
9
+
10
+ argument :selected_locales, type: :array, required: false,
11
+ desc: "List of locales to copy translation files for"
12
+
13
+ def copy_locales
14
+ say "No locales specified!", :yellow if locales.empty?
15
+
16
+ locales.each do |locale|
17
+ translations = retrieve_translations(locale)
18
+
19
+ if translations.empty?
20
+ say "No translations for locale: #{locale}", :yellow
21
+ next
22
+ end
23
+
24
+ # retain translations the user potentially changed
25
+ translations.merge!(existing_translations(locale))
26
+ # keep only translations for currently enabled features
27
+ translations.slice!(*rodauth_methods)
28
+
29
+ create_file "config/locales/rodauth.#{locale}.yml", locale_content(locale, translations)
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def retrieve_translations(locale)
36
+ files = translation_files(locale)
37
+ files.inject({}) do |translations, file|
38
+ translations.merge YAML.load_file(file)[locale]["rodauth"]
39
+ end
40
+ end
41
+
42
+ def existing_translations(locale)
43
+ destination = File.join(destination_root, "config/locales/rodauth.#{locale}.yml")
44
+
45
+ # try to load existing translations first
46
+ if File.exist?(destination)
47
+ YAML.load_file(destination)[locale]["rodauth"]
48
+ else
49
+ {}
50
+ end
51
+ end
52
+
53
+ def translation_files(locale)
54
+ # ensure Rodauth configuration ran in autoloaded environment
55
+ Rodauth::Rails.app
56
+
57
+ Rodauth::I18n.directories
58
+ .map { |directory| Dir["#{directory}/#{locale}.yml"] }
59
+ .inject(:+)
60
+ end
61
+
62
+ def rodauth_methods
63
+ rodauths
64
+ .flat_map { |rodauth| rodauth.instance_methods - Object.instance_methods }
65
+ .map(&:to_s)
66
+ .sort
67
+ end
68
+
69
+ def locale_content(locale, translations)
70
+ data = { locale => { "rodauth" => translations } }
71
+ yaml = YAML.dump(data, line_width: 10_000) # disable line wrapping
72
+ yaml.split("\n", 2).last # remove "---" header
73
+ end
74
+
75
+ def locales
76
+ selected_locales || available_locales.map(&:to_s)
77
+ end
78
+
79
+ def available_locales
80
+ rodauths.inject([]) do |locales, rodauth|
81
+ locales |= rodauth.allocate.send(:i18n_available_locales) || []
82
+ end
83
+ end
84
+
85
+ def rodauths
86
+ Rodauth::Rails.app.opts[:rodauths].values
87
+ end
88
+ end
89
+ end
90
+ end
@@ -1,3 +1,4 @@
1
+ require "set"
1
2
  require "i18n"
2
3
 
3
4
  module Rodauth
@@ -16,6 +17,12 @@ module Rodauth
16
17
  :i18n_locale,
17
18
  )
18
19
 
20
+ @directories = Set.new
21
+
22
+ class << self
23
+ attr_reader :directories
24
+ end
25
+
19
26
  def post_configure
20
27
  super
21
28
  i18n_register File.expand_path("#{__dir__}/../../../locales")
@@ -61,6 +68,7 @@ module Rodauth
61
68
  files = i18n_files(directory)
62
69
  files.each { |file| i18n_add(file) }
63
70
  i18n_reload
71
+ Rodauth::I18n.directories << directory
64
72
  end
65
73
 
66
74
  # Returns list of translation files in given directory based on
data/locales/es.yml ADDED
@@ -0,0 +1,247 @@
1
+ es:
2
+ rodauth:
3
+ account_expiration_error_flash: No puede iniciar sesión en esta cuenta porque ha caducado
4
+ active_sessions_error_flash: Esta sesión ha sido cerrada
5
+ add_recovery_codes_button: Agrega autenticación por códigos de recuperación
6
+ add_recovery_codes_error_flash: No se pueden agregar códigos de recuperación
7
+ add_recovery_codes_heading: "<h2>Agrega más Códigos de Recuperación</h2>"
8
+ add_recovery_codes_page_title: Autenticación por Códigos de Recuperación
9
+ already_an_account_with_this_login_message: ya existe una cuenta con este login
10
+ attempt_to_create_unverified_account_error_flash: La cuenta que intentaste crear está a la espera de verificación
11
+ attempt_to_login_to_unverified_account_error_flash: La cuenta con la que intentaste acceder está a la espera de verificación
12
+ change_login_button: Modificar Login
13
+ change_login_error_flash: Hubo un error al modificar su login
14
+ change_login_needs_verification_notice_flash: Se le ha enviado por email un enlace para verificar su modificación de login
15
+ change_login_notice_flash: Su login fue modificado
16
+ change_login_page_title: Modificar Login
17
+ change_password_button: Modificar contraseña
18
+ change_password_error_flash: Hubo un error al modificar su contraseña
19
+ change_password_notice_flash: Tu contraseña fue modificada
20
+ change_password_page_title: Cambiar Contraseña
21
+ close_account_button: Cerrar cuenta
22
+ close_account_error_flash: Hubo un error al cerrar su cuenta
23
+ close_account_notice_flash: Su cuenta fue cerrada
24
+ close_account_page_title: Cerrar Cuenta
25
+ confirm_password_button: Confirmar contraseña
26
+ confirm_password_error_flash: Hubo un error al confirmar su contraseña
27
+ confirm_password_link_text: Ingresa una contraseña
28
+ confirm_password_notice_flash: Su contraseña fue confirmada
29
+ confirm_password_page_title: Confirmar Contraseña
30
+ contains_null_byte_message: contiene un byte nulo
31
+ create_account_button: Crear cuenta
32
+ create_account_error_flash: Hubo un error al crear su cuenta
33
+ create_account_link_text: Crea una nueva cuenta
34
+ create_account_notice_flash: Su cuenta fue creada
35
+ create_account_page_title: Crear Cuenta
36
+ email_auth_email_recently_sent_error_flash: Recientemente se le ha enviado un email con un enlace para iniciar sesión
37
+ email_auth_email_sent_notice_flash: Se le ha enviado un email con un enlace para acceder a su cuenta
38
+ email_auth_email_subject: Enlace para iniciar sesión
39
+ email_auth_error_flash: Hubo un error al intentar iniciar sesión
40
+ email_auth_page_title: Iniciar Sesión
41
+ email_auth_request_button: Enviar enlace para autenticar por email
42
+ email_auth_request_error_flash: Hubo un error al solicitar un enlace para autenticar por email
43
+ email_subject_prefix: ''
44
+ expired_jwt_access_token_message: token de acceso JWT caducado
45
+ global_logout_label: ¿Salir de todas las sesiones iniciadas?
46
+ input_field_label_suffix: ''
47
+ invalid_jwt_format_error_message: Formato JWT no válido o reclamo en el encabezado de Autorización
48
+ invalid_password_message: contraseña no válida
49
+ invalid_recovery_code_error_flash: Error de autenticación a través del código de recuperación
50
+ invalid_recovery_code_message: Código de recuperación inválido
51
+ json_non_post_error_message: método no-POST utilizado en la API JSON
52
+ json_not_accepted_error_message: Cabecera Accept no soportada. Debe aceptar "application/json" o un tipo de contenido compatible
53
+ jwt_refresh_invalid_token_message: token de actualización JWT no válido
54
+ jwt_refresh_without_access_token_message: no se proporcionó ningún token de acceso JWT durante la actualización
55
+ login_button: Iniciar sesión
56
+ login_confirm_label: Confirmar %{login_label}
57
+ login_does_not_meet_requirements_message: inicio de sesión no válido, no cumple los requisitos
58
+ login_error_flash: Hubo un error al iniciar la sesión
59
+ login_form_footer_links_heading: <h2 class="rodauth-login-form-footer-links-heading">Otras Opciones</h2>
60
+ login_label: Login
61
+ login_lockout_error_flash: Esta cuenta está actualmente bloqueada y no se puede acceder a ella
62
+ login_not_valid_email_message: no es una dirección de email válida
63
+ login_notice_flash: Iniciaste sesión con éxito
64
+ login_page_title: Iniciar Sesión
65
+ login_too_long_message: máximo %{login_maximum_length} caracteres
66
+ login_too_many_bytes_message: máximo %{login_maximum_bytes} bytes
67
+ login_too_short_message: mínimo %{login_minimum_length} caracteres
68
+ logins_do_not_match_message: logins no coinciden
69
+ logout_button: Salir
70
+ logout_notice_flash: Se ha cerrado la sesión
71
+ logout_page_title: Cerrar Sesión
72
+ multi_phase_login_page_title: Login
73
+ need_password_notice_flash: Login reconocido, por favor, introduzca su contraseña
74
+ new_password_label: Nueva contraseña
75
+ no_current_sms_code_error_flash: No hay código de SMS actual para esta cuenta
76
+ no_matching_email_auth_key_error_flash: 'Hubo un error al iniciar sesión: clave de autenticación de email no válida'
77
+ no_matching_login_message: sin login correspondiente
78
+ no_matching_reset_password_key_error_flash: 'Se ha producido un error al restablecer su contraseña: clave de restablecimiento no válida o caducada'
79
+ no_matching_unlock_account_key_error_flash: 'Se ha producido un error al desbloquear su cuenta: clave de desbloqueo no válida o caducada'
80
+ no_matching_verify_account_key_error_flash: 'Se ha producido un error al verificar su cuenta: la clave de verificación no es válida'
81
+ no_matching_verify_login_change_key_error_flash: 'Se ha producido un error al verificar su cambio de login: la clave de verificación no es válida'
82
+ non_json_request_error_message: Sólo se permiten solicitudes en formato JSON
83
+ otp_already_setup_error_flash: Ya ha configurado la autenticación TOTP
84
+ otp_auth_button: Autenticación mediante TOTP
85
+ otp_auth_error_flash: Error al iniciar la sesión mediante la autenticación TOTP
86
+ otp_auth_form_footer: ''
87
+ otp_auth_label: Código de autenticación
88
+ otp_auth_link_text: Autenticación mediante TOTP
89
+ otp_auth_page_title: Introduzca el código de autentificación
90
+ otp_disable_button: Desactivar la autenticación TOTP
91
+ otp_disable_error_flash: Error al desactivar la autenticación TOTP
92
+ otp_disable_link_text: Desactivar la autenticación TOTP
93
+ otp_disable_notice_flash: Se ha desactivado la autenticación TOTP
94
+ otp_disable_page_title: Desactivar la autenticación TOTP
95
+ otp_invalid_auth_code_message: Código de autenticación inválido
96
+ otp_invalid_secret_message: secreto inválido
97
+ otp_lockout_error_flash: El uso del código de autenticación TOTP fue bloqueado debido a numerosos fallos
98
+ otp_provisioning_uri_label: URL de Provisioning
99
+ otp_secret_label: Secreto
100
+ otp_setup_button: Configurar la autenticación TOTP
101
+ otp_setup_error_flash: Error al configurar la autenticación TOTP
102
+ otp_setup_link_text: Configurar la autenticación TOTP
103
+ otp_setup_notice_flash: La autenticación TOTP ya está configurada
104
+ otp_setup_page_title: Configurar Autenticación TOTP
105
+ password_authentication_required_error_flash: Debe confirmar su contraseña antes de continuar
106
+ password_changed_email_subject: Contraseña modificada
107
+ password_confirm_label: Confirmar %{password_label}
108
+ password_does_not_meet_requirements_message: contraseña no válida, no cumple los requisitos
109
+ password_expiration_error_flash: Su contraseña ha caducado y necesita ser cambiada
110
+ password_in_dictionary_message: es una palabra en un diccionario
111
+ password_invalid_pattern_message: incluye una secuencia caracteres común
112
+ password_is_one_of_the_most_common_message: es una de las contraseñas más comunes
113
+ password_label: Contraseña
114
+ password_not_changeable_yet_error_flash: Todavía no se puede cambiar la contraseña
115
+ password_not_enough_character_groups_message: no incluye letras mayúsculas, minúsculas y números
116
+ password_same_as_previous_password_message: igual que la contraseña anterior
117
+ password_too_many_repeating_characters_message: contiene demasiados caracteres iguales seguidos
118
+ password_too_long_message: máximo %{password_maximum_length} caracteres
119
+ password_too_many_bytes_message: máximo %{password_maximum_bytes} bytes
120
+ password_too_short_message: mínimo %{password_minimum_length} caracteres
121
+ passwords_do_not_match_message: contraseñas no coinciden
122
+ recovery_auth_button: Autenticar por Código de Recuperación
123
+ recovery_auth_link_text: Autenticar mediante Código de Recuperación
124
+ recovery_auth_page_title: Ingresar Código de Recuperación
125
+ recovery_codes_added_notice_flash: Fueron agregados más códigos de recuperación
126
+ recovery_codes_label: Código de Recuperación
127
+ recovery_codes_link_text: Ver Códigos de Recuperación de Autenticación
128
+ recovery_codes_page_title: Ver Códigos de Recuperación de Autenticación
129
+ remember_button: Cambiar configuración de "Recuérdame"
130
+ remember_disable_label: Desactivar "Recuérdame"
131
+ remember_error_flash: Hubo un error al actualizar la configuración de "Recuérdame"
132
+ remember_forget_label: Olvídame
133
+ remember_notice_flash: Se ha actualizado la configuración de "Recuérdame"
134
+ remember_page_title: Cambiar la configuración de "Recuérdame"
135
+ remember_remember_label: Recuérdame
136
+ require_login_error_flash: Inicie sesión para continuar
137
+ resend_verify_account_page_title: Reenviar el email de verificación
138
+ reset_password_button: Restablecer contraseña
139
+ reset_password_email_recently_sent_error_flash: Recientemente se le ha enviado un email con un enlace para restablecer su contraseña
140
+ reset_password_email_sent_notice_flash: Se le ha enviado un email con un enlace para restablecer la contraseña de su cuenta
141
+ reset_password_email_subject: Restablecer contraseña
142
+ reset_password_error_flash: Hubo un error al restablecer su contraseña
143
+ reset_password_explanatory_text: "<p>Si ha olvidado su contraseña, puede solicitar un restablecimiento:</p>"
144
+ reset_password_notice_flash: Su contraseña ha sido restablecida
145
+ reset_password_page_title: Restablecer contraseña
146
+ reset_password_request_button: Solicitar restablecer la contraseña
147
+ reset_password_request_error_flash: Se ha producido un error al solicitar el restablecimiento de la contraseña
148
+ reset_password_request_link_text: ¿Olvidaste la contraseña?
149
+ reset_password_request_page_title: Solicitar Restablecer Contraseña
150
+ same_as_current_login_message: igual al login actual
151
+ same_as_existing_password_message: contraseña no válida, la misma que la actual
152
+ session_expiration_error_flash: Esta sesión ha expirado, por favor inicie sesión de nuevo
153
+ single_session_error_flash: Esta sesión se ha cerrado porque se ha activado otra sesión
154
+ sms_already_setup_error_flash: La autenticación por SMS ya está configurada
155
+ sms_auth_button: Autenticación por código SMS
156
+ sms_auth_link_text: Autenticación mediante código SMS
157
+ sms_auth_page_title: Autenticar mediante código SMS
158
+ sms_code_label: Código SMS
159
+ sms_confirm_button: Confirme el número para SMS de respaldo
160
+ sms_confirm_notice_flash: Se ha configurado la autenticación por SMS
161
+ sms_confirm_page_title: Confirme número de respaldo de SMS
162
+ sms_disable_button: Deshabilitar la autenticación de SMS de respaldo
163
+ sms_disable_error_flash: Error al deshabilitar la autenticación por SMS
164
+ sms_disable_link_text: Deshabilitar la autenticación por SMS
165
+ sms_disable_notice_flash: La autenticación por SMS ha sido deshabilitada
166
+ sms_disable_page_title: Deshabilitar la autenticación de SMS de respaldo
167
+ sms_invalid_code_error_flash: Error al autenticar mediante código SMS
168
+ sms_invalid_code_message: código SMS no válido
169
+ sms_invalid_confirmation_code_error_flash: Se usó un código de confirmación de SMS no válido o desactualizado, debe configurar la autenticación de SMS nuevamente
170
+ sms_invalid_phone_message: número de teléfono SMS no válido
171
+ sms_lockout_error_flash: Autenticación por SMS ha sido bloqueada
172
+ sms_needs_confirmation_error_flash: Autenticación por SMS necesita confirmación
173
+ sms_not_setup_error_flash: Autenticación por SMS aún no se ha configurado
174
+ sms_phone_label: Número de Teléfono
175
+ sms_request_button: Enviar código SMS
176
+ sms_request_notice_flash: Se ha enviado el código de autenticación por SMS
177
+ sms_request_page_title: Enviar código SMS
178
+ sms_setup_button: Configurar el número SMS de respaldo
179
+ sms_setup_error_flash: Error al configurar la autenticación por SMS
180
+ sms_setup_link_text: Configurar la autenticación de SMS respaldo
181
+ sms_setup_page_title: Configurar el número SMS de respaldo
182
+ two_factor_already_authenticated_error_flash: Ya fue autenticado a través de multifactor
183
+ two_factor_auth_notice_flash: Ha sido autenticado a través de multifactor
184
+ two_factor_auth_page_title: Autenticar usando un factor adicional
185
+ two_factor_disable_button: Eliminar todos los métodos de autenticación multifactor
186
+ two_factor_disable_error_flash: No fue posible eliminar todos los métodos de autenticación multifactor
187
+ two_factor_disable_link_text: Eliminar todos los métodos de autenticación multifactor
188
+ two_factor_disable_notice_flash: Todos los métodos de autenticación multifactor han sido deshabilitados
189
+ two_factor_disable_page_title: Eliminar todos los métodos de autenticación multifactor
190
+ two_factor_manage_page_title: Administrar Autenticación Multifactor
191
+ two_factor_need_authentication_error_flash: Debe autenticarse a través de un factor adicional antes de continuar
192
+ two_factor_not_setup_error_flash: Esta cuenta no se ha configurado para la autenticación multifactor
193
+ two_factor_remove_heading: "<h2>Remover Autenticación Multifactor</h2>"
194
+ two_factor_setup_heading: "<h2>Configurar Autenticación Multifactor</h2>"
195
+ unlock_account_button: Desbloquear cuenta
196
+ unlock_account_email_recently_sent_error_flash: Recientemente se le envió un email con un enlace para desbloquear la cuenta
197
+ unlock_account_email_subject: Desbloquear cuenta
198
+ unlock_account_error_flash: Hubo un error al desbloquear su cuenta
199
+ unlock_account_explanatory_text: "<p>Esta cuenta está actualmente bloqueada. Puedes desbloquear la cuenta:</p>"
200
+ unlock_account_notice_flash: Su cuenta ha sido desbloqueada
201
+ unlock_account_page_title: Desbloquear cuenta
202
+ unlock_account_request_button: Solicitar desbloqueo de cuenta
203
+ unlock_account_request_explanatory_text: "<p>Esta cuenta está actualmente bloqueada. Puede solicitar que la cuenta sea desbloqueada:</p>"
204
+ unlock_account_request_notice_flash: Se le ha enviado un email con un enlace para desbloquear su cuenta
205
+ unlock_account_request_page_title: Solicitar Desbloqueo de Cuenta
206
+ unverified_account_message: cuenta no verificada, verifique la cuenta antes de iniciar sesión
207
+ unverified_change_login_error_flash: Verifique esta cuenta antes de cambiar el inicio de sesión
208
+ verify_account_button: Verificar cuenta
209
+ verify_account_email_recently_sent_error_flash: Recientemente se le envió un email con un enlace para verificar su cuenta
210
+ verify_account_email_sent_notice_flash: Se le ha enviado un email con un enlace para verificar su cuenta
211
+ verify_account_email_subject: Verificar cuenta
212
+ verify_account_error_flash: No fue posible verificar la cuenta
213
+ verify_account_notice_flash: Tu cuenta ha sido verificada
214
+ verify_account_page_title: Verificar Cuenta
215
+ verify_account_resend_button: Enviar email de verificación nuevamente
216
+ verify_account_resend_error_flash: No se puede reenviar el email de la cuenta
217
+ verify_account_resend_explanatory_text: "<p>Si ya no tienes el email para verificar la cuenta, puedes solicitar que te lo reenvíen:</p>"
218
+ verify_account_resend_link_text: Reenviar información para verificar cuenta
219
+ verify_login_change_button: Verificar cambio de login
220
+ verify_login_change_duplicate_account_error_flash: No se puede cambiar el login porque ya existe una cuenta con el nuevo login
221
+ verify_login_change_email_subject: Verificar cambio de login
222
+ verify_login_change_error_flash: No se pudo verificar el cambio de login
223
+ verify_login_change_notice_flash: Tu cambio de login fue verificado
224
+ verify_login_change_page_title: Verificar Cambio de Login
225
+ view_recovery_codes_button: Ver códigos de recuperación de autenticación
226
+ view_recovery_codes_error_flash: No se pueden ver los códigos de recuperación
227
+ webauthn_auth_button: Autenticar mediante WebAuthn
228
+ webauthn_auth_error_flash: Error al autenticarse usando WebAuthn
229
+ webauthn_auth_link_text: Autenticar usando WebAuthn
230
+ webauthn_auth_page_title: Autenticar usando WebAuthn
231
+ webauthn_duplicate_webauthn_id_message: intento de ingresar un id duplicado de webauthn
232
+ webauthn_invalid_auth_param_message: parámetro de autenticación webauthn no válido
233
+ webauthn_invalid_remove_param_message: debe seleccionar un autenticador webauthn válido para eliminar
234
+ webauthn_invalid_setup_param_message: parámetro de configuración de webathn no válido
235
+ webauthn_invalid_sign_count_message: credencial webauthn tiene un recuento de signos no válido
236
+ webauthn_login_error_flash: Hubo un error al autenticarse a través de WebAuthn
237
+ webauthn_not_setup_error_flash: Esta cuenta no se ha configurado para la autenticación WebAuthn
238
+ webauthn_remove_button: Eliminar el autenticador WebAuthn
239
+ webauthn_remove_error_flash: Error al eliminar el autenticador WebAuthn
240
+ webauthn_remove_link_text: Eliminar el autenticador WebAuthn
241
+ webauthn_remove_notice_flash: Se ha eliminado el autenticador WebAuthn
242
+ webauthn_remove_page_title: Eliminar el Autenticador WebAuthn
243
+ webauthn_setup_button: Configurar la autenticación WebAuthn
244
+ webauthn_setup_error_flash: Error al configurar la autenticación WebAuthn
245
+ webauthn_setup_link_text: Configurar la autenticación WebAuthn
246
+ webauthn_setup_notice_flash: La autenticación WebAuthn ahora está configurada
247
+ webauthn_setup_page_title: Configurar la autenticación WebAuthn
data/rodauth-i18n.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "rodauth-i18n"
5
- spec.version = "0.2.1"
5
+ spec.version = "0.4.0"
6
6
  spec.authors = ["Janko Marohnić"]
7
7
  spec.email = ["janko@hey.com"]
8
8
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rodauth-i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janko Marohnić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-23 00:00:00.000000000 Z
11
+ date: 2022-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rodauth
@@ -117,10 +117,11 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - LICENSE.txt
119
119
  - README.md
120
- - lib/generators/rodauth/i18n/translations_generator.rb
120
+ - lib/generators/rodauth/translations_generator.rb
121
121
  - lib/rodauth/features/i18n.rb
122
122
  - lib/rodauth/i18n/login_password_requirements_base.rb
123
123
  - locales/en.yml
124
+ - locales/es.yml
124
125
  - locales/hr.yml
125
126
  - locales/pt.yml
126
127
  - rodauth-i18n.gemspec
@@ -143,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
144
  - !ruby/object:Gem::Version
144
145
  version: '0'
145
146
  requirements: []
146
- rubygems_version: 3.2.15
147
+ rubygems_version: 3.3.3
147
148
  signing_key:
148
149
  specification_version: 4
149
150
  summary: Provides I18n integration and translations for Rodauth authentication framework.
@@ -1,17 +0,0 @@
1
- require "rails/generators/base"
2
-
3
- module Rodauth
4
- module I18n
5
- class TranslationsGenerator < ::Rails::Generators::Base
6
- source_root File.expand_path("#{__dir__}/../../../../locales")
7
-
8
- argument :locales, type: :array, desc: "List of locales to copy translation files for"
9
-
10
- def copy_locales
11
- locales.each do |locale|
12
- copy_file("#{locale}.yml", "config/locales/rodauth.#{locale}.yml")
13
- end
14
- end
15
- end
16
- end
17
- end