devise-security 0.14.2 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +125 -59
- data/app/controllers/devise/paranoid_verification_code_controller.rb +13 -1
- data/app/controllers/devise/password_expired_controller.rb +24 -6
- data/app/views/devise/paranoid_verification_code/show.html.erb +3 -3
- data/app/views/devise/password_expired/show.html.erb +5 -5
- data/config/locales/bg.yml +41 -0
- data/config/locales/by.yml +49 -0
- data/config/locales/cs.yml +41 -0
- data/config/locales/de.yml +15 -2
- data/config/locales/en.yml +15 -2
- data/config/locales/es.yml +10 -9
- data/config/locales/fa.yml +41 -0
- data/config/locales/fr.yml +1 -0
- data/config/locales/hi.yml +42 -0
- data/config/locales/it.yml +35 -4
- data/config/locales/ja.yml +2 -1
- data/config/locales/nl.yml +41 -0
- data/config/locales/pt.yml +41 -0
- data/config/locales/ru.yml +49 -0
- data/config/locales/tr.yml +1 -0
- data/config/locales/uk.yml +49 -0
- data/config/locales/zh_CN.yml +41 -0
- data/config/locales/zh_TW.yml +41 -0
- data/lib/devise-security/controllers/helpers.rb +59 -50
- data/lib/devise-security/hooks/password_expirable.rb +2 -0
- data/lib/devise-security/hooks/session_limitable.rb +21 -11
- data/lib/devise-security/models/database_authenticatable_patch.rb +15 -5
- data/lib/devise-security/models/password_archivable.rb +2 -2
- data/lib/devise-security/models/password_expirable.rb +5 -1
- data/lib/devise-security/models/secure_validatable.rb +56 -6
- data/lib/devise-security/models/session_limitable.rb +10 -1
- data/lib/devise-security/validators/password_complexity_validator.rb +53 -24
- data/lib/devise-security/version.rb +1 -1
- data/lib/devise-security.rb +13 -5
- data/lib/generators/devise_security/install_generator.rb +3 -3
- data/lib/generators/templates/{devise-security.rb → devise_security.rb} +6 -1
- data/test/controllers/test_paranoid_verification_code_controller.rb +68 -0
- data/test/controllers/test_password_expired_controller.rb +121 -19
- data/test/controllers/test_security_question_controller.rb +16 -40
- data/test/dummy/app/assets/config/manifest.js +3 -0
- data/test/dummy/app/controllers/overrides/paranoid_verification_code_controller.rb +7 -0
- data/test/dummy/app/controllers/overrides/password_expired_controller.rb +7 -0
- data/test/dummy/app/controllers/widgets_controller.rb +3 -0
- data/test/dummy/app/models/application_user_record.rb +2 -1
- data/test/dummy/app/models/mongoid/confirmable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/database_authenticable_fields.rb +4 -3
- data/test/dummy/app/models/mongoid/expirable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/lockable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/mappings.rb +4 -2
- data/test/dummy/app/models/mongoid/omniauthable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/paranoid_verification_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/password_archivable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/password_expirable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/recoverable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/registerable_fields.rb +4 -2
- data/test/dummy/app/models/mongoid/rememberable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/secure_validatable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/security_questionable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/session_limitable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/timeoutable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/trackable_fields.rb +2 -0
- data/test/dummy/app/models/mongoid/validatable_fields.rb +2 -0
- data/test/dummy/app/models/paranoid_verification_user.rb +26 -0
- data/test/dummy/app/models/password_expired_user.rb +26 -0
- data/test/dummy/app/models/user.rb +1 -2
- data/test/dummy/app/models/widget.rb +1 -3
- data/test/dummy/app/mongoid/one_user.rb +5 -5
- data/test/dummy/app/mongoid/user_on_engine.rb +2 -2
- data/test/dummy/app/mongoid/user_on_main_app.rb +2 -2
- data/test/dummy/app/mongoid/user_with_validations.rb +3 -3
- data/test/dummy/app/mongoid/user_without_email.rb +3 -3
- data/test/dummy/config/application.rb +4 -4
- data/test/dummy/config/boot.rb +1 -1
- data/test/dummy/config/environment.rb +1 -1
- data/test/dummy/config/environments/test.rb +3 -13
- data/test/dummy/config/initializers/migration_class.rb +1 -8
- data/test/dummy/config/locales/en.yml +10 -0
- data/test/dummy/config/mongoid.yml +1 -1
- data/test/dummy/config/routes.rb +5 -3
- data/test/dummy/db/migrate/20120508165529_create_tables.rb +3 -3
- data/test/dummy/lib/shared_expirable_columns.rb +1 -0
- data/test/dummy/lib/shared_security_questions_fields.rb +1 -0
- data/test/dummy/lib/shared_user.rb +17 -6
- data/test/dummy/lib/shared_user_without_email.rb +2 -1
- data/test/dummy/lib/shared_user_without_omniauth.rb +12 -3
- data/test/dummy/lib/shared_verification_fields.rb +1 -0
- data/test/dummy/{app/models/.gitkeep → log/development.log} +0 -0
- data/test/dummy/log/test.log +101533 -0
- data/test/integration/test_password_expirable_workflow.rb +53 -0
- data/test/integration/test_session_limitable_workflow.rb +2 -0
- data/test/orm/active_record.rb +7 -4
- data/test/orm/mongoid.rb +2 -1
- data/test/support/integration_helpers.rb +15 -33
- data/test/support/mongoid.yml +1 -1
- data/test/test_compatibility.rb +2 -0
- data/test/test_complexity_validator.rb +250 -29
- data/test/test_database_authenticatable_patch.rb +146 -0
- data/test/test_helper.rb +12 -6
- data/test/test_install_generator.rb +12 -2
- data/test/test_paranoid_verification.rb +0 -1
- data/test/test_password_archivable.rb +34 -11
- data/test/test_password_expirable.rb +26 -26
- data/test/test_secure_validatable.rb +292 -50
- data/test/test_secure_validatable_overrides.rb +185 -0
- data/test/test_session_limitable.rb +27 -1
- data/test/tmp/config/initializers/devise_security.rb +49 -0
- data/test/tmp/config/locales/devise.security_extension.by.yml +49 -0
- data/test/tmp/config/locales/devise.security_extension.cs.yml +41 -0
- data/test/tmp/config/locales/devise.security_extension.de.yml +41 -0
- data/test/tmp/config/locales/devise.security_extension.en.yml +42 -0
- data/test/tmp/config/locales/devise.security_extension.es.yml +30 -0
- data/test/tmp/config/locales/devise.security_extension.fa.yml +41 -0
- data/test/tmp/config/locales/devise.security_extension.fr.yml +30 -0
- data/test/tmp/config/locales/devise.security_extension.hi.yml +42 -0
- data/test/tmp/config/locales/devise.security_extension.it.yml +41 -0
- data/test/tmp/config/locales/devise.security_extension.ja.yml +30 -0
- data/test/tmp/config/locales/devise.security_extension.nl.yml +41 -0
- data/test/tmp/config/locales/devise.security_extension.pt.yml +41 -0
- data/test/tmp/config/locales/devise.security_extension.ru.yml +49 -0
- data/test/tmp/config/locales/devise.security_extension.tr.yml +18 -0
- data/test/tmp/config/locales/devise.security_extension.uk.yml +49 -0
- data/test/tmp/config/locales/devise.security_extension.zh_CN.yml +41 -0
- data/test/tmp/config/locales/devise.security_extension.zh_TW.yml +41 -0
- metadata +168 -132
- data/.codeclimate.yml +0 -63
- data/.document +0 -5
- data/.gitignore +0 -43
- data/.mdlrc +0 -1
- data/.rubocop.yml +0 -64
- data/.ruby-version +0 -1
- data/.travis.yml +0 -39
- data/Appraisals +0 -35
- data/Gemfile +0 -10
- data/Rakefile +0 -27
- data/devise-security.gemspec +0 -50
- data/gemfiles/rails_4.2_stable.gemfile +0 -16
- data/gemfiles/rails_5.0_stable.gemfile +0 -15
- data/gemfiles/rails_5.1_stable.gemfile +0 -15
- data/gemfiles/rails_5.2_stable.gemfile +0 -15
- data/gemfiles/rails_6.0_beta.gemfile +0 -15
- data/lib/devise-security/orm/active_record.rb +0 -20
- data/lib/devise-security/schema.rb +0 -66
- data/test/dummy/app/models/secure_user.rb +0 -9
@@ -0,0 +1,30 @@
|
|
1
|
+
ja:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: 'は既に使われています。'
|
5
|
+
equal_to_current_password: 'は現在のパスワードと異なるものである必要があります。'
|
6
|
+
equal_to_email: 'メールとは異なる必要があります'
|
7
|
+
password_complexity:
|
8
|
+
digit:
|
9
|
+
one: は最低1つの数字を含む必要があります。
|
10
|
+
other: は最低%{count}つの数字を含む必要があります。
|
11
|
+
lower:
|
12
|
+
one: は最低1つの小文字英字を含む必要があります。
|
13
|
+
other: は最低%{count}つの小文字英字を含む必要があります。
|
14
|
+
symbol:
|
15
|
+
one: は最低1つの記号を含む必要があります。
|
16
|
+
other: は最低%{count}つの記号を含む必要があります。
|
17
|
+
upper:
|
18
|
+
one: は最低1つの大文字英字を含む必要があります。
|
19
|
+
other: は最低%{count}つの大文字英字を含む必要があります。
|
20
|
+
devise:
|
21
|
+
invalid_captcha: 'キャプチャ入力が不正です。'
|
22
|
+
invalid_security_question: 'セキュリティ質問に対する回答が不正です。'
|
23
|
+
paranoid_verify:
|
24
|
+
code_required: 'サポートチームに提供された認証コードを入力してください。'
|
25
|
+
password_expired:
|
26
|
+
updated: '新しいパスワードが保存されました。'
|
27
|
+
change_required: 'パスワードが期限切れです。パスワードを新しく設定してください。'
|
28
|
+
failure:
|
29
|
+
session_limited: '他のブラウザでログインされました。このブラウザで続ける場合は、もう一度サインインしてください。'
|
30
|
+
expired: '活動がなかったため、あなたのアカウントは期限切れとなりました。サイト管理者に連絡してください。'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
nl:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: is eerder gebruikt.
|
5
|
+
equal_to_current_password: moet verschillen van het huidige wachtwoord.
|
6
|
+
equal_to_email: moet anders zijn dan de e-mail
|
7
|
+
password_complexity:
|
8
|
+
digit:
|
9
|
+
one: moet minimaal 1 cijfer bevatten
|
10
|
+
other: moet minimaal %{count} cijfers bevatten
|
11
|
+
lower:
|
12
|
+
one: moet minimaal 1 kleine letter bevatten
|
13
|
+
other: moet minimaal %{count} kleine letters bevatten
|
14
|
+
symbol:
|
15
|
+
one: moet minimaal 1 leesteken of symbool bevatten
|
16
|
+
other: moet minimaal %{count} leestekens of symbolen bevatten
|
17
|
+
upper:
|
18
|
+
one: moet minimaal 1 hoofdletter bevatten
|
19
|
+
other: moet minimaal %{count} hoofdletters bevatten
|
20
|
+
devise:
|
21
|
+
invalid_captcha: De captcha invoer was ongeldig.
|
22
|
+
invalid_security_question: Het antwoord op de beveiligingsvraag was niet correct.
|
23
|
+
paranoid_verify:
|
24
|
+
code_required: Voer de aangeleverde code in
|
25
|
+
paranoid_verification_code:
|
26
|
+
show:
|
27
|
+
submit_verification_code: Verstuur verificatie code
|
28
|
+
verification_code: Verificatie code
|
29
|
+
submit: Verstuur
|
30
|
+
password_expired:
|
31
|
+
updated: Het nieuwe wachtwoord is opgeslagen.
|
32
|
+
change_required: Het wachtwoord is verlopen. Vernieuw je wachtwoord.
|
33
|
+
show:
|
34
|
+
renew_your_password: Vernieuw je wachtwoord
|
35
|
+
current_password: Huidig wachtwoord
|
36
|
+
new_password: Nieuw wachtwoord
|
37
|
+
new_password_confirmation: Bevestig het nieuwe wachtwoord
|
38
|
+
change_my_password: Verander mijn wachtwoord
|
39
|
+
failure:
|
40
|
+
session_limited: Je login is in een andere browser gebruikt. Log hier opnieuw in.
|
41
|
+
expired: Je account is verlopen. Neem contact op met de site beheerder.
|
@@ -0,0 +1,41 @@
|
|
1
|
+
pt:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: 'foi usada anteriormente.'
|
5
|
+
equal_to_current_password: 'deve ser diferente da senha atual.'
|
6
|
+
equal_to_email: 'deve ser diferente do e-mail.'
|
7
|
+
password_complexity:
|
8
|
+
digit:
|
9
|
+
one: deve conter ao menos um dígito
|
10
|
+
other: deve conter ao menos %{count} dígitos
|
11
|
+
lower:
|
12
|
+
one: deve conter ao menos uma letra minúscula
|
13
|
+
other: deve conter ao menos %{count} letras minúsculas
|
14
|
+
symbol:
|
15
|
+
one: deve conter ao menos um símbolo
|
16
|
+
other: deve conter ao menos %{count} símbolos
|
17
|
+
upper:
|
18
|
+
one: deve conter ao menos uma letra maiúscula
|
19
|
+
other: deve conter ao menos %{count} letras maiúsculas
|
20
|
+
devise:
|
21
|
+
invalid_captcha: 'O captcha está errado.'
|
22
|
+
invalid_security_question: 'A resposta da pergunta de segurança está errada.'
|
23
|
+
paranoid_verify:
|
24
|
+
code_required: 'Por favor entre o código que a equipe de suporte enviou'
|
25
|
+
paranoid_verification_code:
|
26
|
+
show:
|
27
|
+
submit_verification_code: Enviar código de verificação
|
28
|
+
verification_code: Código de verificação
|
29
|
+
submit: Enviar
|
30
|
+
password_expired:
|
31
|
+
updated: 'A nova senha foi salva.'
|
32
|
+
change_required: 'Sua senha expirou. Renove sua senha por favor.'
|
33
|
+
show:
|
34
|
+
renew_your_password: Renove sua senha
|
35
|
+
current_password: Senha atual
|
36
|
+
new_password: Senha nova
|
37
|
+
new_password_confirmation: Confirmar senha nova
|
38
|
+
change_my_password: Mudar minha senha
|
39
|
+
failure:
|
40
|
+
session_limited: 'Seu login foi utilizado em outro local. Faça o login novamente para continuar.'
|
41
|
+
expired: 'Sua conta expirou por inatividade. Por favor contate o administrador do site.'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
ru:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: 'уже ранее использовался.'
|
5
|
+
equal_to_current_password: 'должен отличаться от текущего пароля.'
|
6
|
+
equal_to_email: 'должно отличаться от адреса электронной почты.'
|
7
|
+
password_complexity:
|
8
|
+
digit:
|
9
|
+
one: 'должен содержать хотя бы одну цифру'
|
10
|
+
few: 'должен содержать хотя бы %{count} цифры'
|
11
|
+
many: 'должен содержать хотя бы %{count} цифр'
|
12
|
+
other: 'должен содержать хотя бы %{count} цифры'
|
13
|
+
lower:
|
14
|
+
one: 'должен содержать хотя бы одну строчную букву'
|
15
|
+
few: 'должен содержать хотя бы %{count} строчные буквы'
|
16
|
+
many: 'должен содержать хотя бы %{count} строчных букв'
|
17
|
+
other: 'должен содержать хотя бы %{count} строчных букв'
|
18
|
+
symbol:
|
19
|
+
one: 'должен содержать хотя бы один знак пунктуации или символ'
|
20
|
+
few: 'должен содержать хотя бы %{count} знака пунктуации или символа'
|
21
|
+
many: 'должен содержать хотя бы %{count} знаков пунктуации или символов'
|
22
|
+
other: 'должен содержать хотя бы %{count} знаков пунктуации или символов'
|
23
|
+
upper:
|
24
|
+
one: 'должен содержать хотя бы одну прописную букву'
|
25
|
+
few: 'должен содержать хотя бы %{count} прописные буквы'
|
26
|
+
many: 'должен содержать хотя бы %{count} прописных букв'
|
27
|
+
other: 'должен содержать хотя бы %{count} прописных букв'
|
28
|
+
devise:
|
29
|
+
invalid_captcha: 'Введен неправильный код капчи.'
|
30
|
+
invalid_security_question: 'Ответ на секретный вопрос был неверным.'
|
31
|
+
paranoid_verify:
|
32
|
+
code_required: 'Пожалуйста введите код, полученный от нашей команды поддержки'
|
33
|
+
paranoid_verification_code:
|
34
|
+
show:
|
35
|
+
submit_verification_code: Ввод кода подтверждения
|
36
|
+
verification_code: Код подверждения
|
37
|
+
submit: Отправить
|
38
|
+
password_expired:
|
39
|
+
updated: 'Ваш новый пароль сохранен.'
|
40
|
+
change_required: 'Ваш пароль устарел. Пожалуйста, установите новый.'
|
41
|
+
show:
|
42
|
+
renew_your_password: Смена пароля
|
43
|
+
current_password: Текущий пароль
|
44
|
+
new_password: Новый пароль
|
45
|
+
new_password_confirmation: Подтвердите новый пароль
|
46
|
+
change_my_password: Поменять пароль
|
47
|
+
failure:
|
48
|
+
session_limited: 'Ваши параметры входа используются в другом браузере. Пожалуйста, авторизуйтесь снова, чтобы продолжить в этом браузере.'
|
49
|
+
expired: 'Ваш аккаунт устарел из-за неактивности. Пожалуйста, свяжитесь с администратором.'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
tr:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: "daha önce kullanıldı."
|
5
|
+
equal_to_current_password: "mevcut paroladan farklı olmalı."
|
6
|
+
equal_to_email: "e-postadan farklı olmalı."
|
7
|
+
password_format: "büyük, küçük harfler ve sayılar içermeli."
|
8
|
+
devise:
|
9
|
+
invalid_captcha: "Captcha hatalı."
|
10
|
+
invalid_security_question: "Güvenlik sorusunun cevabı yanlış."
|
11
|
+
paranoid_verify:
|
12
|
+
code_required: "Destek ekibimizden aldığınız kodu girin."
|
13
|
+
password_expired:
|
14
|
+
updated: "Yeni parolanız kaydedildi."
|
15
|
+
change_required: "Parolanızın geçerlilik süresi dolmuş. Lütfen parolanızı yenileyin."
|
16
|
+
failure:
|
17
|
+
session_limited: 'Hesabınıza başka bir tarayıcıdan giriş yapılmış. Lütfen devam etmek için yeniden giriş yapın.'
|
18
|
+
expired: 'Hesabınız aktif olarak kullanılmadığı için artık geçerli değil. Lütfen yönetici ile irtibata geçin.'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
uk:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: 'раніше використовувався.'
|
5
|
+
equal_to_current_password: 'має відрізнятися від поточного паролю.'
|
6
|
+
equal_to_email: 'має відрізнятися від електронної пошти.'
|
7
|
+
password_complexity:
|
8
|
+
digit:
|
9
|
+
one: 'повинен включати хоча б одну цифру'
|
10
|
+
few: 'повинен включати хоча б %{count} цифри'
|
11
|
+
many: 'повинен включати хоча б %{count} цифр'
|
12
|
+
other: 'повинен включати хоча б %{count} цифри'
|
13
|
+
lower:
|
14
|
+
one: 'повинен включати хоча б одну малу букву'
|
15
|
+
few: 'повинен включати хоча б %{count} малі букви'
|
16
|
+
many: 'повинен включати хоча б %{count} малих букв'
|
17
|
+
other: 'повинен включати хоча б %{count} малі букви'
|
18
|
+
symbol:
|
19
|
+
one: 'повинен включати хоча б один розділовий знак або символ'
|
20
|
+
few: 'повинен включати хоча б %{count} розділові знаки або символи'
|
21
|
+
many: 'повинен включати хоча б %{count} розділових знаків або символів'
|
22
|
+
other: 'повинен включати хоча б %{count} розділові знаки або символи'
|
23
|
+
upper:
|
24
|
+
one: 'повинен включати хоча б одну прописну букву'
|
25
|
+
few: 'повинен включати хоча б %{count} прописні букви'
|
26
|
+
many: 'повинен включати хоча б %{count} прописних букв'
|
27
|
+
other: 'повинен включати хоча б %{count} прописні букви'
|
28
|
+
devise:
|
29
|
+
invalid_captcha: 'Введення капчі недійсне.'
|
30
|
+
invalid_security_question: 'Неправильна відповідь на секретне питання.'
|
31
|
+
paranoid_verify:
|
32
|
+
code_required: 'Введіть, будь ласка, код від нашої команди підтримки'
|
33
|
+
paranoid_verification_code:
|
34
|
+
show:
|
35
|
+
submit_verification_code: Відправити код підтвердження
|
36
|
+
verification_code: Код підтвердження
|
37
|
+
submit: Відправити
|
38
|
+
password_expired:
|
39
|
+
updated: 'Ваш новий пароль збережено.'
|
40
|
+
change_required: 'Ваш пароль застарілий. Будь ласка, оновіть пароль.'
|
41
|
+
show:
|
42
|
+
renew_your_password: Оновити свій пароль
|
43
|
+
current_password: Теперішній пароль
|
44
|
+
new_password: Новий пароль
|
45
|
+
new_password_confirmation: Підтвердити новий пароль
|
46
|
+
change_my_password: Змінити пароль
|
47
|
+
failure:
|
48
|
+
session_limited: 'Ваші облікові дані були використані в іншому браузері. Будь ласка, авторизуйтесь знову щоб продовжити в цьому браузері.'
|
49
|
+
expired: "Ваш аккаунт застарів через неактивність. Будь ласка, зв'яжіться з адміністратором."
|
@@ -0,0 +1,41 @@
|
|
1
|
+
zh_CN:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: '曾被使用过。'
|
5
|
+
equal_to_current_password: '必须与当前密码不同。'
|
6
|
+
equal_to_email: '必须与电子邮件地址不同。'
|
7
|
+
password_complexity:
|
8
|
+
digit:
|
9
|
+
one: 必须包含至少1个数字
|
10
|
+
other: 必须包含至少%{count}个数字
|
11
|
+
lower:
|
12
|
+
one: 必须包含至少1个小写字母
|
13
|
+
other: 必须包含至少%{count}个小写字母
|
14
|
+
symbol:
|
15
|
+
one: 必须包含至少1个特殊符号(!"#$%&'()*+,-./:;<=>?@[\]^_‘{|}~)
|
16
|
+
other: 必须包含至少%{count}个特殊符号(!"#$%&'()*+,-./:;<=>?@[\]^_‘{|}~)
|
17
|
+
upper:
|
18
|
+
one: 必须包含至少1个大写字母
|
19
|
+
other: 必须包含至少%{count}个大写字母
|
20
|
+
devise:
|
21
|
+
invalid_captcha: '验证码无效。'
|
22
|
+
invalid_security_question: '安全问题答案无效。'
|
23
|
+
paranoid_verify:
|
24
|
+
code_required: '请输入我们支持团队提供的代码'
|
25
|
+
paranoid_verification_code:
|
26
|
+
show:
|
27
|
+
submit_verification_code: 提交验证码
|
28
|
+
verification_code: 验证码
|
29
|
+
submit: 提交
|
30
|
+
password_expired:
|
31
|
+
updated: '你的新密码已保存。'
|
32
|
+
change_required: '你的密码已过期,请更新密码。'
|
33
|
+
show:
|
34
|
+
renew_your_password: 更新你的密码
|
35
|
+
current_password: 当前密码
|
36
|
+
new_password: 新密码
|
37
|
+
new_password_confirmation: 确认新密码
|
38
|
+
change_my_password: 更改密码
|
39
|
+
failure:
|
40
|
+
session_limited: '你的登录凭据已在另一个浏览器上被使用。请重新登录以在此浏览器继续。'
|
41
|
+
expired: '由于不活跃,你的账户已过期。请联系站点管理员。'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
zh_TW:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
taken_in_past: '曾被使用過。'
|
5
|
+
equal_to_current_password: '必須與目前密碼不同。'
|
6
|
+
equal_to_email: '必須與電子郵件地址不同。'
|
7
|
+
password_complexity:
|
8
|
+
digit:
|
9
|
+
one: 必須包含至少一個數字
|
10
|
+
other: 必須包含至少 %{count} 個數字
|
11
|
+
lower:
|
12
|
+
one: 必須包含至少一個小寫字母
|
13
|
+
other: 必須包含至少 %{count} 個小寫字母
|
14
|
+
symbol:
|
15
|
+
one: 必須包含至少一個特殊符號
|
16
|
+
other: 必須包含至少 %{count} 個特殊符號
|
17
|
+
upper:
|
18
|
+
one: 必須包含至少一個大寫字母
|
19
|
+
other: 必須包含至少 %{count} 個大寫字母
|
20
|
+
devise:
|
21
|
+
invalid_captcha: '輸入的驗證碼無效。'
|
22
|
+
invalid_security_question: '安全問題答案無效。'
|
23
|
+
paranoid_verify:
|
24
|
+
code_required: '請輸入由我們客服團隊提供的代碼'
|
25
|
+
paranoid_verification_code:
|
26
|
+
show:
|
27
|
+
submit_verification_code: 送出驗證碼
|
28
|
+
verification_code: 驗證碼
|
29
|
+
submit: 送出
|
30
|
+
password_expired:
|
31
|
+
updated: '你的新密碼已儲存'
|
32
|
+
change_required: '你的密碼已經過期,請更新密碼。'
|
33
|
+
show:
|
34
|
+
renew_your_password: 更新你的密碼
|
35
|
+
current_password: 目前密碼
|
36
|
+
new_password: 新密碼
|
37
|
+
new_password_confirmation: 確認新密碼
|
38
|
+
change_my_password: 更改我的密碼
|
39
|
+
failure:
|
40
|
+
session_limited: '你的登入憑證已在另一個瀏覽器上被使用,請重新登入以在此瀏覽器繼續使用。'
|
41
|
+
expired: '你的帳號因過久沒使用而已經過期,請洽網站管理員。'
|