From 1df22f7e8cfc1f96900082aa45ffc0129905a4da Mon Sep 17 00:00:00 2001
From: Jonathan Hooper
Date: Wed, 1 May 2024 15:04:35 -0400
Subject: [PATCH 01/22] Return a `Pii::StateId` object from
`idv_session.pii_from_doc` (#10523)
Previous commits added the `Pii::StateId` data class. This is intended to hold the data that is read from the state ID. This has several advantages over the old approach (holding this data in a Hash):
1. It is immutable so it will error if you try to add data not from the state ID
2. It has defined attributes that are all required so you know what data will be present
This commit takes the next step in integrating this tool which is modifying `idv_session#pii_from_doc` to serialize the PII before it is written to the session and then deserialize it into `Pii::StateId` on read.
[skip changelog]
---
app/controllers/idv/address_controller.rb | 10 ++++----
app/controllers/idv/ssn_controller.rb | 2 +-
app/controllers/idv/verify_info_controller.rb | 4 +++-
app/services/idv/session.rb | 23 +++++++++++++++----
.../concerns/idv_step_concern_spec.rb | 2 +-
.../idv/address_controller_spec.rb | 2 +-
.../idv/enter_password_controller_spec.rb | 2 +-
.../idv/link_sent_controller_spec.rb | 2 +-
.../idv/otp_verification_controller_spec.rb | 2 +-
.../idv/phone_errors_controller_spec.rb | 2 +-
spec/controllers/idv/ssn_controller_spec.rb | 4 ++--
.../idv/verify_info_controller_spec.rb | 4 ++--
.../idv/welcome_controller_spec.rb | 2 +-
spec/policies/idv/flow_policy_spec.rb | 2 +-
spec/support/flow_policy_helper.rb | 4 ++--
15 files changed, 42 insertions(+), 25 deletions(-)
diff --git a/app/controllers/idv/address_controller.rb b/app/controllers/idv/address_controller.rb
index 589b0a78094..4b13fc9ea2d 100644
--- a/app/controllers/idv/address_controller.rb
+++ b/app/controllers/idv/address_controller.rb
@@ -49,11 +49,11 @@ def build_address_form
def address_from_document
Pii::Address.new(
- address1: idv_session.pii_from_doc[:address1],
- address2: idv_session.pii_from_doc[:address2],
- city: idv_session.pii_from_doc[:city],
- state: idv_session.pii_from_doc[:state],
- zipcode: idv_session.pii_from_doc[:zipcode],
+ address1: idv_session.pii_from_doc.address1,
+ address2: idv_session.pii_from_doc.address2,
+ city: idv_session.pii_from_doc.city,
+ state: idv_session.pii_from_doc.state,
+ zipcode: idv_session.pii_from_doc.zipcode,
)
end
diff --git a/app/controllers/idv/ssn_controller.rb b/app/controllers/idv/ssn_controller.rb
index 5aa777953ad..ecb1a7a954f 100644
--- a/app/controllers/idv/ssn_controller.rb
+++ b/app/controllers/idv/ssn_controller.rb
@@ -75,7 +75,7 @@ def self.step_info
private
def next_url
- if idv_session.pii_from_doc[:state] == 'PR' && !ssn_presenter.updating_ssn?
+ if idv_session.pii_from_doc.state == 'PR' && !ssn_presenter.updating_ssn?
idv_address_url
else
idv_verify_info_url
diff --git a/app/controllers/idv/verify_info_controller.rb b/app/controllers/idv/verify_info_controller.rb
index 4b1d438946d..e7c0388f7d2 100644
--- a/app/controllers/idv/verify_info_controller.rb
+++ b/app/controllers/idv/verify_info_controller.rb
@@ -79,7 +79,9 @@ def analytics_arguments
end
def pii
- idv_session.pii_from_doc.merge(idv_session.updated_user_address.to_h)
+ idv_session.pii_from_doc.to_h.merge(
+ idv_session.updated_user_address.to_h,
+ ).with_indifferent_access
end
end
end
diff --git a/app/services/idv/session.rb b/app/services/idv/session.rb
index dd89d55cb39..415ca7d8b47 100644
--- a/app/services/idv/session.rb
+++ b/app/services/idv/session.rb
@@ -19,7 +19,6 @@ class Session
personal_key
personal_key_acknowledged
phone_for_mobile_flow
- pii_from_doc
previous_phone_step_params
profile_id
redo_document_capture
@@ -169,9 +168,25 @@ def failed_phone_step_numbers
session[:failed_phone_step_params] ||= []
end
+ def pii_from_doc=(new_pii_from_doc)
+ if new_pii_from_doc.blank?
+ session[:pii_from_doc] = nil
+ else
+ session[:pii_from_doc] = new_pii_from_doc.to_h
+ end
+ end
+
+ def pii_from_doc
+ return nil if session[:pii_from_doc].blank?
+ Pii::StateId.new(**session[:pii_from_doc].slice(*Pii::StateId.members))
+ end
+
def updated_user_address=(updated_user_address)
- session[:updated_user_address] = nil if updated_user_address.nil?
- session[:updated_user_address] = updated_user_address.to_h
+ if updated_user_address.blank?
+ session[:updated_user_address] = nil
+ else
+ session[:updated_user_address] = updated_user_address.to_h
+ end
end
def updated_user_address
@@ -198,7 +213,7 @@ def invalidate_in_person_pii_from_user!
end
def remote_document_capture_complete?
- pii_from_doc
+ pii_from_doc.present?
end
def ipp_document_capture_complete?
diff --git a/spec/controllers/concerns/idv_step_concern_spec.rb b/spec/controllers/concerns/idv_step_concern_spec.rb
index c10546ad65c..b46c4ef423f 100644
--- a/spec/controllers/concerns/idv_step_concern_spec.rb
+++ b/spec/controllers/concerns/idv_step_concern_spec.rb
@@ -61,7 +61,7 @@ def show
context 'document capture complete' do
before do
- idv_session.pii_from_doc = { first_name: 'Susan' }
+ idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
end
it 'allows the back button and stays on page' do
diff --git a/spec/controllers/idv/address_controller_spec.rb b/spec/controllers/idv/address_controller_spec.rb
index fcfe4edb492..24b01b1805a 100644
--- a/spec/controllers/idv/address_controller_spec.rb
+++ b/spec/controllers/idv/address_controller_spec.rb
@@ -3,7 +3,7 @@
RSpec.describe Idv::AddressController do
let(:user) { create(:user) }
- let(:pii_from_doc) { Idp::Constants::MOCK_IDV_APPLICANT_WITH_SSN.stringify_keys }
+ let(:pii_from_doc) { Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT) }
before do
stub_sign_in(user)
diff --git a/spec/controllers/idv/enter_password_controller_spec.rb b/spec/controllers/idv/enter_password_controller_spec.rb
index 737876b5312..ac97bc9d329 100644
--- a/spec/controllers/idv/enter_password_controller_spec.rb
+++ b/spec/controllers/idv/enter_password_controller_spec.rb
@@ -31,7 +31,7 @@
subject.idv_session.welcome_visited = true
subject.idv_session.idv_consent_given = true
subject.idv_session.flow_path = 'standard'
- subject.idv_session.pii_from_doc = Idp::Constants::MOCK_IDV_APPLICANT
+ subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
subject.idv_session.ssn = Idp::Constants::MOCK_IDV_APPLICANT_WITH_PHONE[:ssn]
subject.idv_session.resolution_successful = true
subject.idv_session.applicant = Idp::Constants::MOCK_IDV_APPLICANT_WITH_PHONE
diff --git a/spec/controllers/idv/link_sent_controller_spec.rb b/spec/controllers/idv/link_sent_controller_spec.rb
index fa68bdd511d..753f6b05c2c 100644
--- a/spec/controllers/idv/link_sent_controller_spec.rb
+++ b/spec/controllers/idv/link_sent_controller_spec.rb
@@ -101,7 +101,7 @@
context 'with pii in idv_session' do
it 'allows the back button and does not redirect' do
- subject.idv_session.pii_from_doc = Idp::Constants::MOCK_IDV_APPLICANT
+ subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
get :show
expect(response).to render_template :show
diff --git a/spec/controllers/idv/otp_verification_controller_spec.rb b/spec/controllers/idv/otp_verification_controller_spec.rb
index 9b64b16526b..9f11d4505bb 100644
--- a/spec/controllers/idv/otp_verification_controller_spec.rb
+++ b/spec/controllers/idv/otp_verification_controller_spec.rb
@@ -36,7 +36,7 @@
subject.idv_session.welcome_visited = true
subject.idv_session.idv_consent_given = true
subject.idv_session.flow_path = 'standard'
- subject.idv_session.pii_from_doc = Idp::Constants::MOCK_IDV_APPLICANT
+ subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
subject.idv_session.ssn = Idp::Constants::MOCK_IDV_APPLICANT_WITH_PHONE[:ssn]
subject.idv_session.resolution_successful = true
subject.idv_session.applicant[:phone] = phone
diff --git a/spec/controllers/idv/phone_errors_controller_spec.rb b/spec/controllers/idv/phone_errors_controller_spec.rb
index 11d85c95a70..82a66bc6d2c 100644
--- a/spec/controllers/idv/phone_errors_controller_spec.rb
+++ b/spec/controllers/idv/phone_errors_controller_spec.rb
@@ -22,7 +22,7 @@
subject.idv_session.welcome_visited = true
subject.idv_session.idv_consent_given = true
subject.idv_session.flow_path = 'standard'
- subject.idv_session.pii_from_doc = Idp::Constants::MOCK_IDV_APPLICANT
+ subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
subject.idv_session.ssn = '123-45-6789'
subject.idv_session.applicant = Idp::Constants::MOCK_IDV_APPLICANT_WITH_PHONE
subject.idv_session.resolution_successful = true
diff --git a/spec/controllers/idv/ssn_controller_spec.rb b/spec/controllers/idv/ssn_controller_spec.rb
index 81d276d2735..a0a1c8bec40 100644
--- a/spec/controllers/idv/ssn_controller_spec.rb
+++ b/spec/controllers/idv/ssn_controller_spec.rb
@@ -146,7 +146,7 @@
context 'with a Puerto Rico address and pii_from_doc in idv_session' do
it 'redirects to address controller after user enters their SSN' do
- subject.idv_session.pii_from_doc[:state] = 'PR'
+ subject.idv_session.pii_from_doc = subject.idv_session.pii_from_doc.with(state: 'PR')
put :update, params: params
@@ -155,7 +155,7 @@
it 'redirects to the verify info controller if a user is updating their SSN' do
subject.idv_session.ssn = ssn
- subject.idv_session.pii_from_doc[:state] = 'PR'
+ subject.idv_session.pii_from_doc = subject.idv_session.pii_from_doc.with(state: 'PR')
put :update, params: params
diff --git a/spec/controllers/idv/verify_info_controller_spec.rb b/spec/controllers/idv/verify_info_controller_spec.rb
index 03868de9bdc..c39ed2b71e6 100644
--- a/spec/controllers/idv/verify_info_controller_spec.rb
+++ b/spec/controllers/idv/verify_info_controller_spec.rb
@@ -82,14 +82,14 @@
render_views
it 'With address2 in PII, shows address line 2 input' do
- subject.idv_session.pii_from_doc[:address2] = 'APT 3E'
+ subject.idv_session.pii_from_doc = subject.idv_session.pii_from_doc.with(address2: 'APT 3E')
get :show
expect(response.body).to have_content(t('idv.form.address2'))
end
it 'No address2 in PII, still shows address line 2 input' do
- subject.idv_session.pii_from_doc[:address2] = nil
+ subject.idv_session.pii_from_doc = subject.idv_session.pii_from_doc.with(address2: nil)
get :show
diff --git a/spec/controllers/idv/welcome_controller_spec.rb b/spec/controllers/idv/welcome_controller_spec.rb
index b49808f3217..0bd35db8a2d 100644
--- a/spec/controllers/idv/welcome_controller_spec.rb
+++ b/spec/controllers/idv/welcome_controller_spec.rb
@@ -77,7 +77,7 @@
context 'and verify info already completed' do
before do
subject.idv_session.flow_path = 'standard'
- subject.idv_session.pii_from_doc = { first_name: 'Susan' }
+ subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
subject.idv_session.ssn = '123-45-6789'
subject.idv_session.resolution_successful = true
end
diff --git a/spec/policies/idv/flow_policy_spec.rb b/spec/policies/idv/flow_policy_spec.rb
index 8e9cf7d20a9..b3fe49dfa26 100644
--- a/spec/policies/idv/flow_policy_spec.rb
+++ b/spec/policies/idv/flow_policy_spec.rb
@@ -40,7 +40,7 @@
idv_session.flow_path = 'standard'
idv_session.phone_for_mobile_flow = '201-555-1212'
- idv_session.pii_from_doc = Idp::Constants::MOCK_IDV_APPLICANT
+ idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
idv_session.had_barcode_read_failure = true
idv_session.had_barcode_attention_error = true
diff --git a/spec/support/flow_policy_helper.rb b/spec/support/flow_policy_helper.rb
index 70f9c086e28..6e31e100bdf 100644
--- a/spec/support/flow_policy_helper.rb
+++ b/spec/support/flow_policy_helper.rb
@@ -19,9 +19,9 @@ def stub_step(key:, idv_session:)
idv_session.flow_path = 'standard'
when :link_sent
idv_session.flow_path = 'hybrid'
- idv_session.pii_from_doc = Idp::Constants::MOCK_IDV_APPLICANT.dup
+ idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
when :document_capture
- idv_session.pii_from_doc = Idp::Constants::MOCK_IDV_APPLICANT.dup
+ idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT)
when :ssn
idv_session.ssn = Idp::Constants::MOCK_IDV_APPLICANT_WITH_SSN[:ssn]
when :ipp_ssn
From cbf1b3403140dbd9bd2e1eba3aa8c1f1292d1537 Mon Sep 17 00:00:00 2001
From: Matt Hinz
Date: Wed, 1 May 2024 14:24:37 -0700
Subject: [PATCH 02/22] LG-11588: Don't tell users to get another letter when
they can't (#10534)
* Don't tell users to get another letter when they can't
changelog: User-Facing Improvements, Identity verification, Don't tell users to request a new verify by mail letter when they can't.
* Initial crack at ZH translation
* Update expected error in feature test
* Update another feature test expected error
---
app/forms/gpo_verify_form.rb | 10 +++++++++-
config/locales/errors/en.yml | 1 +
config/locales/errors/es.yml | 1 +
config/locales/errors/fr.yml | 1 +
config/locales/errors/zh.yml | 1 +
spec/features/users/verify_profile_spec.rb | 2 +-
spec/forms/gpo_verify_form_spec.rb | 16 ++++++++++++++++
.../idv_examples/verification_code_entry.rb | 2 +-
8 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/app/forms/gpo_verify_form.rb b/app/forms/gpo_verify_form.rb
index 9d573091aab..8e840a01e2c 100644
--- a/app/forms/gpo_verify_form.rb
+++ b/app/forms/gpo_verify_form.rb
@@ -85,7 +85,11 @@ def submit_attempts
def validate_otp_not_expired
return unless gpo_confirmation_code.present? && gpo_confirmation_code.expired?
- errors.add :otp, :gpo_otp_expired, type: :gpo_otp_expired
+ if user_can_request_another_letter?
+ errors.add :otp, :gpo_otp_expired
+ else
+ errors.add :otp, :gpo_otp_expired_and_cannot_request_another
+ end
end
def validate_pending_profile
@@ -117,4 +121,8 @@ def activate_profile
pending_profile&.remove_gpo_deactivation_reason
pending_profile&.activate
end
+
+ def user_can_request_another_letter?
+ !Idv::GpoMail.new(user).rate_limited?
+ end
end
diff --git a/config/locales/errors/en.yml b/config/locales/errors/en.yml
index c7d5b29a2c4..51020683ed6 100644
--- a/config/locales/errors/en.yml
+++ b/config/locales/errors/en.yml
@@ -62,6 +62,7 @@ en:
format_mismatch: Please match the requested format.
gpo_otp_expired: Your verification code has expired. Please request another
letter for a new code.
+ gpo_otp_expired_and_cannot_request_another: Your verification code has expired.
improbable_phone: Invalid phone number. Please make sure you enter a valid phone number.
inclusion: is not included in the list
invalid_calling_area: Calls to that phone number are not supported. Please try
diff --git a/config/locales/errors/es.yml b/config/locales/errors/es.yml
index 22a745cb3fe..64f053a1fa6 100644
--- a/config/locales/errors/es.yml
+++ b/config/locales/errors/es.yml
@@ -66,6 +66,7 @@ es:
format_mismatch: Por favor, use el formato solicitado.
gpo_otp_expired: Tu código de verificación ha caducado. Vuelve a solicitar otra
carta para recibir un nuevo código.
+ gpo_otp_expired_and_cannot_request_another: Tu código de verificación ha caducado.
improbable_phone: Número de teléfono no válido. Asegúrate de introducir un
número de teléfono válido.
inclusion: No se incluye en la lista.
diff --git a/config/locales/errors/fr.yml b/config/locales/errors/fr.yml
index 2b6c23f2de7..aa6f5507321 100644
--- a/config/locales/errors/fr.yml
+++ b/config/locales/errors/fr.yml
@@ -73,6 +73,7 @@ fr:
format_mismatch: Veuillez vous assurer de respecter le format requis.
gpo_otp_expired: Votre code de vérification a expiré. Veuillez solliciter une
autre lettre afin d’obtenir un nouveau code.
+ gpo_otp_expired_and_cannot_request_another: Votre code de vérification a expiré.
improbable_phone: Numéro de téléphone non valide. Veillez à saisir un numéro de
téléphone valide.
inclusion: N’est pas inclus dans la liste
diff --git a/config/locales/errors/zh.yml b/config/locales/errors/zh.yml
index 54df99bc016..b84a6e707fc 100644
--- a/config/locales/errors/zh.yml
+++ b/config/locales/errors/zh.yml
@@ -47,6 +47,7 @@ zh:
expired: 已过期,请要求一个新的。
format_mismatch: 请使用与要求一致的格式。
gpo_otp_expired: 你的验证码已过期。请要求另外一封信来得到新代码。
+ gpo_otp_expired_and_cannot_request_another: 你的验证码已过期。
improbable_phone: 电话号码有误。请保证你输入的电话号码无误。
inclusion: 没有在清单中
invalid_calling_area: 不支持给那个号码打的电话。如果你有一个可接受短信(SMS)的电话,请尝试用短信。
diff --git a/spec/features/users/verify_profile_spec.rb b/spec/features/users/verify_profile_spec.rb
index 2dd3240bff8..1b950c4c84d 100644
--- a/spec/features/users/verify_profile_spec.rb
+++ b/spec/features/users/verify_profile_spec.rb
@@ -42,7 +42,7 @@
fill_in t('idv.gpo.form.otp_label'), with: otp
click_button t('idv.gpo.form.submit')
- expect(page).to have_content t('errors.messages.gpo_otp_expired')
+ expect(page).to have_content t('errors.messages.gpo_otp_expired_and_cannot_request_another')
expect(current_path).to eq idv_verify_by_mail_enter_code_path
end
diff --git a/spec/forms/gpo_verify_form_spec.rb b/spec/forms/gpo_verify_form_spec.rb
index a012923a40b..771d059e97a 100644
--- a/spec/forms/gpo_verify_form_spec.rb
+++ b/spec/forms/gpo_verify_form_spec.rb
@@ -88,10 +88,13 @@
context 'when OTP is expired' do
let(:expiration_days) { 10 }
let(:code_sent_at) { (expiration_days + 1).days.ago }
+ let(:minimum_wait_before_another_usps_letter_in_hours) { 0 }
before do
allow(IdentityConfig.store).to receive(:usps_confirmation_max_days).
and_return(expiration_days)
+ allow(IdentityConfig.store).to receive(:minimum_wait_before_another_usps_letter_in_hours).
+ and_return(minimum_wait_before_another_usps_letter_in_hours)
end
it 'is invalid' do
@@ -99,6 +102,19 @@
expect(result.success?).to eq(false)
expect(subject.errors[:otp]).to eq [t('errors.messages.gpo_otp_expired')]
end
+
+ context 'and the user cannot request another letter' do
+ before do
+ allow(subject).to receive(:user_can_request_another_letter?).and_return(false)
+ end
+ it 'is invalid and uses different messaging' do
+ result = subject.submit
+ expect(result.success?).to eq(false)
+ expect(subject.errors[:otp]).to eq [
+ t('errors.messages.gpo_otp_expired_and_cannot_request_another'),
+ ]
+ end
+ end
end
end
diff --git a/spec/support/idv_examples/verification_code_entry.rb b/spec/support/idv_examples/verification_code_entry.rb
index a5316310296..2830aa78ced 100644
--- a/spec/support/idv_examples/verification_code_entry.rb
+++ b/spec/support/idv_examples/verification_code_entry.rb
@@ -36,7 +36,7 @@
click_button t('idv.gpo.form.submit')
expect(current_path).to eq idv_verify_by_mail_enter_code_path
- expect(page).to have_content t('errors.messages.gpo_otp_expired')
+ expect(page).to have_content t('errors.messages.gpo_otp_expired_and_cannot_request_another')
user.reload
From c3e9e3367a6caf8b43b6837d81b07983075ce13d Mon Sep 17 00:00:00 2001
From: voidlily
Date: Wed, 1 May 2024 14:28:21 -0700
Subject: [PATCH 03/22] Remove postgres creds from config (#10539)
It's managed by a secret in the helm chart now
changelog: Internal, reviewapps, remove postgres creds to make latest version of
helm chart happy
---
.gitlab-ci.yml | 24 ++++++------------------
1 file changed, 6 insertions(+), 18 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9c23125ea30..73c18fb3a43 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -372,16 +372,12 @@ trigger_devops:
"postgres": {
"sslmode": "prefer",
"name": "idp",
- "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps",
- "username": "postgres",
- "password": "postgres"
+ "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps"
},
"postgresWorker": {
"sslmode": "prefer",
"name": "idp",
- "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps",
- "username": "postgres",
- "password": "postgres"
+ "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps"
},
"railsOffline": "true",
"redis": {
@@ -409,16 +405,12 @@ trigger_devops:
"postgres": {
"sslmode": "prefer",
"name": "idp",
- "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps",
- "username": "postgres",
- "password": "postgres"
+ "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps"
},
"postgresWorker": {
"sslmode": "prefer",
"name": "idp",
- "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps",
- "username": "postgres",
- "password": "postgres"
+ "host": "$CI_ENVIRONMENT_SLUG-login-chart-pg.review-apps"
},
"railsOffline": "true",
"redis": {
@@ -446,9 +438,7 @@ trigger_devops:
"postgres": {
"sslmode": "prefer",
"name": "idp",
- "host": "$CI_ENVIRONMENT_SLUG-login-chart-pivcac-pg.review-apps",
- "username": "postgres",
- "password": "pivcac"
+ "host": "$CI_ENVIRONMENT_SLUG-login-chart-pivcac-pg.review-apps"
},
"idpHost": "$CI_ENVIRONMENT_SLUG.review-app.identitysandbox.gov",
"domainName": "$CI_ENVIRONMENT_SLUG.review-app.pivcac.identitysandbox.gov"
@@ -462,9 +452,7 @@ trigger_devops:
"postgres": {
"sslmode": "prefer",
"name": "dashboard",
- "host": "$CI_ENVIRONMENT_SLUG-login-chart-dashboard-pg.review-apps",
- "username": "postgres",
- "password": "postgres"
+ "host": "$CI_ENVIRONMENT_SLUG-login-chart-dashboard-pg.review-apps"
},
"newrelic": {
"enabled": "false"
From 0fca01ceb9da964b4ad8873597c738ab9ead3c15 Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Thu, 2 May 2024 10:15:56 -0400
Subject: [PATCH 04/22] Support localization for component previews (#10542)
changelog: Internal, Component Previews, Support localization for component previews
---
app/controllers/component_preview_controller.rb | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/app/controllers/component_preview_controller.rb b/app/controllers/component_preview_controller.rb
index 389df20c842..90ddef6a746 100644
--- a/app/controllers/component_preview_controller.rb
+++ b/app/controllers/component_preview_controller.rb
@@ -12,5 +12,11 @@ class ComponentPreviewController < ViewComponentsController
helper_method :enqueue_component_stylesheets
alias_method :enqueue_component_stylesheets, :stylesheet_tag_once
+
+ before_action :set_locale
+
+ def set_locale
+ I18n.locale = LocaleChooser.new(params[:locale], request).locale
+ end
end
end
From ddcde41ab8e04eebcbbe4292fb30bbaae1558b5c Mon Sep 17 00:00:00 2001
From: Shannon A <20867088+svalexander@users.noreply.github.com>
Date: Thu, 2 May 2024 10:24:56 -0400
Subject: [PATCH 05/22] LG-13191 rescue faraday servererror (#10533)
* add faraday servererror to network errors
* move error to appropriate job
* update refresh job spec to include server error
* Use FakeAnalytics instead of stubbing to get clearer specs
* log job completed
* changelog: Internal, UspsAuthTokenRefreshJob, rescue Faraday::ServerError
---------
Co-authored-by: Zach Margolis
---
app/jobs/usps_auth_token_refresh_job.rb | 2 +-
spec/jobs/usps_auth_token_refresh_job_spec.rb | 27 ++++++-------------
2 files changed, 9 insertions(+), 20 deletions(-)
diff --git a/app/jobs/usps_auth_token_refresh_job.rb b/app/jobs/usps_auth_token_refresh_job.rb
index 0cc066b6268..483bdcc5110 100644
--- a/app/jobs/usps_auth_token_refresh_job.rb
+++ b/app/jobs/usps_auth_token_refresh_job.rb
@@ -7,7 +7,7 @@ def perform
analytics.idv_usps_auth_token_refresh_job_started
usps_proofer.retrieve_token!
- rescue Faraday::TimeoutError, Faraday::ConnectionFailed => err
+ rescue Faraday::TimeoutError, Faraday::ConnectionFailed, Faraday::ServerError => err
analytics.idv_usps_auth_token_refresh_job_network_error(
exception_class: err.class.name,
exception_message: err.message,
diff --git a/spec/jobs/usps_auth_token_refresh_job_spec.rb b/spec/jobs/usps_auth_token_refresh_job_spec.rb
index 02fb6bd0d6b..9f7cae055d4 100644
--- a/spec/jobs/usps_auth_token_refresh_job_spec.rb
+++ b/spec/jobs/usps_auth_token_refresh_job_spec.rb
@@ -5,19 +5,13 @@
let(:subject) { described_class.new }
let(:root_url) { 'http://my.root.url' }
- let(:analytics) { instance_double(Analytics) }
+ let(:analytics) { FakeAnalytics.new }
let(:usps_auth_token_cache_key) { UspsInPersonProofing::Proofer::AUTH_TOKEN_CACHE_KEY }
before do
allow(IdentityConfig.store).to receive(:usps_ipp_root_url).and_return(root_url)
- allow(Analytics).to receive(:new).
- with(
- user: an_instance_of(AnonymousUser),
- request: nil,
- session: {},
- sp: nil,
- ).and_return(analytics)
+ allow(subject).to receive(:analytics).and_return(analytics)
end
describe 'usps auth token refresh job' do
@@ -69,24 +63,19 @@
end
context 'auth request throws error' do
- it 'still logs analytics' do
+ it 'catches server errors and logs them as network errors' do
stub_error_request_token
- expect(analytics).to receive(
- :idv_usps_auth_token_refresh_job_started,
- ).once
- expect(analytics).to receive(
- :idv_usps_auth_token_refresh_job_completed,
- ).once
+ subject.perform
- expect do
- subject.perform
- end.to raise_error
+ expect(analytics).to have_logged_event('UspsAuthTokenRefreshJob: Started')
+ expect(analytics).to have_logged_event('UspsAuthTokenRefreshJob: Network error')
+ expect(analytics).to have_logged_event('UspsAuthTokenRefreshJob: Completed')
end
end
context 'auth request throws network error' do
- [Faraday::TimeoutError, Faraday::ConnectionFailed].each do |err_class|
+ [Faraday::TimeoutError, Faraday::ServerError, Faraday::ConnectionFailed].each do |err_class|
it "logs analytics without raising the #{err_class.name}" do
stub_network_error_request_token(
err_class.new('test error'),
From c4cb89889f9adfd7612e476dc324c676f96fa321 Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Thu, 2 May 2024 12:10:20 -0400
Subject: [PATCH 06/22] Remove unneeded IPP outage email template (#10544)
changelog: Internal, Code Quality, Remove unused code
---
app/mailers/user_mailer.rb | 13 -----------
.../in_person_outage_notification.html.erb | 10 ---------
config/locales/user_mailer/en.yml | 16 --------------
config/locales/user_mailer/es.yml | 22 -------------------
config/locales/user_mailer/fr.yml | 19 ----------------
config/locales/user_mailer/zh.yml | 10 ---------
spec/mailers/previews/user_mailer_preview.rb | 6 -----
7 files changed, 96 deletions(-)
delete mode 100644 app/views/user_mailer/in_person_outage_notification.html.erb
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb
index a57b97792af..28d80c901fb 100644
--- a/app/mailers/user_mailer.rb
+++ b/app/mailers/user_mailer.rb
@@ -392,19 +392,6 @@ def in_person_please_call(enrollment:)
end
end
- def in_person_outage_notification(enrollment:)
- with_user_locale(user) do
- @presenter = Idv::InPerson::VerificationResultsEmailPresenter.new(
- enrollment: enrollment,
- url_options: url_options,
- )
- mail(
- to: email_address.email,
- subject: t('user_mailer.in_person_outage_notification.subject', app_name: APP_NAME),
- )
- end
- end
-
def account_rejected
with_user_locale(user) do
mail(
diff --git a/app/views/user_mailer/in_person_outage_notification.html.erb b/app/views/user_mailer/in_person_outage_notification.html.erb
deleted file mode 100644
index e9b3f915a80..00000000000
--- a/app/views/user_mailer/in_person_outage_notification.html.erb
+++ /dev/null
@@ -1,10 +0,0 @@
-<%= t('user_mailer.in_person_outage_notification.body.heading') %>
-
-
-<%= t('user_mailer.in_person_outage_notification.body.intro_html') %>
-
-
-<%= t('user_mailer.in_person_outage_notification.body.instructions') %>
-
-
-<%= t('user_mailer.in_person_outage_notification.body.closing_html', app_name: APP_NAME, contact_us_url: MarketingSite.contact_url) %>
diff --git a/config/locales/user_mailer/en.yml b/config/locales/user_mailer/en.yml
index 9e3d3e66c92..e9333158dc4 100644
--- a/config/locales/user_mailer/en.yml
+++ b/config/locales/user_mailer/en.yml
@@ -136,22 +136,6 @@ en:
%{location} Post Office on %{date}.
greeting: Hello,
subject: Your identity could not be verified in person
- in_person_outage_notification:
- body:
- closing_html: We sincerely apologize for the delay in service. Should you have
- questions or do not receive your result by June 1, please contact %{app_name} Customer Support.
- heading: Results for In-Person Verification Delayed from May 20 until May 30
- instructions: At this time, if you attempted to complete the identity
- verification process at a Post Office, you do not need to try again.
- Rest assured that your verification results are not lost; they are
- securely stored and will be emailed to you once we fix the technical
- issue.
- intro_html: We’re working on a technical issue that is delaying emails of
- in-person verification results. If you attempted to complete
- identity verification at a Post Office between May 20 and May 29, your
- results may not be emailed to you until Tuesday, May 30.
- subject: '%{app_name} In-Person Verification Results Delayed'
in_person_please_call:
body:
contact_message_html: Call %{contact_number} and provide them
diff --git a/config/locales/user_mailer/es.yml b/config/locales/user_mailer/es.yml
index bdd8cc52499..6929ac6411b 100644
--- a/config/locales/user_mailer/es.yml
+++ b/config/locales/user_mailer/es.yml
@@ -143,28 +143,6 @@ es:
oficina de correos de %{location} el %{date}.
greeting: Hola,
subject: No se pudo verificar su identidad en persona
- in_person_outage_notification:
- body:
- closing_html: Le pedimos sinceras disculpas por el retraso en el servicio. Si
- tiene alguna pregunta o no recibe su resultado antes del 1 de junio,
- póngase en contacto con el servicio de
- atención al cliente de %{app_name}.
- heading: Los resultados de la verificación presencial se pospondrán del 20 al 30
- de mayo
- instructions: En este momento, si ha intentado completar el proceso de
- verificación de identidad en una oficina de correos, no es necesario
- que vuelva a intentarlo. Tenga la seguridad de que los resultados de
- su verificación no se han perdido; están almacenados de forma segura y
- se le enviarán por correo electrónico una vez que solucionemos el
- problema técnico.
- intro_html: Estamos trabajando en un problema técnico que está retrasando el
- envío de los correos electrónicos con los resultados de la
- verificación presencial. Si ha intentado verificar su
- identidad en una oficina de correos entre el 20 y el 29 de mayo, es
- posible que no reciba los resultados por correo electrónico hasta el
- martes 30 de mayo.
- subject: Los resultados de la verificación presencial de %{app_name} se han
- retrasado
in_person_please_call:
body:
contact_message_html: Llame al %{contact_number} y proporcione
diff --git a/config/locales/user_mailer/fr.yml b/config/locales/user_mailer/fr.yml
index d672155b857..d7855c23881 100644
--- a/config/locales/user_mailer/fr.yml
+++ b/config/locales/user_mailer/fr.yml
@@ -147,25 +147,6 @@ fr:
bureau de poste de %{location} le %{date}.
greeting: Bonjour,
subject: Votre identité n’a pas pu être vérifiée en personne
- in_person_outage_notification:
- body:
- closing_html: Nous nous excusons sincèrement pour le retard de service. Si vous
- avez des questions ou si vous ne recevez pas votre résultat avant le
- 1er juin, veuillez contacter le soutien au
- client de %{app_name}.
- heading: Résultats de la vérification en personne reportés du 20 mai au 30 mai
- instructions: Pour le moment, si vous avez tenté de terminer le processus de
- vérification d’identité dans un bureau de poste, vous n’avez pas
- besoin de réessayer. Rassurez-vous que vos résultats de vérification
- ne sont pas perdus; ils sont stockés en toute sécurité et vous seront
- envoyés par courriel une fois que nous aurons résolu le problème
- technique.
- intro_html: Nous travaillons pour résoudre un problème technique qui retarde les
- courriels des résultats de la vérification en personne. Si
- vous avez tenté d’effectuer une vérification d’identité dans un bureau
- de poste entre le 20 et le 29 mai, vos résultats ne vous seront
- peut-être pas envoyés par courriel avant le mardi 30 mai.
- subject: Les résultats de la vérification en personne de %{app_name} sont reportés
in_person_please_call:
body:
contact_message_html: Appelez le %{contact_number} et indiquez
diff --git a/config/locales/user_mailer/zh.yml b/config/locales/user_mailer/zh.yml
index 593d83dc496..9244ac9fdbb 100644
--- a/config/locales/user_mailer/zh.yml
+++ b/config/locales/user_mailer/zh.yml
@@ -102,16 +102,6 @@ zh:
intro: 我们知道你曾经试图通过 %{app_name} 验证身份,但是你的身份于 %{date}在 %{location} 邮局未能得到验证。
greeting: 你好,
subject: 你的身份未能亲身被验证。
- in_person_outage_notification:
- body:
- closing_html: 对于服务的延迟,我们诚恳道歉。如果你 6 月 1 日之前有问题或没有收到结果,请 联系 %{app_name} 客户支持。
- heading: 亲身验证身份的结果从 5 月 20 日延到了 5 月 30 日。
- instructions: 如果你已尝试过在邮局完成验证身份的过程,现在则没必要再去试。请放心,你的验证结果没有丢失,而是已被安全保存,而且等我们解决技术问题后就会通过电邮发给你。
- intro_html:
- 我们正在解决导致亲身验证身份结果延迟的一个技术问题。如果你 5 月 20 日到 29
- 日之间已经尝试过在邮局完成验证身份的过程,结果可能直到 5 月 30 日(礼拜二)才能通过电邮发给你 。
- subject: '%{app_name} 亲身验证身份的结果延迟了'
in_person_please_call:
body:
contact_message_html: Call %{contact_number} and provide them
diff --git a/spec/mailers/previews/user_mailer_preview.rb b/spec/mailers/previews/user_mailer_preview.rb
index bb3e86e3121..240d1b1a0ed 100644
--- a/spec/mailers/previews/user_mailer_preview.rb
+++ b/spec/mailers/previews/user_mailer_preview.rb
@@ -209,12 +209,6 @@ def in_person_please_call
)
end
- def in_person_outage_notification
- UserMailer.with(user: user, email_address: email_address_record).in_person_outage_notification(
- enrollment: in_person_enrollment,
- )
- end
-
def account_rejected
UserMailer.with(user: user, email_address: email_address_record).account_rejected
end
From 2acb0cd875954c9ff1dfcc1a2b4daa456b58807e Mon Sep 17 00:00:00 2001
From: Charley Ferguson
Date: Thu, 2 May 2024 12:57:31 -0400
Subject: [PATCH 07/22] LG-12999: Fix Selfie Inline Error (#10513)
* Change inline error
* changelog: User-Facing Improvements, Selfie, Fix inline error text above selfie box
* Remove unusual line terminators (auto detected by VS Code)
* Change translations too
* Lint fix
* Add chinese translation
* Remove newly translated key from exception list
* Add tests for inline selfie errors
* Lint fixes
* Fix space (remove b/c odd whitespace character)
---
config/locales/doc_auth/en.yml | 3 +--
config/locales/doc_auth/es.yml | 5 ++--
config/locales/doc_auth/fr.yml | 4 ++--
config/locales/doc_auth/zh.yml | 3 +--
.../idv/doc_auth/document_capture_spec.rb | 23 +++++++++++++++++++
spec/i18n_spec.rb | 1 -
6 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/config/locales/doc_auth/en.yml b/config/locales/doc_auth/en.yml
index cfd92f4126a..4962fbe6374 100644
--- a/config/locales/doc_auth/en.yml
+++ b/config/locales/doc_auth/en.yml
@@ -87,8 +87,7 @@ en:
network_error: We are having technical difficulties on our end. Please try to
submit your images again later.
no_liveness: Try taking new pictures.
- selfie_failure: Try taking your photos again. Make sure all of your photos are
- clear and in focus.
+ selfie_failure: We couldn’t verify the photo of yourself. Try taking a new picture.
selfie_failure_help_link_text: Review more tips for taking clear photos
glare:
failed_short: Image has glare, please try again.
diff --git a/config/locales/doc_auth/es.yml b/config/locales/doc_auth/es.yml
index b4da9edb2e8..c20af575a2f 100644
--- a/config/locales/doc_auth/es.yml
+++ b/config/locales/doc_auth/es.yml
@@ -111,8 +111,7 @@ es:
network_error: Estamos teniendo problemas técnicos por nuestra parte. Intente
enviar sus imágenes de nuevo más tarde.
no_liveness: Intente tomar nuevas fotografías.
- selfie_failure: Intente tomar de nuevo sus fotos. Asegúrese de que sus fotos
- estén claras y enfocadas.
+ selfie_failure: No pudimos verificar su foto. Intente tomar una nueva foto.
selfie_failure_help_link_text: Consulte más consejos para tomar fotos claras
glare:
failed_short: Hay reflejos en la imagen, por favor inténtelo de nuevo.
@@ -190,7 +189,7 @@ es:
verify_at_post_office: Verifique su identidad en una oficina de correos
verify_identity: Verifique su identidad
verify_online: Verifique su identidad en línea
- welcome: 'Verifiquemos su identidad para
%{sp_name}'
+ welcome: 'Verifiquemos su identidad para %{sp_name}'
hybrid_flow_warning:
explanation_html: Usted está utilizando %{app_name} para
verificar su identidad y acceder a
diff --git a/config/locales/doc_auth/fr.yml b/config/locales/doc_auth/fr.yml
index 90c246421e5..d632532239b 100644
--- a/config/locales/doc_auth/fr.yml
+++ b/config/locales/doc_auth/fr.yml
@@ -118,8 +118,8 @@ fr:
network_error: Nous avons des difficultés techniques de notre côté. Veuillez
essayer de soumettre à nouveau vos images plus tard.
no_liveness: Essayez de prendre de nouvelles photos.
- selfie_failure: Essayez de prendre de nouvelles photos de vous-même. Veillez à
- ce que toutes vos photos soient claires et nettes.
+ selfie_failure: Nous n’avons pas pu vérifier votre photo. Essayez de prendre une
+ nouvelle photo.
selfie_failure_help_link_text: Consultez plus de conseils pour prendre des photos claires
glare:
failed_short: L’image a des reflets, veuillez réessayer.
diff --git a/config/locales/doc_auth/zh.yml b/config/locales/doc_auth/zh.yml
index ac35da9834a..4806e2b13b6 100644
--- a/config/locales/doc_auth/zh.yml
+++ b/config/locales/doc_auth/zh.yml
@@ -66,8 +66,7 @@ zh:
multiple_front_id_failures: 我们无法验证你身份证件的正面。尝试重拍一张。
network_error: 我们这边有技术困难。请稍后再提交你的图像。
no_liveness: 尝试重拍。
- selfie_failure: Try taking your photos again. Make sure all of your photos are
- clear and in focus.
+ selfie_failure: 我们无法验证你自己的照片。请重拍一张。
selfie_failure_help_link_text: Review more tips for taking clear photos
glare:
failed_short: 图像有炫光,请再试一次。
diff --git a/spec/features/idv/doc_auth/document_capture_spec.rb b/spec/features/idv/doc_auth/document_capture_spec.rb
index 8abe2acf0ea..7d351836d37 100644
--- a/spec/features/idv/doc_auth/document_capture_spec.rb
+++ b/spec/features/idv/doc_auth/document_capture_spec.rb
@@ -353,6 +353,10 @@
expect(page).to have_content(body_error_message)
click_try_again
+
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).to have_content(selfie_inline_error_message)
+
expect(page).to have_current_path(idv_document_capture_path)
# inline error to be fixed in lg-12999
@@ -385,6 +389,8 @@
inline_error_message = strip_tags(t('doc_auth.errors.dpi.failed_short'))
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).not_to have_content(selfie_inline_error_message)
# when there are both doc auth errors and face match errors
@@ -414,6 +420,8 @@
inline_error_message = strip_tags(t('doc_auth.errors.dpi.failed_short'))
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).not_to have_content(selfie_inline_error_message)
# when doc auth result and liveness pass but face match fails
@@ -445,6 +453,8 @@
t('doc_auth.errors.general.multiple_front_id_failures'),
)
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).to have_content(selfie_inline_error_message)
# when there is a doc auth error on one side of the ID and face match errors
@@ -474,6 +484,8 @@
inline_error_message = strip_tags(t('doc_auth.errors.general.fallback_field_level'))
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).not_to have_content(selfie_inline_error_message)
# when there is a doc auth error on one side of the ID and a liveness error
@@ -503,6 +515,8 @@
inline_error_message = strip_tags(t('doc_auth.errors.general.fallback_field_level'))
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).not_to have_content(selfie_inline_error_message)
# when doc auth result is "attention" and face match errors
@@ -532,6 +546,8 @@
inline_error_message = strip_tags(t('doc_auth.errors.general.fallback_field_level'))
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).not_to have_content(selfie_inline_error_message)
# when doc auth passes but there are both liveness errors and face match errors
@@ -561,6 +577,9 @@
click_try_again
expect(page).to have_current_path(idv_document_capture_path)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).to have_content(selfie_inline_error_message)
+
# when doc auth, liveness, and face match pass but PII validation fails
attach_images(
@@ -591,6 +610,8 @@
t('doc_auth.errors.general.multiple_front_id_failures'),
)
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).not_to have_content(selfie_inline_error_message)
# when there are both face match errors and pii errors
@@ -622,6 +643,8 @@
t('doc_auth.errors.general.multiple_front_id_failures'),
)
expect(page).to have_content(inline_error_message)
+ selfie_inline_error_message = strip_tags(t('doc_auth.errors.general.selfie_failure'))
+ expect(page).to have_content(selfie_inline_error_message)
end
end
diff --git a/spec/i18n_spec.rb b/spec/i18n_spec.rb
index b35e176c306..84a1838a3e1 100644
--- a/spec/i18n_spec.rb
+++ b/spec/i18n_spec.rb
@@ -89,7 +89,6 @@ class BaseTask
{ key: 'doc_auth.errors.alerts.selfie_not_live', locales: %i[zh] },
{ key: 'doc_auth.errors.alerts.selfie_not_live_help_link_text', locales: %i[zh] },
{ key: 'doc_auth.errors.alerts.selfie_poor_quality', locales: %i[zh] },
- { key: 'doc_auth.errors.general.selfie_failure', locales: %i[zh] },
{ key: 'doc_auth.errors.general.selfie_failure_help_link_text', locales: %i[zh] },
{ key: 'doc_auth.headings.hybrid_handoff_selfie', locales: %i[zh] },
{ key: 'doc_auth.info.getting_started_html', locales: %i[zh] },
From f9f029a5b2afd250a53d5de281660bf8e7de54f3 Mon Sep 17 00:00:00 2001
From: Amir Reavis-Bey
Date: Thu, 2 May 2024 14:19:18 -0400
Subject: [PATCH 08/22] LG-13009 - consolidate poor quality and not live
messaging (#10536)
* resolve conflict encountered during main rebase
* consolidate selfie not_live and poor_quality i18n
* update spec key for liveness error message
* [skip changelog]
* happy linting
* remove dup tests and add scenarios
* key no longer exists
---
app/services/doc_auth/error_generator.rb | 15 +-
app/services/doc_auth/errors.rb | 6 +-
app/services/doc_auth/selfie_concern.rb | 12 +-
app/services/doc_auth_router.rb | 7 +-
config/locales/doc_auth/en.yml | 6 +-
config/locales/doc_auth/es.yml | 6 +-
config/locales/doc_auth/fr.yml | 9 +-
config/locales/doc_auth/zh.yml | 6 +-
.../idv/doc_auth/document_capture_spec.rb | 14 +-
.../doc_auth/redo_document_capture_spec.rb | 16 +-
...response_failure_with_face_match_fail.json | 740 +++++++++++
..._success_with_portrait_match_not_live.json | 1100 +++++++++++++++++
spec/i18n_spec.rb | 3 +-
.../services/doc_auth/error_generator_spec.rb | 8 +-
spec/support/features/doc_auth_helper.rb | 32 +
spec/support/lexis_nexis_fixtures.rb | 10 +
16 files changed, 1925 insertions(+), 65 deletions(-)
create mode 100644 spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_failure_with_face_match_fail.json
create mode 100644 spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_success_with_portrait_match_not_live.json
diff --git a/app/services/doc_auth/error_generator.rb b/app/services/doc_auth/error_generator.rb
index e2d82f2013f..491458d4cb4 100644
--- a/app/services/doc_auth/error_generator.rb
+++ b/app/services/doc_auth/error_generator.rb
@@ -211,19 +211,10 @@ def get_selfie_error(liveness_enabled, response_info)
return nil
end
- # Error when the image on the id does not match the selfie image, but the image was acceptable
- if error_is_success(face_match_error)
- return Errors::SELFIE_FAILURE
+ if error_is_poor_quality(face_match_error) || error_is_not_live(face_match_error)
+ return Errors::SELFIE_NOT_LIVE_OR_POOR_QUALITY
end
- # Error when the image on the id is poor quality
- if error_is_poor_quality(face_match_error)
- return Errors::SELFIE_POOR_QUALITY
- end
- # Error when the image on the id is not live
- if error_is_not_live(face_match_error)
- return Errors::SELFIE_NOT_LIVE
- end
- # Fallback, we don't expect this to happen
+
Errors::SELFIE_FAILURE
end
end
diff --git a/app/services/doc_auth/errors.rb b/app/services/doc_auth/errors.rb
index 197df623e65..d080d74b87a 100644
--- a/app/services/doc_auth/errors.rb
+++ b/app/services/doc_auth/errors.rb
@@ -30,8 +30,7 @@ module Errors
MULTIPLE_FRONT_ID_FAILURES = 'multiple_front_id_failures'
REF_CONTROL_NUMBER_CHECK = 'ref_control_number_check'
SELFIE_FAILURE = 'selfie_failure'
- SELFIE_NOT_LIVE = 'selfie_not_live'
- SELFIE_POOR_QUALITY = 'selfie_poor_quality'
+ SELFIE_NOT_LIVE_OR_POOR_QUALITY = 'selfie_not_live_or_poor_quality'
SEX_CHECK = 'sex_check'
VISIBLE_COLOR_CHECK = 'visible_color_check'
VISIBLE_PHOTO_CHECK = 'visible_photo_check'
@@ -124,8 +123,7 @@ module Errors
# Selfie errors
GENERAL_ERROR_LIVENESS => { long_msg: GENERAL_ERROR_LIVENESS, field_msg: FALLBACK_FIELD_LEVEL, hints: false },
SELFIE_FAILURE => { long_msg: SELFIE_FAILURE, field_msg: SELFIE_FAILURE, hints: false },
- SELFIE_NOT_LIVE => { long_msg: SELFIE_NOT_LIVE, field_msg: SELFIE_FAILURE, hints: false },
- SELFIE_POOR_QUALITY => { long_msg: SELFIE_POOR_QUALITY, field_msg: SELFIE_FAILURE, hints: false },
+ SELFIE_NOT_LIVE_OR_POOR_QUALITY => { long_msg: SELFIE_NOT_LIVE_OR_POOR_QUALITY, field_msg: SELFIE_FAILURE, hints: false },
}.transform_values(&:freeze).freeze
# rubocop:enable Layout/LineLength
end
diff --git a/app/services/doc_auth/selfie_concern.rb b/app/services/doc_auth/selfie_concern.rb
index 7db7f82f29a..8f701ad2baa 100644
--- a/app/services/doc_auth/selfie_concern.rb
+++ b/app/services/doc_auth/selfie_concern.rb
@@ -5,20 +5,16 @@ module SelfieConcern
extend ActiveSupport::Concern
def selfie_live?
portrait_error = get_portrait_error(portrait_match_results)
- return true if portrait_error.nil? || portrait_error.blank?
+ return true if portrait_error.blank?
!error_is_not_live(portrait_error)
end
def selfie_quality_good?
portrait_error = get_portrait_error(portrait_match_results)
- return true if portrait_error.nil? || portrait_error.blank?
+ return true if portrait_error.blank?
!error_is_poor_quality(portrait_error)
end
- def error_is_success(error_message)
- error_message == ERROR_TEXTS[:success]
- end
-
def error_is_not_live(error_message)
error_message == ERROR_TEXTS[:not_live]
end
@@ -31,7 +27,7 @@ def selfie_check_performed?
SELFIE_PERFORMED_STATUSES.include?(selfie_status)
end
- private
+ private
SELFIE_PERFORMED_STATUSES = %i[success fail].freeze
@@ -45,5 +41,5 @@ def selfie_check_performed?
def get_portrait_error(portrait_match_results)
portrait_match_results&.with_indifferent_access&.dig(:FaceErrorMessage)
end
-end
+ end
end
diff --git a/app/services/doc_auth_router.rb b/app/services/doc_auth_router.rb
index ccb201a59ec..565a5342d1f 100644
--- a/app/services/doc_auth_router.rb
+++ b/app/services/doc_auth_router.rb
@@ -61,10 +61,9 @@ module DocAuthRouter
'doc_auth.errors.alerts.ref_control_number_check',
# i18n-tasks-use t('doc_auth.errors.general.selfie_failure')
DocAuth::Errors::SELFIE_FAILURE => 'doc_auth.errors.general.selfie_failure',
- # i18n-tasks-use t('doc_auth.errors.alerts.selfie_not_live')
- DocAuth::Errors::SELFIE_NOT_LIVE => 'doc_auth.errors.alerts.selfie_not_live',
- # i18n-tasks-use t('doc_auth.errors.alerts.selfie_poor_quality')
- DocAuth::Errors::SELFIE_POOR_QUALITY => 'doc_auth.errors.alerts.selfie_poor_quality',
+ # i18n-tasks-use t('doc_auth.errors.alerts.selfie_not_live_or_poor_quality')
+ DocAuth::Errors::SELFIE_NOT_LIVE_OR_POOR_QUALITY =>
+ 'doc_auth.errors.alerts.selfie_not_live_or_poor_quality',
# i18n-tasks-use t('doc_auth.errors.alerts.sex_check')
DocAuth::Errors::SEX_CHECK => 'doc_auth.errors.alerts.sex_check',
# i18n-tasks-use t('doc_auth.errors.alerts.visible_color_check')
diff --git a/config/locales/doc_auth/en.yml b/config/locales/doc_auth/en.yml
index 4962fbe6374..127ac9a44e2 100644
--- a/config/locales/doc_auth/en.yml
+++ b/config/locales/doc_auth/en.yml
@@ -39,11 +39,9 @@ en:
the picture. Try taking new pictures.
issue_date_checks: We couldn’t read the issue date on your ID. Try taking new pictures.
ref_control_number_check: We couldn’t read the control number barcode. Try taking new pictures.
- selfie_not_live: Try taking a photo of yourself again. Make sure your whole face
- is clear and visible in the photo.
selfie_not_live_help_link_text: Review more tips for taking a clear photo of yourself
- selfie_poor_quality: 'Try taking a photo of yourself again. Make sure your whole
- face is clear and visible in the photo.'
+ selfie_not_live_or_poor_quality: 'Try taking a photo of yourself again. Make
+ sure your whole face is clear and visible in the photo.'
sex_check: We couldn’t read the sex on your ID. Try taking new pictures.
visible_color_check: We couldn’t verify your ID. It might have moved when you
took the picture, or the picture is too dark. Try taking new pictures
diff --git a/config/locales/doc_auth/es.yml b/config/locales/doc_auth/es.yml
index c20af575a2f..5d0c61cb05b 100644
--- a/config/locales/doc_auth/es.yml
+++ b/config/locales/doc_auth/es.yml
@@ -49,11 +49,9 @@ es:
identidad. Intente tomar nuevas fotos.
ref_control_number_check: No pudimos leer el código de barras del número de
control. Intente tomar nuevas fotografías.
- selfie_not_live: Intente tomar de nuevo una foto de usted. Asegúrese de que su
- rostro se vea claramente en la foto.
selfie_not_live_help_link_text: Consulte más consejos para tomar una foto clara de usted mismo
- selfie_poor_quality: 'Intente tomar de nuevo una foto de usted. Asegúrese de que
- su rostro se vea claramente en la foto.'
+ selfie_not_live_or_poor_quality: Intente tomar de nuevo una foto de usted.
+ Asegúrese de que su rostro se vea claramente en la foto.
sex_check: No pudimos leer el sexo en su documento de identidad. Intente tomar
nuevas fotos.
visible_color_check: No pudimos verificar su documento de identidad. Puede que
diff --git a/config/locales/doc_auth/fr.yml b/config/locales/doc_auth/fr.yml
index d632532239b..ea12cb1e70a 100644
--- a/config/locales/doc_auth/fr.yml
+++ b/config/locales/doc_auth/fr.yml
@@ -52,13 +52,10 @@ fr:
d’identité. Essayez de prendre de nouvelles photos.
ref_control_number_check: Nous n’avons pas pu lire le code-barres du numéro de
contrôle. Essayez de prendre de nouvelles photos.
- selfie_not_live: Essayez de prendre une nouvelle photo de vous-même.
- Assurez-vous que l’ensemble de votre visage soit clair et visible sur
- la photo.
selfie_not_live_help_link_text: Consultez plus de conseils pour prendre une photo claire de vous-même
- selfie_poor_quality: 'Essayez de prendre une nouvelle photo de vous-même.
- Assurez-vous que l’ensemble de votre visage soit clair et visible sur
- la photo.'
+ selfie_not_live_or_poor_quality: Essayez de prendre une nouvelle photo de
+ vous-même. Assurez-vous que l’ensemble de votre visage soit clair et
+ visible sur la photo.
sex_check: Nous n’avons pas pu lire le sexe sur votre pièce d’identité. Essayez
de prendre de nouvelles photos.
visible_color_check: Nous n’avons pas pu vérifier votre pièce d’identité. Elle a
diff --git a/config/locales/doc_auth/zh.yml b/config/locales/doc_auth/zh.yml
index 4806e2b13b6..95f9d39afe1 100644
--- a/config/locales/doc_auth/zh.yml
+++ b/config/locales/doc_auth/zh.yml
@@ -31,11 +31,9 @@ zh:
id_not_verified: 我们无法验证你的身份证件。可能因为你拍照时身份证件移动了。尝试重拍。
issue_date_checks: 我们读取不到你身份证件上的颁发日期。尝试重拍。
ref_control_number_check: 我们读取不到控制号码条码。尝试重拍。
- selfie_not_live: Try taking a photo of yourself again. Make sure your whole face
- is clear and visible in the photo.
selfie_not_live_help_link_text: Review more tips for taking a clear photo of yourself
- selfie_poor_quality: Try taking a photo of yourself again. Make sure your whole
- face is clear and visible in the photo.
+ selfie_not_live_or_poor_quality: Try taking a photo of yourself again. Make sure
+ your whole face is clear and visible in the photo.
sex_check: 我们读取不到你身份证件上的性别。尝试重拍。
visible_color_check: 我们无法验证你的身份证件。可能你拍照时身份证件移动了,或者照片太暗。尝试在亮一点的灯光下重拍。
visible_photo_check: 我们无法验证你身份证件上的照片。尝试重拍。
diff --git a/spec/features/idv/doc_auth/document_capture_spec.rb b/spec/features/idv/doc_auth/document_capture_spec.rb
index 7d351836d37..540ef517de2 100644
--- a/spec/features/idv/doc_auth/document_capture_spec.rb
+++ b/spec/features/idv/doc_auth/document_capture_spec.rb
@@ -349,7 +349,9 @@
)
expect(page).to have_content(h1_error_message)
- body_error_message = strip_tags(t('doc_auth.errors.alerts.selfie_not_live'))
+ body_error_message = strip_tags(
+ t('doc_auth.errors.alerts.selfie_not_live_or_poor_quality'),
+ )
expect(page).to have_content(body_error_message)
click_try_again
@@ -571,7 +573,9 @@
)
expect(page).to have_content(h1_error_message)
- body_error_message = strip_tags(t('doc_auth.errors.alerts.selfie_not_live'))
+ body_error_message = strip_tags(
+ t('doc_auth.errors.alerts.selfie_not_live_or_poor_quality'),
+ )
expect(page).to have_content(body_error_message)
click_try_again
@@ -667,7 +671,7 @@
submit_images
message = strip_tags(t('errors.doc_auth.selfie_not_live_or_poor_quality_heading'))
expect(page).to have_content(message)
- detail_message = strip_tags(t('doc_auth.errors.alerts.selfie_not_live'))
+ detail_message = strip_tags(t('doc_auth.errors.alerts.selfie_not_live_or_poor_quality'))
security_message = strip_tags(
t(
'idv.warning.attempts_html',
@@ -705,7 +709,7 @@
submit_images
message = strip_tags(t('errors.doc_auth.selfie_not_live_or_poor_quality_heading'))
expect(page).to have_content(message)
- detail_message = strip_tags(t('doc_auth.errors.alerts.selfie_poor_quality'))
+ detail_message = strip_tags(t('doc_auth.errors.alerts.selfie_not_live_or_poor_quality'))
security_message = strip_tags(
t(
'idv.warning.attempts_html',
@@ -782,7 +786,7 @@
submit_images
message = strip_tags(t('errors.doc_auth.selfie_not_live_or_poor_quality_heading'))
expect(page).to have_content(message)
- detail_message = strip_tags(t('doc_auth.errors.alerts.selfie_not_live'))
+ detail_message = strip_tags(t('doc_auth.errors.alerts.selfie_not_live_or_poor_quality'))
security_message = strip_tags(
t(
'idv.warning.attempts_html',
diff --git a/spec/features/idv/doc_auth/redo_document_capture_spec.rb b/spec/features/idv/doc_auth/redo_document_capture_spec.rb
index 3fa79cf69d8..5ca22139de6 100644
--- a/spec/features/idv/doc_auth/redo_document_capture_spec.rb
+++ b/spec/features/idv/doc_auth/redo_document_capture_spec.rb
@@ -153,7 +153,7 @@
end
end
- shared_examples_for 'selfie image re-upload not allowed' do
+ shared_examples_for 'document and selfie images re-upload not allowed' do
it 'stops user submitting the same images again' do
expect(fake_analytics).to have_logged_event(
'IdV: doc auth document_capture visited',
@@ -240,7 +240,7 @@
end
context 'when selfie is enabled' do
- context 'error due to data issue with 2xx status code', allow_browser_log: true do
+ context 'when doc auth is success and face match fails (2xx)', allow_browser_log: true do
before do
expect(FeatureManagement).to receive(:idv_allow_selfie_check?).at_least(:once).
and_return(true)
@@ -257,14 +257,14 @@
sleep(10)
end
- it_behaves_like 'selfie image re-upload not allowed'
+ it_behaves_like 'document and selfie images re-upload not allowed'
it 'shows current existing header' do
expect_doc_capture_page_header(t('doc_auth.headings.review_issues'))
end
end
- context 'when doc auth is success and portrait match fails', allow_browser_log: true do
+ context 'when doc auth passes and portrait match is not live', allow_browser_log: true do
before do
expect(FeatureManagement).to receive(:idv_allow_selfie_check?).at_least(:once).
and_return(true)
@@ -273,7 +273,7 @@
start_idv_from_sp(biometric_comparison_required: true)
sign_in_and_2fa_user
complete_doc_auth_steps_before_document_capture_step
- mock_doc_auth_success_face_match_fail
+ mock_doc_auth_pass_and_portrait_match_not_live
attach_images
attach_selfie
submit_images
@@ -307,7 +307,7 @@
expect(page).to have_css(
'.usa-error-message[role="alert"]',
text: t('doc_auth.errors.doc.resubmit_failed_image'),
- count: 3,
+ count: 1,
)
end
end
@@ -368,7 +368,7 @@
start_idv_from_sp(biometric_comparison_required: true)
sign_in_and_2fa_user
complete_doc_auth_steps_before_document_capture_step
- mock_doc_auth_success_face_match_fail
+ mock_doc_auth_fail_face_match_fail
attach_images
attach_selfie
submit_images
@@ -376,7 +376,7 @@
sleep(10)
end
- it_behaves_like 'selfie image re-upload not allowed'
+ it_behaves_like 'document and selfie images re-upload not allowed'
end
context 'when pii validation fails', allow_browser_log: true do
diff --git a/spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_failure_with_face_match_fail.json b/spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_failure_with_face_match_fail.json
new file mode 100644
index 00000000000..af9221a5f71
--- /dev/null
+++ b/spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_failure_with_face_match_fail.json
@@ -0,0 +1,740 @@
+{
+ "Status": {
+ "ConversationId": "31000406185568",
+ "RequestId": "708870588",
+ "TransactionStatus": "failed",
+ "TransactionReasonCode": {
+ "Code": "failed_true_id",
+ "Description": "Failed: TrueID document authentication"
+ },
+ "Reference": "Reference1",
+ "ServerInfo": "bctlsidmapp01.risk.regn.net"
+ },
+ "Products": [
+ {
+ "ProductType": "TrueID",
+ "ExecutedStepName": "True_ID_Step",
+ "ProductConfigurationName": "AndreV3_TrueID_Flow",
+ "ProductStatus": "fail",
+ "ParameterDetails": [
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocumentName",
+ "Values": [{"Value": "Connecticut (CT) Driver License"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocAuthResult",
+ "Values": [{"Value": "Failed"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssuerCode",
+ "Values": [{"Value": "CT"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssuerName",
+ "Values": [{"Value": "Connecticut"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssuerType",
+ "Values": [{"Value": "StateProvince"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocClassCode",
+ "Values": [{"Value": "DriversLicense"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocClass",
+ "Values": [{"Value": "DriversLicense"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocClassName",
+ "Values": [{"Value": "Drivers License"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIsGeneric",
+ "Values": [{"Value": "false"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssue",
+ "Values": [{"Value": "2009"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssueType",
+ "Values": [{"Value": "Driver License"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocSize",
+ "Values": [{"Value": "ID1"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ClassificationMode",
+ "Values": [{"Value": "Automatic"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "OrientationChanged",
+ "Values": [{"Value": "false"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "PresentationChanged",
+ "Values": [{"Value": "false"}]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "Side",
+ "Values":[
+ {"Value": "Front"},
+ {"Value": "Back"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "GlareMetric",
+ "Values": [
+ {"Value": "100"},
+ {"Value": "100"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "SharpnessMetric",
+ "Values":[
+ {"Value": "50"},
+ {"Value": "56"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "IsTampered",
+ "Values":[
+ {"Value": "0"},
+ {"Value": "0"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "IsCropped",
+ "Values":[
+ {"Value": "1"},
+ {"Value": "1"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "HorizontalResolution",
+ "Values":[
+ {"Value": "418"},
+ {"Value": "420"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "VerticalResolution",
+ "Values":[
+ {"Value": "418"},
+ {"Value": "420"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "Light",
+ "Values":[
+ {"Value": "White"},
+ {"Value": "White"}
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "MimeType",
+ "Values":[
+ {"Value": "image/vnd.ms-photo"},
+ {"Value": "image/vnd.ms-photo"}
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "FullName",
+ "Values": [{"Value": "EVAN M MOZINGO"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Sex",
+ "Values": [{"Value": "Male"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Age",
+ "Values": [{"Value": "30"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DOB_Year",
+ "Values": [{"Value": "1989"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DOB_Month",
+ "Values": [{"Value": "9"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DOB_Day",
+ "Values": [{"Value": "11"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ExpirationDate_Year",
+ "Values": [{"Value": "2017"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ExpirationDate_Month",
+ "Values": [{"Value": "9"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ExpirationDate_Day",
+ "Values": [{"Value": "11"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Portrait",
+ "Values": [{"Value": "/9j/4AAQSkZJRgABAQEBogGiAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9\nPDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhC\nY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAAR\nCAI1AagDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA\nAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK\nFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG\nh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl\n5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA\nAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk\nNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE\nhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk\n5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDvOlVr2QRwjOeeOKtGqmok/ZwB6jmluNu2\npkzbmbcOcimEFgQykVKRgDpTQSDkkjHr0o9mP61IhiTy3KgfK3OaWVdwAGfYipdpUeYr8Z5B\nGaeyjdnGaXsx/WplSOHzThl2qvRQetOaz3jKnB9Ksxrt471E1yc7UGOTnn0o9mH1qaKcqOow\nycDrg9aiVv3i7Uz61baRm4AzmkkiUehOKr2RP1yYTNyAFIyASRWeYpPNOVOCeuOlX1kUrhk6\ncD3pnGSCPeq9iH12aK+XjJwhZfam+ZLliEOPp1q2MFscZ96axIJCn5fY8U/ZIX16ZBlin3Tg\ne3WkzuOAMAdR71PkClwWPzfnR7JC+vVCDgMPl57UjrzvCAMeBz0qdsAfSmgADFHsg+vVCBQT\n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\nRxR5agcDGKKKLABRc520UUUAf//Z"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_1_AlertName",
+ "Values": [{"Value": "Visible Pattern"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_AlertName",
+ "Values": [{"Value": "Visible Pattern"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_AlertName",
+ "Values": [{"Value": "Visible Pattern"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_4_AlertName",
+ "Values": [{"Value": "Visible Pattern"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_5_AlertName",
+ "Values": [{"Value": "1D Control Number Valid"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_6_AlertName",
+ "Values": [{"Value": "2D Barcode Content"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_7_AlertName",
+ "Values": [{"Value": "Control Number Crosscheck"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_8_AlertName",
+ "Values": [{"Value": "Document Expired"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_9_AlertName",
+ "Values": [{"Value": "2D Barcode Read"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_10_AlertName",
+ "Values": [{"Value": "Birth Date Crosscheck"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_11_AlertName",
+ "Values": [{"Value": "Birth Date Valid"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_AlertName",
+ "Values": [{"Value": "Document Classification"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_AlertName",
+ "Values": [{"Value": "Document Crosscheck Aggregation"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_14_AlertName",
+ "Values": [{"Value": "Document Number Crosscheck"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_15_AlertName",
+ "Values": [{"Value": "Expiration Date Crosscheck"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_16_AlertName",
+ "Values": [{"Value": "Expiration Date Valid"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_17_AlertName",
+ "Values": [{"Value": "Full Name Crosscheck"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_18_AlertName",
+ "Values": [{"Value": "Issue Date Crosscheck"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_19_AlertName",
+ "Values": [{"Value": "Issue Date Valid"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_20_AlertName",
+ "Values": [{"Value": "Layout Valid"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_21_AlertName",
+ "Values": [{"Value": "Sex Crosscheck"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_AlertName",
+ "Values": [{"Value": "Visible Color Response"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_AlertName",
+ "Values": [{"Value": "Visible Pattern"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_AlertName",
+ "Values": [{"Value": "Visible Photo Characteristics"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_1_AuthenticationResult",
+ "Values": [{
+ "Value": "Failed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_AuthenticationResult",
+ "Values": [{
+ "Value": "Failed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_AuthenticationResult",
+ "Values": [{
+ "Value": "Failed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_4_AuthenticationResult",
+ "Values": [{
+ "Value": "Failed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_5_AuthenticationResult",
+ "Values": [{
+ "Value": "Failed",
+ "Detail": "Checks whether the 1D barcode is indicative of known-fake documents."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_6_AuthenticationResult",
+ "Values": [{
+ "Value": "Failed",
+ "Detail": "Checked the contents of the two-dimensional barcode on the document."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_7_AuthenticationResult",
+ "Values": [{
+ "Value": "Caution",
+ "Detail": "Compare the machine-readable control number field to the human-readable control number field."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_8_AuthenticationResult",
+ "Values": [{
+ "Value": "Attention",
+ "Detail": "Checked if the document is expired."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_9_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified that the two-dimensional barcode on the document was read successfully."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_10_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable birth date field to the human-readable birth date field."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_11_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified that the birth date is valid."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified that the type of document is supported and is able to be fully authenticated."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Compared the machine-readable fields to the human-readable fields."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_14_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable document number field to the human-readable document number field."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_15_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable expiration date field to the human-readable expiration date field."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_16_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified that the expiration date is valid."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_17_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable full name field to the human-readable full name field."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_18_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable issue date field to the human-readable issue date field."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_19_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified that the issue date is valid."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_20_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified that the layout of the document is correct."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_21_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable sex field to the human-readable sex field."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified the color response of an element on the visible image."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_AuthenticationResult",
+ "Values": [{
+ "Value": "Passed",
+ "Detail": "Verifies the visible characteristics of the Photo"
+ }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_1_Regions",
+ "Values": [{"Value": "Stylized DOB Label"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_Regions",
+ "Values": [{"Value": "Expires Label"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_Regions",
+ "Values": [{"Value": "Inches"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_4_Regions",
+ "Values": [{"Value": "Background Center"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_20_Regions",
+ "Values":[
+ {"Value": "2D Barcode Bottom Left"},
+ {"Value": "2D Barcode Top Left"}
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_Regions",
+ "Values": [{"Value": "Background Salmon"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_Regions",
+ "Values": [{"Value": "Background Boat"}]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_Regions",
+ "Values": [{"Value": "Photo"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_FullName",
+ "Values": [{"Value": "EVAN M MOZINGO"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_Surname",
+ "Values": [{"Value": "MOZINGO"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_GivenName",
+ "Values": [{"Value": "EVAN M"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_FirstName",
+ "Values": [{"Value": "EVAN"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_MiddleName",
+ "Values": [{"Value": "M"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DOB_Year",
+ "Values": [{"Value": "1989"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DOB_Month",
+ "Values": [{"Value": "9"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DOB_Day",
+ "Values": [{"Value": "11"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DocumentClassName",
+ "Values": [{"Value": "Drivers License"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DocumentNumber",
+ "Values": [{"Value": "096760377"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_ExpirationDate_Year",
+ "Values": [{"Value": "2017"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_ExpirationDate_Month",
+ "Values": [{"Value": "9"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_xpirationDate_Day",
+ "Values": [{"Value": "11"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssuingStateCode",
+ "Values": [{"Value": "CT"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssuingStateName",
+ "Values": [{"Value": "Connecticut"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_Address",
+ "Values": [{"Value": "1 MUDRY FARM RD
BRISTOL, CT 02809-2366"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_AddressLine1",
+ "Values": [{"Value": "1 MUDRY FARM RD"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_City",
+ "Values": [{"Value": "BRISTOL"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_State",
+ "Values": [{"Value": "CT"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_PostalCode",
+ "Values": [{"Value": "02809-2366"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_Sex",
+ "Values": [{"Value": "M"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_ControlNumber",
+ "Values": [{"Value": "demo a11230009"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_Height",
+ "Values": [{"Value": "5' 9\""}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssueDate_Year",
+ "Values": [{"Value": "2010"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssueDate_Month",
+ "Values": [{"Value": "10"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssueDate_Day",
+ "Values": [{"Value": "12"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_LicenseClass",
+ "Values": [{"Value": "D"}]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceMatchResult",
+ "Values": [{"Value": "Fail"}]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceMatchScore",
+ "Values": [{"Value": "26"}]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceStatusCode",
+ "Values": [{"Value": "1"}]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceErrorMessage",
+ "Values": [{"Value": "Successful. Liveness: Live"}]
+ }
+ ]
+ },
+ {
+ "ProductType": "TrueID_Decision",
+ "ExecutedStepName": "Decision",
+ "ProductConfigurationName": "TRUEID_FAIL",
+ "ProductStatus": "fail",
+ "ProductReason": {
+ "Code": "failed_true_id",
+ "Description": "Failed: TrueID document authentication"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_success_with_portrait_match_not_live.json b/spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_success_with_portrait_match_not_live.json
new file mode 100644
index 00000000000..c344327fff4
--- /dev/null
+++ b/spec/fixtures/proofing/lexis_nexis/true_id/true_id_response_success_with_portrait_match_not_live.json
@@ -0,0 +1,1100 @@
+{
+ "Status": {
+ "ConversationId": "70000300394121",
+ "RequestId": "614507871",
+ "TransactionStatus": "passed",
+ "TransactionReasonCode": {
+ "Code": "trueid_pass",
+ "Description": "TRUEID PASS"
+ },
+ "Reference": "ca6e36c4-8a55-4831-aa8a-38d78b7c80e3"
+ },
+ "Products": [
+ {
+ "ProductType": "TrueID",
+ "ExecutedStepName": "True_ID_Step",
+ "ProductConfigurationName": "GSA2.V3.TrueID.CROP.PT.test",
+ "ProductStatus": "pass",
+ "ParameterDetails": [
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocumentName",
+ "Values": [{ "Value": "Maryland (MD) Driver's License - STAR" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocAuthResult",
+ "Values": [{ "Value": "Passed" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocAuthTamperResult",
+ "Values": [{ "Value": "Passed" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocAuthTamperSensitivity",
+ "Values": [{ "Value": "Normal" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssuerCode",
+ "Values": [{ "Value": "MD" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssuerName",
+ "Values": [{ "Value": "Maryland" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssuerType",
+ "Values": [{ "Value": "StateProvince" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocClassCode",
+ "Values": [{ "Value": "DriversLicense" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocClass",
+ "Values": [{ "Value": "DriversLicense" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocClassName",
+ "Values": [{ "Value": "Drivers License" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIsGeneric",
+ "Values": [{ "Value": "false" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssue",
+ "Values": [{ "Value": "2016" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocIssueType",
+ "Values": [{ "Value": "Driver's License - STAR" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DocSize",
+ "Values": [{ "Value": "ID1" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ClassificationMode",
+ "Values": [{ "Value": "Automatic" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "OrientationChanged",
+ "Values": [{ "Value": "true" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "PresentationChanged",
+ "Values": [{ "Value": "false" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "Side",
+ "Values": [{ "Value": "Front" }, { "Value": "Back" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "GlareMetric",
+ "Values": [{ "Value": "100" }, { "Value": "100" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "SharpnessMetric",
+ "Values": [{ "Value": "65" }, { "Value": "65" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "IsTampered",
+ "Values": [{ "Value": "0" }, { "Value": "0" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "IsCropped",
+ "Values": [{ "Value": "1" }, { "Value": "1" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "HorizontalResolution",
+ "Values": [{ "Value": "600" }, { "Value": "600" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "VerticalResolution",
+ "Values": [{ "Value": "600" }, { "Value": "600" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "Light",
+ "Values": [{ "Value": "White" }, { "Value": "White" }]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "MimeType",
+ "Values": [
+ { "Value": "image/vnd.ms-photo" },
+ { "Value": "image/vnd.ms-photo" }
+ ]
+ },
+ {
+ "Group": "IMAGE_METRICS_RESULT",
+ "Name": "ImageMetrics_Id",
+ "Values": [
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "637aa4c6-eeb3-453f-899e-a56effcf3747" }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "FullName",
+ "Values": [{ "Value": "DAVID LICENSE SAMPLE" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Sex",
+ "Values": [{ "Value": "Male" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Age",
+ "Values": [{ "Value": "33" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DOB_Year",
+ "Values": [{ "Value": "1985" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DOB_Month",
+ "Values": [{ "Value": "7" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "DOB_Day",
+ "Values": [{ "Value": "1" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ExpirationDate_Year",
+ "Values": [{ "Value": "2099" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ExpirationDate_Month",
+ "Values": [{ "Value": "10" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "ExpirationDate_Day",
+ "Values": [{ "Value": "15" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_1_AlertName",
+ "Values": [{ "Value": "Document Expired" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_AlertName",
+ "Values": [{ "Value": "Visible Pattern" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_AlertName",
+ "Values": [{ "Value": "Document Tampering Detection" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_4_AlertName",
+ "Values": [{ "Value": "2D Barcode Content" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_5_AlertName",
+ "Values": [{ "Value": "2D Barcode Read" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_6_AlertName",
+ "Values": [{ "Value": "Barcode Encoding" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_7_AlertName",
+ "Values": [{ "Value": "Birth Date Crosscheck" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_8_AlertName",
+ "Values": [{ "Value": "Birth Date Valid" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_9_AlertName",
+ "Values": [{ "Value": "Document Classification" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_10_AlertName",
+ "Values": [{ "Value": "Document Crosscheck Aggregation" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_11_AlertName",
+ "Values": [{ "Value": "Document Number Crosscheck" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_AlertName",
+ "Values": [{ "Value": "Document Tampering Detection" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_AlertName",
+ "Values": [{ "Value": "Document Tampering Detection" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_14_AlertName",
+ "Values": [{ "Value": "Document Tampering Detection" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_15_AlertName",
+ "Values": [{ "Value": "Expiration Date Crosscheck" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_16_AlertName",
+ "Values": [{ "Value": "Expiration Date Valid" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_17_AlertName",
+ "Values": [{ "Value": "Full Name Crosscheck" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_18_AlertName",
+ "Values": [{ "Value": "Issue Date Crosscheck" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_19_AlertName",
+ "Values": [{ "Value": "Issue Date Valid" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_20_AlertName",
+ "Values": [{ "Value": "Series Expired" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_21_AlertName",
+ "Values": [{ "Value": "Sex Crosscheck" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_AlertName",
+ "Values": [{ "Value": "Visible Pattern" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_AlertName",
+ "Values": [{ "Value": "Visible Pattern" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_AlertName",
+ "Values": [{ "Value": "Visible Pattern" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_Model",
+ "Values": [{ "Value": "Text Tampering Detection V1.3.1 (Beta)" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_Model",
+ "Values": [{ "Value": "Photo Tampering Detection V2.4" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_Model",
+ "Values": [{ "Value": "Text Tampering Detection V1.2.1" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_14_Model",
+ "Values": [{ "Value": "Physical Document Presence V2.5" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_1_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Checked if the document is expired."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Examines a document for evidence of tampering"
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_4_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Checked the contents of the two-dimensional barcode on the document."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_5_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Attention",
+ "Detail": "Verified that the two-dimensional barcode on the document was read successfully."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_6_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified the format of the barcode."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_7_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable birth date field to the human-readable birth date field."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_8_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified that the birth date is valid."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_9_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified that the type of document is supported and is able to be fully authenticated."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_10_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Compared the machine-readable fields to the human-readable fields."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_11_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable document number field to the human-readable document number field."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Examines a document for evidence of tampering"
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Examines a document for evidence of tampering"
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_14_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Examines a document for evidence of tampering"
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_15_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable expiration date field to the human-readable expiration date field."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_16_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified that the expiration date is valid."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_17_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable full name field to the human-readable full name field."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_18_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable issue date field to the human-readable issue date field."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_19_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified that the issue date is valid."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_20_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified whether the document type is still in circulation."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_21_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Compare the machine-readable sex field to the human-readable sex field."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_AuthenticationResult",
+ "Values": [
+ {
+ "Value": "Passed",
+ "Detail": "Verified the presence of a pattern on the visible image."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_1_Disposition",
+ "Values": [{ "Value": "The document has expired" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_Disposition",
+ "Values": [{ "Value": "A visible pattern was not found" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_Disposition",
+ "Values": [
+ {
+ "Value": "Evidence suggests that the document may have been tampered with."
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_4_Disposition",
+ "Values": [{ "Value": "The 2D barcode is formatted correctly" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_5_Disposition",
+ "Values": [{ "Value": "The 2D barcode was read successfully" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_6_Disposition",
+ "Values": [
+ {
+ "Value": "The barcode encoding is consistent with the expected encoding for the type"
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_7_Disposition",
+ "Values": [{ "Value": "The birth dates match" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_8_Disposition",
+ "Values": [{ "Value": "The birth date is valid" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_9_Disposition",
+ "Values": [{ "Value": "The document type is supported" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_10_Disposition",
+ "Values": [
+ {
+ "Value": "There are not a large number of differences between electronic and human-readable data sources"
+ }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_11_Disposition",
+ "Values": [{ "Value": "The document numbers match" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_Disposition",
+ "Values": [
+ { "Value": "No evidence of document tampering was detected." }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_Disposition",
+ "Values": [
+ { "Value": "No evidence of document tampering was detected." }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_14_Disposition",
+ "Values": [
+ { "Value": "No evidence of document tampering was detected." }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_15_Disposition",
+ "Values": [{ "Value": "The expiration dates match" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_16_Disposition",
+ "Values": [{ "Value": "The expiration date is valid" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_17_Disposition",
+ "Values": [{ "Value": "The full names match" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_18_Disposition",
+ "Values": [{ "Value": "The issue dates match" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_19_Disposition",
+ "Values": [{ "Value": "The issue date is valid" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_20_Disposition",
+ "Values": [{ "Value": "The series has not expired" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_21_Disposition",
+ "Values": [{ "Value": "The sexes match" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_Disposition",
+ "Values": [{ "Value": "A visible pattern was found" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_Disposition",
+ "Values": [{ "Value": "A visible pattern was found" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_Disposition",
+ "Values": [{ "Value": "A visible pattern was found" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_Regions",
+ "Values": [{ "Value": "Background" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_Regions",
+ "Values": [
+ { "Value": "Address" },
+ { "Value": "Birth Date" },
+ { "Value": "Document Number" },
+ { "Value": "Expiration Date" },
+ { "Value": "Full Name" },
+ { "Value": "Issue Date" }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_Regions",
+ "Values": [{ "Value": "Photo" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_Regions",
+ "Values": [
+ { "Value": "Address" },
+ { "Value": "Birth Date" },
+ { "Value": "Document Number" },
+ { "Value": "Expiration Date" },
+ { "Value": "Full Name" },
+ { "Value": "Issue Date" }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_Regions",
+ "Values": [{ "Value": "Expires Label" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_Regions",
+ "Values": [{ "Value": "USA" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_Regions",
+ "Values": [{ "Value": "Background Upper" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_2_Regions_Reference",
+ "Values": [{ "Value": "faacfb79-d0a1-4a8e-b868-20c604988e84" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_3_Regions_Reference",
+ "Values": [
+ { "Value": "c8be94b6-78ac-4e85-88cb-e17880371e4a" },
+ { "Value": "a8226d92-e62c-42a3-a206-ab7c3e3d9796" },
+ { "Value": "c2e18c41-e3de-46a8-abc7-3412015a6cef" },
+ { "Value": "80f8f290-daa0-47e2-828e-52106bb26f31" },
+ { "Value": "2c74b850-dd89-41bb-a21c-70ae0563ef77" },
+ { "Value": "63bf5053-f81f-493f-aff0-33c07d07a894" }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_12_Regions_Reference",
+ "Values": [{ "Value": "f29b1fe5-6482-4b39-8b4a-d91caf4ecb57" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_13_Regions_Reference",
+ "Values": [
+ { "Value": "c8be94b6-78ac-4e85-88cb-e17880371e4a" },
+ { "Value": "a8226d92-e62c-42a3-a206-ab7c3e3d9796" },
+ { "Value": "c2e18c41-e3de-46a8-abc7-3412015a6cef" },
+ { "Value": "80f8f290-daa0-47e2-828e-52106bb26f31" },
+ { "Value": "2c74b850-dd89-41bb-a21c-70ae0563ef77" },
+ { "Value": "63bf5053-f81f-493f-aff0-33c07d07a894" }
+ ]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_22_Regions_Reference",
+ "Values": [{ "Value": "d55f2c66-f84f-4213-a660-4ff9e5d0fde5" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_23_Regions_Reference",
+ "Values": [{ "Value": "bbf6ba02-ee3f-4b5c-a5d0-2fdb39ac79f7" }]
+ },
+ {
+ "Group": "AUTHENTICATION_RESULT",
+ "Name": "Alert_24_Regions_Reference",
+ "Values": [{ "Value": "20203cb8-f8a4-4a5b-999f-3700f73fe4fe" }]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceMatchResult",
+ "Values": [{"Value": "Fail"}]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceMatchScore",
+ "Values": [{"Value": "96"}]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceStatusCode",
+ "Values": [{"Value": "1"}]
+ },
+ {
+ "Group": "PORTRAIT_MATCH_RESULT",
+ "Name": "FaceErrorMessage",
+ "Values": [{"Value": "Liveness: NotLive"}]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_FullName",
+ "Values": [{ "Value": "DAVID LICENSE SAMPLE" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_Surname",
+ "Values": [{ "Value": "SAMPLE" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_GivenName",
+ "Values": [{ "Value": "DAVID LICENSE" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_FirstName",
+ "Values": [{ "Value": "DAVID" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_MiddleName",
+ "Values": [{ "Value": "LICENSE" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DOB_Year",
+ "Values": [{ "Value": "1986" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DOB_Month",
+ "Values": [{ "Value": "7" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DOB_Day",
+ "Values": [{ "Value": "1" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DocumentClassName",
+ "Values": [{ "Value": "Drivers License" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_DocumentNumber",
+ "Values": [{ "Value": "M555555555555" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_ExpirationDate_Year",
+ "Values": [{ "Value": "2099" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_ExpirationDate_Month",
+ "Values": [{ "Value": "10" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_xpirationDate_Day",
+ "Values": [{ "Value": "15" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssuingStateCode",
+ "Values": [{ "Value": "MD" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssuingStateName",
+ "Values": [{ "Value": "Maryland" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_CountryCode",
+ "Values": [{ "Value": "USA" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_Address",
+ "Values": [
+ {
+ "Value": "123 ABC AVExE2x80xA8ANYTOWN, MD 12345"
+ }
+ ]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_AddressLine1",
+ "Values": [{ "Value": "123 ABC AVE" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_AddressLine2",
+ "Values": [{ "Value": "APT 3E" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_City",
+ "Values": [{ "Value": "ANYTOWN" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_State",
+ "Values": [{ "Value": "MD" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_PostalCode",
+ "Values": [{ "Value": "12345" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_Height",
+ "Values": [{ "Value": "5' 9\"" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssueDate_Year",
+ "Values": [{ "Value": "2016" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssueDate_Month",
+ "Values": [{ "Value": "10" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_IssueDate_Day",
+ "Values": [{ "Value": "15" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_LicenseClass",
+ "Values": [{ "Value": "C" }]
+ },
+ {
+ "Group": "IDAUTH_FIELD_DATA",
+ "Name": "Fields_LicenseRestrictions",
+ "Values": [{ "Value": "B" }]
+ },
+ {
+ "Group": "DOCUMENT_REGION",
+ "Name": "DocumentRegion_Id",
+ "Values": [
+ { "Value": "ce2cf0e2-5373-4ec2-84e8-7fe44a01642b" },
+ { "Value": "0b4f4f2b-cbd6-43e9-ac67-55bf2bdd9df5" },
+ { "Value": "c8be94b6-78ac-4e85-88cb-e17880371e4a" },
+ { "Value": "a0fdf00c-071c-4d8e-81af-8af0fc7688b8" },
+ { "Value": "faacfb79-d0a1-4a8e-b868-20c604988e84" },
+ { "Value": "3362ad4b-a36b-487e-826c-c748c7b04e8d" },
+ { "Value": "20203cb8-f8a4-4a5b-999f-3700f73fe4fe" },
+ { "Value": "a8226d92-e62c-42a3-a206-ab7c3e3d9796" },
+ { "Value": "a3e3a625-8b0e-4deb-a91e-86afc55d036b" },
+ { "Value": "cda4092d-9208-4871-bbc1-1b732c299d26" },
+ { "Value": "42770baf-3a4a-4477-9e5f-4400237273fe" },
+ { "Value": "c2e18c41-e3de-46a8-abc7-3412015a6cef" },
+ { "Value": "b36594f2-d19c-48aa-98c2-2b4f8429744f" },
+ { "Value": "80f8f290-daa0-47e2-828e-52106bb26f31" },
+ { "Value": "d55f2c66-f84f-4213-a660-4ff9e5d0fde5" },
+ { "Value": "26ca0c85-01ab-4311-bfd5-d27d2ee975eb" },
+ { "Value": "0af79f76-1542-4391-ad17-a5d6169be57f" },
+ { "Value": "2c74b850-dd89-41bb-a21c-70ae0563ef77" },
+ { "Value": "64e8ee97-2b24-452d-a5af-1627951aa737" },
+ { "Value": "63bf5053-f81f-493f-aff0-33c07d07a894" },
+ { "Value": "f29b1fe5-6482-4b39-8b4a-d91caf4ecb57" },
+ { "Value": "35442fb1-c3bb-4f2f-ad9e-537a8f0e7e0f" },
+ { "Value": "29964031-e072-4204-a9ae-b2b7122bfdc1" },
+ { "Value": "a3bbdf8b-62f5-438f-bf72-091bb2f6f0ff" },
+ { "Value": "42d0c49e-fc7a-45da-8f6d-8896c4b5267f" },
+ { "Value": "5430efcb-523b-4c62-a190-e9aa7eea4ebd" },
+ { "Value": "bbf6ba02-ee3f-4b5c-a5d0-2fdb39ac79f7" },
+ { "Value": "0686341c-0b3f-4544-840e-58822120ef06" }
+ ]
+ },
+ {
+ "Group": "DOCUMENT_REGION",
+ "Name": "DocumentRegion_Key",
+ "Values": [
+ { "Value": "1D Barcode" },
+ { "Value": "2D Barcode" },
+ { "Value": "Address" },
+ { "Value": "Alaska Validator" },
+ { "Value": "Background" },
+ { "Value": "Background Lower" },
+ { "Value": "Background Upper" },
+ { "Value": "Birth Date" },
+ { "Value": "Birth Date" },
+ { "Value": "DOB Label" },
+ { "Value": "DOB Label Text" },
+ { "Value": "Document Number" },
+ { "Value": "Document Type" },
+ { "Value": "Expiration Date" },
+ { "Value": "Expires Label" },
+ { "Value": "Expires Label Position" },
+ { "Value": "Eye Color" },
+ { "Value": "Full Name" },
+ { "Value": "Height" },
+ { "Value": "Issue Date" },
+ { "Value": "Photo" },
+ { "Value": "Photo Printing" },
+ { "Value": "Secondary Photo" },
+ { "Value": "Sex" },
+ { "Value": "Sex Height Labels" },
+ { "Value": "Signature" },
+ { "Value": "USA" },
+ { "Value": "Weight" }
+ ]
+ },
+ {
+ "Group": "DOCUMENT_REGION",
+ "Name": "DocumentRegion_ImageReference",
+ "Values": [
+ { "Value": "637aa4c6-eeb3-453f-899e-a56effcf3747" },
+ { "Value": "637aa4c6-eeb3-453f-899e-a56effcf3747" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "637aa4c6-eeb3-453f-899e-a56effcf3747" },
+ { "Value": "637aa4c6-eeb3-453f-899e-a56effcf3747" },
+ { "Value": "637aa4c6-eeb3-453f-899e-a56effcf3747" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" },
+ { "Value": "8a19313b-5dc6-4113-85f5-42c9829d903e" }
+ ]
+ }
+ ]
+ },
+ {
+ "ProductType": "TrueID_Decision",
+ "ExecutedStepName": "Decision",
+ "ProductConfigurationName": "TRUEID_PASS",
+ "ProductStatus": "pass",
+ "ProductReason": {
+ "Code": "trueid_pass",
+ "Description": "TRUEID PASS"
+ }
+ }
+ ]
+}
diff --git a/spec/i18n_spec.rb b/spec/i18n_spec.rb
index 84a1838a3e1..7c6bdfa9e90 100644
--- a/spec/i18n_spec.rb
+++ b/spec/i18n_spec.rb
@@ -86,9 +86,8 @@ class BaseTask
{ key: 'anonymous_mailer.password_reset_missing_user.try_different_email', locales: %i[zh] },
{ key: 'anonymous_mailer.password_reset_missing_user.use_this_email_html', locales: %i[zh] },
{ key: 'doc_auth.buttons.close', locales: %i[zh] },
- { key: 'doc_auth.errors.alerts.selfie_not_live', locales: %i[zh] },
{ key: 'doc_auth.errors.alerts.selfie_not_live_help_link_text', locales: %i[zh] },
- { key: 'doc_auth.errors.alerts.selfie_poor_quality', locales: %i[zh] },
+ { key: 'doc_auth.errors.alerts.selfie_not_live_or_poor_quality', locales: %i[zh] },
{ key: 'doc_auth.errors.general.selfie_failure_help_link_text', locales: %i[zh] },
{ key: 'doc_auth.headings.hybrid_handoff_selfie', locales: %i[zh] },
{ key: 'doc_auth.info.getting_started_html', locales: %i[zh] },
diff --git a/spec/services/doc_auth/error_generator_spec.rb b/spec/services/doc_auth/error_generator_spec.rb
index db61b4f7fdd..d46c6bc285a 100644
--- a/spec/services/doc_auth/error_generator_spec.rb
+++ b/spec/services/doc_auth/error_generator_spec.rb
@@ -471,7 +471,7 @@ def build_error_info(
output = described_class.new(config).generate_doc_auth_errors(error_info)
expect(output.keys).to contain_exactly(:general, :hints, :selfie)
- expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_NOT_LIVE)
+ expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_NOT_LIVE_OR_POOR_QUALITY)
expect(output[:selfie]).to contain_exactly(DocAuth::Errors::SELFIE_FAILURE)
expect(output[:hints]).to eq(false)
end
@@ -490,7 +490,7 @@ def build_error_info(
output = described_class.new(config).generate_doc_auth_errors(error_info)
expect(output.keys).to contain_exactly(:general, :hints, :selfie)
- expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_POOR_QUALITY)
+ expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_NOT_LIVE_OR_POOR_QUALITY)
expect(output[:selfie]).to contain_exactly(DocAuth::Errors::SELFIE_FAILURE)
expect(output[:hints]).to eq(false)
end
@@ -552,7 +552,7 @@ def build_error_info(
output = described_class.new(config).generate_doc_auth_errors(error_info)
expect(output.keys).to contain_exactly(:general, :hints, :selfie)
- expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_NOT_LIVE)
+ expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_NOT_LIVE_OR_POOR_QUALITY)
expect(output[:selfie]).to contain_exactly(DocAuth::Errors::SELFIE_FAILURE)
expect(output[:hints]).to eq(false)
end
@@ -571,7 +571,7 @@ def build_error_info(
output = described_class.new(config).generate_doc_auth_errors(error_info)
expect(output.keys).to contain_exactly(:general, :hints, :selfie)
- expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_POOR_QUALITY)
+ expect(output[:general]).to contain_exactly(DocAuth::Errors::SELFIE_NOT_LIVE_OR_POOR_QUALITY)
expect(output[:selfie]).to contain_exactly(DocAuth::Errors::SELFIE_FAILURE)
expect(output[:hints]).to eq(false)
end
diff --git a/spec/support/features/doc_auth_helper.rb b/spec/support/features/doc_auth_helper.rb
index 4d99e12d389..358f2ec41d1 100644
--- a/spec/support/features/doc_auth_helper.rb
+++ b/spec/support/features/doc_auth_helper.rb
@@ -270,6 +270,38 @@ def mock_doc_auth_failure_face_match_pass
)
end
+ def mock_doc_auth_fail_face_match_fail
+ failure_response = instance_double(
+ Faraday::Response,
+ status: 200,
+ body: LexisNexisFixtures.true_id_response_failure_with_face_match_fail,
+ )
+ DocAuth::Mock::DocAuthMockClient.mock_response!(
+ method: :get_results,
+ response: DocAuth::LexisNexis::Responses::TrueIdResponse.new(
+ failure_response,
+ DocAuth::LexisNexis::Config.new,
+ true, # liveness_checking_enabled
+ ),
+ )
+ end
+
+ def mock_doc_auth_pass_and_portrait_match_not_live
+ failure_response = instance_double(
+ Faraday::Response,
+ status: 200,
+ body: LexisNexisFixtures.true_id_response_success_with_portrait_match_not_live,
+ )
+ DocAuth::Mock::DocAuthMockClient.mock_response!(
+ method: :get_results,
+ response: DocAuth::LexisNexis::Responses::TrueIdResponse.new(
+ failure_response,
+ DocAuth::LexisNexis::Config.new,
+ true, # liveness_checking_enabled
+ ),
+ )
+ end
+
def mock_doc_auth_pass_face_match_pass_no_address1
response = instance_double(
Faraday::Response,
diff --git a/spec/support/lexis_nexis_fixtures.rb b/spec/support/lexis_nexis_fixtures.rb
index 198fbb33942..4eb114cf331 100644
--- a/spec/support/lexis_nexis_fixtures.rb
+++ b/spec/support/lexis_nexis_fixtures.rb
@@ -178,6 +178,16 @@ def true_id_response_failure_with_face_match_pass
read_fixture_file_at_path('true_id/true_id_response_failure_with_face_match_pass.json')
end
+ def true_id_response_failure_with_face_match_fail
+ read_fixture_file_at_path('true_id/true_id_response_failure_with_face_match_fail.json')
+ end
+
+ def true_id_response_success_with_portrait_match_not_live
+ read_fixture_file_at_path(
+ 'true_id/true_id_response_success_with_portrait_match_not_live.json',
+ )
+ end
+
def true_id_response_failure_no_liveness
read_fixture_file_at_path('true_id/true_id_response_failure_no_liveness.json')
end
From b0fb701806c2816f08513e93e4a6c685152393f7 Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Thu, 2 May 2024 14:40:18 -0400
Subject: [PATCH 09/22] Refactor reCAPTCHA validator as form model (#10540)
* Refactor reCAPTCHA validator as form model
changelog: Internal, reCAPTCHA, Refactor reCAPTCHA validator as form model
* Update spec stubs
* Update mock validator specs
---
app/forms/new_phone_form.rb | 9 +--
app/services/phone_recaptcha_validator.rb | 2 +-
.../recaptcha_enterprise_validator.rb | 2 +-
app/services/recaptcha_mock_validator.rb | 2 +-
app/services/recaptcha_validator.rb | 33 ++++++--
spec/forms/new_phone_form_spec.rb | 11 +--
.../phone_recaptcha_validator_spec.rb | 35 +++++---
.../recaptcha_enterprise_validator_spec.rb | 81 +++++++++++++------
.../services/recaptcha_mock_validator_spec.rb | 21 +++--
spec/services/recaptcha_validator_spec.rb | 80 ++++++++++++------
10 files changed, 187 insertions(+), 89 deletions(-)
diff --git a/app/forms/new_phone_form.rb b/app/forms/new_phone_form.rb
index a12f2c73afa..62c6aa03f10 100644
--- a/app/forms/new_phone_form.rb
+++ b/app/forms/new_phone_form.rb
@@ -130,12 +130,9 @@ def validate_not_premium_rate
end
def validate_recaptcha_token
- return if !validate_recaptcha_token? || recaptcha_validator.valid?(recaptcha_token)
- errors.add(
- :recaptcha_token,
- I18n.t('errors.messages.invalid_recaptcha_token'),
- type: :invalid_recaptcha_token,
- )
+ return if !validate_recaptcha_token?
+ recaptcha_validator.submit(recaptcha_token)
+ errors.merge!(recaptcha_validator)
end
def recaptcha_validator
diff --git a/app/services/phone_recaptcha_validator.rb b/app/services/phone_recaptcha_validator.rb
index 65dbe978826..2878b1265d6 100644
--- a/app/services/phone_recaptcha_validator.rb
+++ b/app/services/phone_recaptcha_validator.rb
@@ -5,7 +5,7 @@ class PhoneRecaptchaValidator
attr_reader :parsed_phone, :validator_class, :validator_args
- delegate :valid?, :exempt?, to: :validator
+ delegate :submit, :errors, to: :validator
def initialize(parsed_phone:, validator_class: RecaptchaValidator, **validator_args)
@parsed_phone = parsed_phone
diff --git a/app/services/recaptcha_enterprise_validator.rb b/app/services/recaptcha_enterprise_validator.rb
index 2430751c450..5ab494efb94 100644
--- a/app/services/recaptcha_enterprise_validator.rb
+++ b/app/services/recaptcha_enterprise_validator.rb
@@ -16,7 +16,7 @@ def assessment_url
)
end
- def recaptcha_result(recaptcha_token)
+ def recaptcha_result
response = faraday.post(
assessment_url,
{
diff --git a/app/services/recaptcha_mock_validator.rb b/app/services/recaptcha_mock_validator.rb
index a06d4e2ffd2..eedc7c156c7 100644
--- a/app/services/recaptcha_mock_validator.rb
+++ b/app/services/recaptcha_mock_validator.rb
@@ -10,7 +10,7 @@ def initialize(score:, **kwargs)
private
- def recaptcha_result(_recaptcha_token)
+ def recaptcha_result
RecaptchaResult.new(success: true, score:)
end
end
diff --git a/app/services/recaptcha_validator.rb b/app/services/recaptcha_validator.rb
index ceee4414ca9..6f1a0c8a91e 100644
--- a/app/services/recaptcha_validator.rb
+++ b/app/services/recaptcha_validator.rb
@@ -1,14 +1,21 @@
# frozen_string_literal: true
class RecaptchaValidator
+ include ActiveModel::Model
+ include ActionView::Helpers::TranslationHelper
+
VERIFICATION_ENDPOINT = 'https://www.google.com/recaptcha/api/siteverify'
RESULT_ERRORS = ['missing-input-secret', 'invalid-input-secret'].freeze
attr_reader :recaptcha_action,
+ :recaptcha_token,
:score_threshold,
:analytics,
:extra_analytics_properties
+ validate :validate_token_exists
+ validate :validate_recaptcha_result
+
RecaptchaResult = Struct.new(:success, :score, :errors, :reasons, keyword_init: true) do
alias_method :success?, :success
@@ -33,20 +40,30 @@ def exempt?
!score_threshold.positive?
end
- def valid?(recaptcha_token)
- return true if exempt?
- return false if recaptcha_token.blank?
- result = recaptcha_result(recaptcha_token)
- log_analytics(result:)
- recaptcha_result_valid?(result)
+ def submit(recaptcha_token)
+ @recaptcha_token = recaptcha_token
+ @recaptcha_result = recaptcha_result if !exempt? && recaptcha_token.present?
+
+ log_analytics(result: @recaptcha_result) if @recaptcha_result
+ FormResponse.new(success: valid?, errors:, serialize_error_details_only: true)
rescue Faraday::Error => error
log_analytics(error:)
- true
+ FormResponse.new(success: true, serialize_error_details_only: true)
end
private
- def recaptcha_result(recaptcha_token)
+ def validate_token_exists
+ return if exempt? || recaptcha_token.present?
+ errors.add(:recaptcha_token, :blank, message: t('errors.messages.invalid_recaptcha_token'))
+ end
+
+ def validate_recaptcha_result
+ return if @recaptcha_result.blank? || recaptcha_result_valid?(@recaptcha_result)
+ errors.add(:recaptcha_token, :invalid, message: t('errors.messages.invalid_recaptcha_token'))
+ end
+
+ def recaptcha_result
response = faraday.post(
VERIFICATION_ENDPOINT,
URI.encode_www_form(secret: recaptcha_secret_key, response: recaptcha_token),
diff --git a/spec/forms/new_phone_form_spec.rb b/spec/forms/new_phone_form_spec.rb
index b15a95b3cee..e6fdbde9596 100644
--- a/spec/forms/new_phone_form_spec.rb
+++ b/spec/forms/new_phone_form_spec.rb
@@ -374,7 +374,7 @@
end
context 'with recaptcha enabled' do
- let(:valid) { nil }
+ let(:errors) { ActiveModel::Errors.new(RecaptchaValidator.new) }
let(:validator) { PhoneRecaptchaValidator.new(parsed_phone: nil) }
let(:recaptcha_token) { 'token' }
let(:phone) { '3065550100' }
@@ -385,13 +385,12 @@
before do
allow(FeatureManagement).to receive(:phone_recaptcha_enabled?).and_return(true)
- allow(validator).to receive(:valid?).with(recaptcha_token).and_return(valid)
+ allow(validator).to receive(:submit).with(recaptcha_token)
+ allow(validator).to receive(:errors).and_return(errors)
allow(form).to receive(:recaptcha_validator).and_return(validator)
end
context 'with valid recaptcha result' do
- let(:valid) { true }
-
it 'is valid' do
expect(result.success?).to eq(true)
expect(result.errors).to be_blank
@@ -417,7 +416,9 @@
end
context 'with invalid recaptcha result' do
- let(:valid) { false }
+ before do
+ errors.add(:recaptcha_token, :fail, message: 'fail')
+ end
it 'is invalid' do
expect(result.success?).to eq(false)
diff --git a/spec/services/phone_recaptcha_validator_spec.rb b/spec/services/phone_recaptcha_validator_spec.rb
index ec62fc93a50..01b34ef3b2b 100644
--- a/spec/services/phone_recaptcha_validator_spec.rb
+++ b/spec/services/phone_recaptcha_validator_spec.rb
@@ -14,7 +14,10 @@
end
it 'passes instance variables to validator' do
- recaptcha_validator = instance_double(RecaptchaValidator, valid?: true)
+ recaptcha_validator = instance_double(
+ RecaptchaValidator,
+ submit: FormResponse.new(success: true),
+ )
expect(RecaptchaValidator).to receive(:new).
with(
score_threshold: score_threshold_config,
@@ -26,7 +29,7 @@
).
and_return(recaptcha_validator)
- validator.valid?('token')
+ validator.submit('token')
end
context 'with custom recaptcha validator class' do
@@ -39,31 +42,37 @@
end
it 'delegates to validator instance of the given class' do
- recaptcha_validator = instance_double(RecaptchaMockValidator, valid?: true)
+ recaptcha_validator = instance_double(
+ RecaptchaValidator,
+ submit: FormResponse.new(success: true),
+ )
expect(RecaptchaMockValidator).to receive(:new).and_return(recaptcha_validator)
- expect(recaptcha_validator).to receive(:valid?)
+ expect(recaptcha_validator).to receive(:submit)
- validator.valid?('token')
+ validator.submit('token')
end
end
- describe '#valid?' do
+ describe '#submit' do
it 'is delegated to recaptcha validator' do
- recaptcha_validator = instance_double(RecaptchaValidator, valid?: true)
+ recaptcha_validator = instance_double(
+ RecaptchaValidator,
+ submit: FormResponse.new(success: true),
+ )
expect(validator).to receive(:validator).and_return(recaptcha_validator)
- expect(recaptcha_validator).to receive(:valid?)
+ expect(recaptcha_validator).to receive(:submit)
- validator.valid?('token')
+ validator.submit('token')
end
end
- describe '#exempt?' do
+ describe '#errors' do
it 'is delegated to recaptcha validator' do
- recaptcha_validator = instance_double(RecaptchaValidator, exempt?: true)
+ recaptcha_validator = instance_double(RecaptchaValidator, errors: ActiveModel::Errors.new({}))
expect(validator).to receive(:validator).and_return(recaptcha_validator)
- expect(recaptcha_validator).to receive(:exempt?)
+ expect(recaptcha_validator).to receive(:errors)
- validator.exempt?
+ validator.errors
end
end
diff --git a/spec/services/recaptcha_enterprise_validator_spec.rb b/spec/services/recaptcha_enterprise_validator_spec.rb
index f2e191866d2..2bcd247e5b6 100644
--- a/spec/services/recaptcha_enterprise_validator_spec.rb
+++ b/spec/services/recaptcha_enterprise_validator_spec.rb
@@ -51,19 +51,21 @@
end
end
- describe '#valid?' do
+ describe '#submit' do
let(:token) { nil }
- subject(:valid) { validator.valid?(token) }
+ subject(:response) { validator.submit(token) }
context 'with exemption' do
before do
allow(validator).to receive(:exempt?).and_return(true)
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'does not log analytics' do
- valid
+ response
expect(analytics).not_to have_logged_event('reCAPTCHA verify result received')
end
@@ -72,10 +74,15 @@
context 'with missing token' do
let(:token) { nil }
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for blank token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { blank: true } },
+ )
+ end
it 'does not log analytics' do
- valid
+ response
expect(analytics).not_to have_logged_event('reCAPTCHA verify result received')
end
@@ -84,10 +91,15 @@
context 'with blank token' do
let(:token) { '' }
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for blank token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { blank: true } },
+ )
+ end
it 'does not log analytics' do
- valid
+ response
expect(analytics).not_to have_logged_event('reCAPTCHA verify result received')
end
@@ -107,10 +119,15 @@
)
end
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for invalid token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { invalid: true } },
+ )
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -140,10 +157,12 @@
)
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -167,10 +186,12 @@
stub_request(:post, assessment_url).to_timeout
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -198,10 +219,15 @@
)
end
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for invalid token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { invalid: true } },
+ )
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -222,8 +248,8 @@
let(:token) { 'token' }
let(:score) { score_threshold + 0.1 }
- before do
- stub_recaptcha_response(
+ around do |example|
+ stubbed_request = stub_recaptcha_response(
body: {
tokenProperties: { valid: true, action: },
riskAnalysis: { score:, reasons: ['LOW_CONFIDENCE'] },
@@ -232,12 +258,16 @@
action:,
token:,
)
+ example.run
+ expect(stubbed_request).to have_been_made.once
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -266,14 +296,19 @@
)
end
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for invalid token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { invalid: true } },
+ )
+ end
end
context 'with extra analytics properties', allowed_extra_analytics: [:extra] do
let(:extra_analytics_properties) { { extra: true } }
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -295,7 +330,7 @@
let(:analytics) { nil }
it 'validates gracefully without analytics logging' do
- valid
+ response
end
end
end
diff --git a/spec/services/recaptcha_mock_validator_spec.rb b/spec/services/recaptcha_mock_validator_spec.rb
index 84b461f0a47..7e81436972e 100644
--- a/spec/services/recaptcha_mock_validator_spec.rb
+++ b/spec/services/recaptcha_mock_validator_spec.rb
@@ -12,17 +12,22 @@
freeze_time { example.run }
end
- describe '#valid?' do
+ describe '#submit' do
let(:token) { 'token' }
- subject(:valid) { validator.valid?(token) }
+ subject(:response) { validator.submit(token) }
context 'with failing score from validation service' do
let(:score) { score_threshold - 0.1 }
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for invalid token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { invalid: true } },
+ )
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -43,10 +48,12 @@
let(:token) { 'token' }
let(:score) { score_threshold + 0.1 }
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -66,7 +73,7 @@
let(:analytics) { nil }
it 'validates gracefully without analytics logging' do
- valid
+ response
end
end
end
diff --git a/spec/services/recaptcha_validator_spec.rb b/spec/services/recaptcha_validator_spec.rb
index d475410e00e..2b433756c00 100644
--- a/spec/services/recaptcha_validator_spec.rb
+++ b/spec/services/recaptcha_validator_spec.rb
@@ -31,19 +31,21 @@
end
end
- describe '#valid?' do
+ describe '#submit' do
let(:token) { nil }
- subject(:valid) { validator.valid?(token) }
+ subject(:response) { validator.submit(token) }
context 'with exemption' do
before do
allow(validator).to receive(:exempt?).and_return(true)
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'does not log analytics' do
- valid
+ response
expect(analytics).not_to have_logged_event('reCAPTCHA verify result received')
end
@@ -52,10 +54,15 @@
context 'with missing token' do
let(:token) { nil }
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for blank token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { blank: true } },
+ )
+ end
it 'does not log analytics' do
- valid
+ response
expect(analytics).not_to have_logged_event('reCAPTCHA verify result received')
end
@@ -64,10 +71,15 @@
context 'with blank token' do
let(:token) { '' }
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for blank token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { blank: true } },
+ )
+ end
it 'does not log analytics' do
- valid
+ response
expect(analytics).not_to have_logged_event('reCAPTCHA verify result received')
end
@@ -83,10 +95,15 @@
)
end
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for invalid token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { invalid: true } },
+ )
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -111,10 +128,12 @@
)
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -139,10 +158,12 @@
)
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -168,10 +189,12 @@
stub_request(:post, RecaptchaValidator::VERIFICATION_ENDPOINT).to_timeout
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -191,10 +214,15 @@
stub_recaptcha_response(body: { success: true, score: }, token:)
end
- it { expect(valid).to eq(false) }
+ it 'is unsuccessful with error for invalid token' do
+ expect(response.to_h).to eq(
+ success: false,
+ error_details: { recaptcha_token: { invalid: true } },
+ )
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -215,14 +243,18 @@
let(:token) { 'token' }
let(:score) { score_threshold + 0.1 }
- before do
- stub_recaptcha_response(body: { success: true, score: }, token:)
+ around do |example|
+ stubbed_request = stub_recaptcha_response(body: { success: true, score: }, token:)
+ example.run
+ expect(stubbed_request).to have_been_made.once
end
- it { expect(valid).to eq(true) }
+ it 'is successful' do
+ expect(response.to_h).to eq(success: true)
+ end
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -242,7 +274,7 @@
let(:extra_analytics_properties) { { extra: true } }
it 'logs analytics of the body' do
- valid
+ response
expect(analytics).to have_logged_event(
'reCAPTCHA verify result received',
@@ -264,7 +296,7 @@
let(:analytics) { nil }
it 'validates gracefully without analytics logging' do
- valid
+ response
end
end
end
From f911a577f296017c1dddebf58b14ec6e96e0895a Mon Sep 17 00:00:00 2001
From: Mitchell Henke
Date: Thu, 2 May 2024 14:46:52 -0500
Subject: [PATCH 10/22] Translation Updates (#10191)
* initial translations
changelog: Internal, Translations, Update existing translations for French and Spanish
Co-authored-by: Andrew Duthie <1779930+aduth@users.noreply.github.com>
---
config/locales/account/es.yml | 117 +++---
config/locales/account/fr.yml | 100 +++--
config/locales/account_reset/es.yml | 58 +--
config/locales/account_reset/fr.yml | 47 +--
config/locales/banned_user/es.yml | 4 +-
config/locales/components/es.yml | 62 ++--
config/locales/components/fr.yml | 62 ++--
config/locales/countries/es.yml | 66 ++--
config/locales/countries/fr.yml | 114 +++---
config/locales/devise/es.yml | 75 ++--
config/locales/devise/fr.yml | 67 ++--
config/locales/doc_auth/es.yml | 318 ++++++++--------
config/locales/doc_auth/fr.yml | 237 ++++++------
config/locales/email_addresses/es.yml | 20 +-
config/locales/email_addresses/fr.yml | 15 +-
config/locales/errors/es.yml | 180 +++++----
config/locales/errors/fr.yml | 119 +++---
config/locales/event_disavowals/es.yml | 12 +-
config/locales/event_disavowals/fr.yml | 2 +-
config/locales/event_types/es.yml | 30 +-
config/locales/event_types/fr.yml | 20 +-
config/locales/forms/es.yml | 127 ++++---
config/locales/forms/fr.yml | 94 +++--
config/locales/headings/es.yml | 71 ++--
config/locales/headings/fr.yml | 71 ++--
config/locales/help_text/es.yml | 24 +-
config/locales/help_text/fr.yml | 15 +-
config/locales/idv/es.yml | 331 ++++++++---------
config/locales/idv/fr.yml | 288 +++++++--------
config/locales/image_description/es.yml | 16 +-
config/locales/image_description/fr.yml | 18 +-
config/locales/in_person_proofing/es.yml | 180 +++++----
config/locales/in_person_proofing/fr.yml | 179 ++++-----
config/locales/instructions/es.yml | 142 ++++---
config/locales/instructions/fr.yml | 118 +++---
config/locales/links/es.yml | 14 +-
config/locales/links/fr.yml | 10 +-
config/locales/mailer/es.yml | 12 +-
config/locales/mailer/fr.yml | 8 +-
config/locales/mfa/es.yml | 7 +-
config/locales/mfa/fr.yml | 12 +-
config/locales/notices/es.yml | 83 ++---
config/locales/notices/fr.yml | 61 +--
config/locales/openid_connect/es.yml | 51 +--
config/locales/pages/es.yml | 5 +-
config/locales/pages/fr.yml | 5 +-
config/locales/saml_idp/es.yml | 8 +-
config/locales/saml_idp/fr.yml | 10 +-
config/locales/service_providers/es.yml | 11 +-
config/locales/service_providers/fr.yml | 12 +-
config/locales/shared/es.yml | 20 +-
config/locales/shared/fr.yml | 20 +-
config/locales/sign_up/es.yml | 6 +-
config/locales/sign_up/fr.yml | 12 +-
config/locales/simple_form/es.yml | 4 +-
config/locales/simple_form/fr.yml | 2 +-
config/locales/step_indicator/es.yml | 16 +-
config/locales/step_indicator/fr.yml | 6 +-
config/locales/telephony/es.yml | 58 +--
config/locales/telephony/fr.yml | 58 +--
config/locales/time/es.yml | 20 +-
config/locales/time/fr.yml | 16 +-
config/locales/titles/es.yml | 77 ++--
config/locales/titles/fr.yml | 80 ++--
.../locales/two_factor_authentication/es.yml | 278 +++++++-------
.../locales/two_factor_authentication/fr.yml | 212 ++++++-----
.../user_authorization_confirmation/es.yml | 2 +-
.../user_authorization_confirmation/fr.yml | 4 +-
config/locales/user_mailer/es.yml | 349 +++++++++---------
config/locales/user_mailer/fr.yml | 264 ++++++-------
config/locales/users/es.yml | 51 ++-
config/locales/users/fr.yml | 38 +-
config/locales/valid_email/fr.yml | 2 +-
config/locales/vendor_outage/es.yml | 47 ++-
config/locales/vendor_outage/fr.yml | 55 +--
config/locales/zxcvbn/es.yml | 62 ++--
config/locales/zxcvbn/fr.yml | 63 ++--
spec/components/time_component_spec.rb | 2 +-
spec/i18n_spec.rb | 11 +-
.../send_proofing_notification_job_spec.rb | 19 +-
.../ready_to_verify_presenter_spec.rb | 16 +-
.../displayable_pii_formatter_spec.rb | 2 +-
82 files changed, 2786 insertions(+), 2794 deletions(-)
diff --git a/config/locales/account/es.yml b/config/locales/account/es.yml
index 71e5a7d216f..f2784f3a345 100644
--- a/config/locales/account/es.yml
+++ b/config/locales/account/es.yml
@@ -2,113 +2,114 @@
es:
account:
connected_apps:
- associated: Conectado %{timestamp}
- description: Con su cuenta %{app_name}, puede conectarse de manera segura a
- múltiples cuentas gubernamentales en línea. A continuación se muestra
- una lista de todas las cuentas que tiene actualmente conectadas.
+ associated: 'Conectado: %{timestamp}'
+ description: Con su cuenta de %{app_name}, puede conectarse de manera segura a
+ muchas cuentas del gobierno en línea. Esta es una lista de todas las
+ cuentas que tiene conectadas actualmente.
email_language:
default: '%{language} (predeterminado)'
edit_title: Editar la preferencia de idioma del correo electrónico
languages_list: '%{app_name} le permite recibir su comunicación por correo
- electrónico en %{list}'
+ electrónico en %{list}.'
name:
en: Inglés
es: Español
fr: Francés
zh: Chinese
sentence_connector: o
- updated: Se actualizó su preferencia de idioma de correo electrónico.
+ updated: Se actualizó su preferencia de idioma del correo electrónico.
forget_all_browsers:
- longer_description: Una vez que elija “olvidar todos los navegadores”,
- necesitaremos información adicional para saber que en realidad está
- iniciando sesión en su cuenta. Le pediremos un método de autenticación
- de múltiples factores (como texto / código de SMS o una clave de
+ longer_description: Una vez que elija “Olvidar todos los navegadores”,
+ necesitaremos más información para saber que realmente es usted quien
+ está iniciando sesión en su cuenta. Le pediremos un método de
+ autenticación multifactor (como código de texto o de SMS, o una clave de
seguridad) cada vez que desee acceder a su cuenta.
index:
auth_app_add: Agregar aplicación
- auth_app_disabled: no permitido
- auth_app_enabled: permitido
- backup_code_confirm_delete: Sí, borrar códigos
- backup_code_confirm_regenerate: Sí, regenerar códigos.
- backup_codes_exist: Generado
- backup_codes_no_exist: No generado
+ auth_app_disabled: no habilitada
+ auth_app_enabled: habilitada
+ backup_code_confirm_delete: Sí, eliminar códigos
+ backup_code_confirm_regenerate: Sí, regenerar códigos
+ backup_codes_exist: Generados
+ backup_codes_no_exist: No generados
continue_to_service_provider: Continuar con %{service_provider}
- default: defecto
+ default: predeterminado
device: '%{browser} en %{os}'
email: Dirección de correo electrónico
email_add: Agregar nuevo correo electrónico
- email_addresses: Correos electrónicos
+ email_addresses: Direcciones de correo electrónico
email_preferences: Preferencias de correo electrónico
password: Contraseña
- phone: Teléfono
- phone_add: Añadir teléfono
- piv_cac_add: Agregar ID
+ phone: Números de teléfono
+ phone_add: Agregar teléfono
+ piv_cac_add: Agregar identificación
reactivation:
- instructions: Su perfil ha sido desactivado debido a un cambio de contraseña.
+ instructions: Su perfil fue desactivado recientemente debido a un
+ restablecimiento de contraseña.
link: Reactive su perfil ahora.
- sign_in_location_and_ip: Desde %{ip} (la dirección IP probablemente se encuentra en %{location})
+ sign_in_location_and_ip: Desde %{ip} (la dirección IP se encuentra posiblemente en %{location})
unknown_location: ubicación desconocida
verification:
- instructions: Su cuenta requiere un código de verificación para ser verificado.
- reactivate_button: Ingrese el código que recibió por correo postal.
- success: Verificamos tu información
+ instructions: Su cuenta requiere un código de verificación para poderla verificar.
+ reactivate_button: Ingrese el código que recibió por correo de los EE. UU.
+ success: Verificamos su información
webauthn: Clave de seguridad
- webauthn_add: Añadir clave de seguridad
- webauthn_platform: El desbloqueo facial o táctil
- webauthn_platform_add: Añadir el desbloqueo facial o táctil
+ webauthn_add: Agregar clave de seguridad
+ webauthn_platform: Desbloqueo facial o táctil
+ webauthn_platform_add: Agregar desbloqueo facial o táctil
items:
- delete_your_account: Eliminar su cuenta
+ delete_your_account: Elimine su cuenta
personal_key: Clave personal
links:
delete_account: Eliminar
regenerate_personal_key: Restablecer
login:
- forced_reauthentication_notice_html: %{sp_name} requiere que
- vuelvas a ingresar tu correo electrónico y contraseña.
+ forced_reauthentication_notice_html: '%{sp_name} requiere que
+ vuelva a ingresar su correo electrónico y contraseña.'
piv_cac: Inicie sesión con su identificación de empleado del gobierno
- tab_navigation: Pestañas de creación de cuenta
+ tab_navigation: Pestañas para creación de cuentas
navigation:
add_authentication_apps: Agregar aplicaciones de autenticación
add_email: Agregar dirección de correo electrónico
add_federal_id: Agregar identificación de empleado federal
- add_phone_number: Agregar el número de teléfono
+ add_phone_number: Agregar número de teléfono
add_platform_authenticator: Agregar desbloqueo facial o táctil
- add_security_key: Agregar llave de seguridad
+ add_security_key: Agregar clave de seguridad
close: Cerrar
- connected_accounts: Tus cuentas conectadas
+ connected_accounts: Sus cuentas conectadas
customer_support: Atención al cliente
- delete_account: Borrar cuenta
+ delete_account: Eliminar cuenta
edit_password: Editar contraseña
- forget_browsers: Olvídese de todos los navegadores
- get_backup_codes: Obtener códigos de respaldo
- history: Historia
+ forget_browsers: Olvidar todos los navegadores
+ get_backup_codes: Obtener códigos de recuperación
+ history: Historial
landmark_label: Navegación lateral
menu: Menú
- reset_personal_key: Restablecer la clave personal
- two_factor_authentication: Tus métodos de autenticación
+ reset_personal_key: Restablecer clave personal
+ two_factor_authentication: Sus métodos de autenticación
your_account: Su cuenta
personal_key:
- get_new: Obtenga una nueva clave personal
- get_new_description: Su antigua clave personal dejará de funcionar en cuanto reciba una nueva.
- last_generated: Generada por última vez en %{timestamp}
- needs_new: Se requiere una nueva clave personal para su cuenta. Su antigua clave
- personal no funcionará si se olvida de su contraseña.
- old_key_will_not_work: Por favor, imprima, copie o descargue la nueva clave
- personal que aparece a continuación. Su antigua clave personal no
- funcionará si olvida su contraseña.
+ get_new: Obtener una nueva clave personal
+ get_new_description: Su clave personal anterior dejará de funcionar cuando reciba una nueva.
+ last_generated: 'Generada por última vez: %{timestamp}'
+ needs_new: Su cuenta requiere una nueva clave personal. Su clave personal
+ anterior no funcionará si olvida su contraseña.
+ old_key_will_not_work: Imprima, copie o descargue la nueva clave personal a
+ continuación. Su clave personal anterior no funcionará si olvida su
+ contraseña.
reset_instructions: Restablezca su clave personal si no la tiene. Necesitará
esta clave personal si olvida su contraseña.
- reset_success: Su clave personal ha sido restablecida
+ reset_success: Su clave personal fue restablecida.
re_verify:
- banner: Hemos ocultado la información de su perfil para proteger su privacidad.
- footer: Autentíquese nuevamente para ver la información de su perfil
+ banner: Ocultamos la información de su perfil para proteger su privacidad.
+ footer: Autentíquese para ver su información.
revoke_consent:
link_title: Desconectar
- longer_description_html: Su información ya no se compartirá con
+ longer_description_html: Su información ya no se divulgará a
%{service_provider_html}. Para acceder a %{service_provider_html} en el
- futuro, debe dar su consentimiento para compartir su información. Puede
- dar su consentimiento yendo al sitio %{service_provider_html} e
- iniciando sesión.
+ futuro, debe dar su consentimiento para divulgar su información. Puede
+ dar su consentimiento iniciando sesión en el sitio
+ %{service_provider_html}.
security:
link: Obtenga más información en el Centro de ayuda
text: Para su seguridad, la información de su perfil está bloqueada.
@@ -118,4 +119,4 @@ es:
full_name: Nombre completo
phone_number: Número de teléfono
ssn: Número de Seguro Social
- welcome: Bienvenido/a
+ welcome: Bienvenido
diff --git a/config/locales/account/fr.yml b/config/locales/account/fr.yml
index 39a9d6cd145..0f0765cd09a 100644
--- a/config/locales/account/fr.yml
+++ b/config/locales/account/fr.yml
@@ -2,99 +2,98 @@
fr:
account:
connected_apps:
- associated: Lié %{timestamp}
+ associated: Connecté %{timestamp}
description: Avec votre compte %{app_name}, vous pouvez vous connecter en toute
- sécurité à plusieurs comptes gouvernementaux en ligne. Vous trouverez
- ci-dessous une liste de tous les comptes actuellement connectés.
+ sécurité à plusieurs comptes de l’administration en ligne. Vous
+ trouverez ci-dessous une liste de tous vos comptes actuellement
+ connectés.
email_language:
default: '%{language} (par défaut)'
- edit_title: Modifier la préférence de langue des e-mails
- languages_list: '%{app_name} vous permet de recevoir votre communication par
- e-mail dans %{list}.'
+ edit_title: Modifier la langue dans laquelle vous préférez recevoir les e-mails
+ languages_list: '%{app_name} vous permet de recevoir des communications par
+ e-mail en %{list}.'
name:
- en: Anglais
- es: l’Espagnol
- fr: langue française
+ en: anglais
+ es: espagnol
+ fr: français
zh: Chinese
sentence_connector: ou
- updated: Votre préférence de langue pour les e-mails a été mise à jour.
+ updated: Votre langue de préférence pour les e-mails a été mise à jour.
forget_all_browsers:
- longer_description: Une fois que vous aurez choisi “d’oublier tous les
- navigateurs”, nous aurons besoin d’informations supplémentaires pour
- savoir qu’il s’agit bien de votre connexion à votre compte. Nous vous
- demanderons une méthode d’authentification multifacteur (comme un code
- texte / SMS ou une clé de sécurité) chaque fois que vous souhaitez
+ longer_description: Une fois que vous aurez choisi d’« oublier tous les
+ navigateurs », nous aurons besoin d’informations supplémentaires pour
+ savoir que c’est bien vous qui vous connectez à votre compte. Nous vous
+ demanderons une méthode d’authentification multi-facteurs (comme un code
+ SMS/texto ou une clé de sécurité) chaque fois que vous souhaiterez
accéder à votre compte.
index:
- auth_app_add: Ajouter une application
- auth_app_disabled: non activée
- auth_app_enabled: activée
+ auth_app_add: Ajouter une appli
+ auth_app_disabled: non activé
+ auth_app_enabled: activé
backup_code_confirm_delete: Oui, supprimer les codes
backup_code_confirm_regenerate: Oui, régénérer les codes
backup_codes_exist: Généré
backup_codes_no_exist: Non généré
- continue_to_service_provider: Continuer à %{service_provider}
+ continue_to_service_provider: Continuer sur %{service_provider}
default: défaut
device: '%{browser} sur %{os}'
email: Adresse e-mail
- email_add: Ajouter un nouvel e-mail
- email_addresses: Adresses courriel
- email_preferences: Préférences de messagerie
+ email_add: Ajouter une nouvelle adresse e-mail
+ email_addresses: Adresses e-mail
+ email_preferences: Préférences e-mail
password: Mot de passe
- phone: Numéro de téléphone
+ phone: Numéros de téléphone
phone_add: Ajouter un téléphone
piv_cac_add: Ajouter un identifiant
reactivation:
instructions: Votre profil a été récemment désactivé en raison d’une
- réinitialisation de mot passe. Vous pouvez utiliser votre clé
- personnelle pour réactiver votre profil.
- link: Réactivez votre profil maintenant.
- sign_in_location_and_ip: '%{ip} (adresse IP probablement située dans %{location})'
+ réinitialisation de mot passe.
+ link: Réactiver votre profil maintenant.
+ sign_in_location_and_ip: De %{ip} (adresse IP éventuellement située dans %{location})
unknown_location: lieu inconnu
verification:
instructions: Votre compte nécessite un code de vérification pour être vérifié.
- reactivate_button: Entrez le code que vous avez reçu par la poste
+ reactivate_button: Saisissez le code que vous avez reçu par la poste
success: Nous avons vérifié vos informations
webauthn: Clé de sécurité
webauthn_add: Ajouter une clé de sécurité
- webauthn_platform: Le déverouillage facial ou déverrouillage par empreinte digitale
- webauthn_platform_add: Ajouter le déverouillage facial ou déverrouillage par empreinte digitale
+ webauthn_platform: Déverrouillage facial ou tactile
+ webauthn_platform_add: Ajouter le déverrouillage facial ou tactile
items:
delete_your_account: Supprimer votre compte
personal_key: Clé personnelle
links:
- delete_account: Effacer
+ delete_account: Supprimer
regenerate_personal_key: Réinitialiser
login:
- forced_reauthentication_notice_html: %{sp_name} nécessite que
- vous saisissiez à nouveau votre adresse électronique et votre mot de
- passe.
- piv_cac: Connectez-vous avec votre ID d’employé du gouvernement
+ forced_reauthentication_notice_html: '%{sp_name} nécessite que
+ vous saisissiez à nouveau votre adresse e-mail et votre mot de passe.'
+ piv_cac: Connectez-vous avec votre identifiant d’employé.
tab_navigation: Onglets de création de compte
navigation:
- add_authentication_apps: Ajouter des applications d’authentification
+ add_authentication_apps: Ajouter des applis d’authentification
add_email: Ajouter une adresse e-mail
add_federal_id: Ajouter un identifiant d’employé fédéral
add_phone_number: Ajouter un numéro de téléphone
- add_platform_authenticator: Ajouter déverouillage facial ou déverrouillage par empreinte digitale
+ add_platform_authenticator: Ajouter le déverrouillage facial ou tactile
add_security_key: Ajouter une clé de sécurité
close: Fermer
connected_accounts: Vos comptes connectés
customer_support: Service client
delete_account: Supprimer le compte
edit_password: Modifier le mot de passe
- forget_browsers: Oubliez tous les navigateurs
- get_backup_codes: Obtenez des codes de secours
- history: L’histoire
+ forget_browsers: Oublier tous les navigateurs
+ get_backup_codes: Obtenir des codes de sauvegarde
+ history: Historique
landmark_label: Navigation latérale
menu: Menu
- reset_personal_key: Réinitialisation de la clé personnelle
+ reset_personal_key: Réinitialiser la clé personnelle
two_factor_authentication: Vos méthodes d’authentification
your_account: Votre compte
personal_key:
get_new: Obtenir une nouvelle clé personnelle
- get_new_description: Lorsque vous recevez une nouvelle clé personnelle, votre
- ancienne clé personnelle ne fonctionnera plus.
+ get_new_description: Lorsque vous recevrez une nouvelle clé personnelle,
+ l’ancienne ne fonctionnera plus.
last_generated: Dernière génération le %{timestamp}
needs_new: Votre compte a besoin d’une nouvelle clé personnelle. Votre ancienne
clé personnelle ne fonctionnera pas si vous oubliez votre mot de passe.
@@ -104,26 +103,25 @@ fr:
reset_instructions: Réinitialisez votre clé personnelle si vous ne l’avez pas.
Vous aurez besoin de cette clé personnelle si vous oubliez votre mot de
passe.
- reset_success: Votre code personnel a été réinitialisé
+ reset_success: Votre clé personnelle a été réinitialisée.
re_verify:
banner: Nous avons masqué les informations de votre profil pour protéger votre
vie privée.
- footer: Veuillez vous authentifier à nouveau pour afficher les informations de
- votre profil
+ footer: Authentifiez-vous pour voir vos informations.
revoke_consent:
- link_title: Déconnecter
+ link_title: Déconnexion
longer_description_html: Vos informations ne seront plus partagées avec
%{service_provider_html}. Pour accéder à %{service_provider_html} à
- l’avenir, vous devez donner votre consentement pour partager vos
+ l’avenir, vous devrez donner votre consentement pour partager vos
informations. Vous pouvez donner votre consentement en allant sur le
site %{service_provider_html} et en vous connectant.
security:
- link: En apprendre davantage dans le Centre d’aide
- text: L’information de votre profil est verrouillée pour votre sécurité.
+ link: En savoir plus dans le Centre d’aide
+ text: Les informations de votre profil sont verrouillées pour votre sécurité.
verified_information:
address: Adresse
dob: Date de naissance
full_name: Nom complet
phone_number: Numéro de téléphone
- ssn: Numéro d’assurance sociale
+ ssn: Numéro de sécurité sociale
welcome: Bienvenue
diff --git a/config/locales/account_reset/es.yml b/config/locales/account_reset/es.yml
index 1e44f0e8054..4952e6bedb7 100644
--- a/config/locales/account_reset/es.yml
+++ b/config/locales/account_reset/es.yml
@@ -2,38 +2,38 @@
es:
account_reset:
cancel_request:
- are_you_sure: '¿Seguro que quieres cancelar tu solicitud de eliminación de cuenta?'
- cancel: Salida
+ are_you_sure: '¿Está seguro de que desea cancelar su solicitud de eliminación de
+ cuenta?'
+ cancel: Salir
cancel_button: Cancelar la cuenta eliminada
title: Cancelar la cuenta eliminada
confirm_delete_account:
- cta_html: Puede %{link_html} o cierra esta ventana si ya terminaste.
- info_html: La cuenta para %{email} ha sido eliminada. Nosotros
- enviamos una confirmación por correo electrónico de la eliminación de la
- cuenta.
- link_text: crea una cuenta nueva
- title: Has eliminado tu cuenta
+ cta_html: Puede %{link_html} o cerrar esta ventana si ya terminó.
+ info_html: La cuenta de %{email} fue eliminada. Enviamos una
+ confirmación por correo electrónico de la eliminación de la cuenta.
+ link_text: crear una cuenta nueva
+ title: Eliminó su cuenta
confirm_request:
- close_window: Puede cerrar esta ventana si ha terminado.
+ close_window: Puede cerrar esta ventana si ya terminó.
instructions_end: para comenzar el proceso de eliminación de cuenta. Siga las
instrucciones en su correo electrónico para completar el proceso.
instructions_start: Enviamos un correo electrónico a
security_note: Como medida de seguridad, también enviamos un mensaje de texto a
- su registro número de teléfono.
+ su número de teléfono registrado.
delete_account:
- are_you_sure: '¿Seguro que quieres eliminar tu cuenta?'
- info: Eliminar su cuenta debe ser su último recurso si su cuenta está bloqueada.
- No podrá recuperar ninguna información vinculada a su cuenta.
- Notificaremos a las agencias a las que acceda con %{app_name} que ya no
- tiene una cuenta. Cuando su cuenta sea eliminada podrá crear una nueva
- usando la misma dirección de correo electrónico.
- title: Eliminar tu cuenta debería ser tu último recurso
+ are_you_sure: '¿Está seguro de que desea eliminar su cuenta?'
+ info: Eliminar su cuenta debe ser su último recurso si el acceso a su cuenta
+ está bloqueado. No podrá recuperar ninguna información vinculada a su
+ cuenta. Notificaremos a las agencias a las que accede con %{app_name}
+ que usted ya no tiene una cuenta. Cuando elimine su cuenta, puede crear
+ una nueva usando la misma dirección de correo electrónico.
+ title: Eliminar su cuenta debe ser su último recurso.
pending:
- cancel_request: Cancelar petición
+ cancel_request: Cancelar solicitud
canceled: Hemos cancelado su solicitud para eliminar su cuenta.
confirm: Si cancela ahora, debe crear una nueva solicitud y esperar otras
%{interval} para eliminar su cuenta.
- header: Solicitaste eliminar tu cuenta
+ header: Solicitó la eliminación de su cuenta
wait_html: Hay un período de espera de %{waiting_period} para eliminar su
cuenta. En %{interval}, recibirá un correo electrónico
con instrucciones para completar la eliminación.
@@ -44,19 +44,19 @@ es:
gestión de contraseñas, como iCloud Keychain o Google Password Manager.
Intenta realizar el desbloqueo facial o táctil en un navegador que
utilice ese gestor de contraseñas.
- header: '¿Seguro que desea eliminar su cuenta?'
- help_text: Si sigue sin poder acceder a %{app_name}, pruebe con estos pasos en
- su lugar.
- try_another_device: Pruebe otro dispositivo donde pueda haber seleccionado la
- opción “Recordar dispositivo”.
- try_method_again: Pruebe nuevamente su método de autenticación.
+ header: '¿Está seguro de que desea eliminar su cuenta?'
+ help_text: Si su cuenta sigue bloqueada y todavía necesita acceder a
+ %{app_name}, intente seguir estos pasos.
+ try_another_device: Pruebe otro dispositivo en el que podría haber seleccionado
+ la opción “Recordar dispositivo”.
+ try_method_again: Pruebe de nuevo su método de autenticación.
use_device: Utilice otro dispositivo.
use_same_device: De lo contrario, inténtalo con el mismo dispositivo en el que
configuraste el desbloqueo facial o táctil.
request:
- are_you_sure: '¿Estás seguro de que no tienes acceso a ninguno de tus métodos de
- seguridad?'
- delete_account: Eliminar su cuenta
+ are_you_sure: '¿Está seguro de que no tiene acceso a ninguno de sus métodos de
+ autenticación?'
+ delete_account: Elimine su cuenta
delete_account_info:
- Eliminar su cuenta existente y crear una nueva le permite usar la
misma dirección de correo electrónico y configurar nuevas opciones de
@@ -76,4 +76,4 @@ es:
asegúrese de no tener otra opción de seguridad que puede usar.
no_cancel: Cancelar
title: Eliminación y restablecimiento de cuenta
- yes_continue: Sí, continúa la eliminación
+ yes_continue: Sí, continuar con la eliminación
diff --git a/config/locales/account_reset/fr.yml b/config/locales/account_reset/fr.yml
index 164458c9ede..be3cd80a861 100644
--- a/config/locales/account_reset/fr.yml
+++ b/config/locales/account_reset/fr.yml
@@ -2,34 +2,34 @@
fr:
account_reset:
cancel_request:
- are_you_sure: Êtes-vous sûr de vouloir annuler votre demande de suppression de compte?
- cancel: Sortie
- cancel_button: Annuler supprimer un compte
- title: Annuler supprimer un compte
+ are_you_sure: Êtes-vous sûr de vouloir annuler votre demande de suppression de compte ?
+ cancel: Quitter
+ cancel_button: Annuler la suppression du compte
+ title: Annuler la suppression du compte
confirm_delete_account:
cta_html: Vous pouvez %{link_html} ou fermer cette fenêtre si vous avez terminé.
info_html: Le compte pour %{email} a été supprimé. Nous avons
- envoyé un email de confirmation de la suppression du compte.
+ envoyé un e-mail de confirmation de la suppression du compte.
link_text: créer un nouveau compte
title: Vous avez supprimé votre compte
confirm_request:
close_window: Vous pouvez fermer cette fenêtre si vous avez terminé.
- instructions_end: pour commencer le compte. Supprimer le processus. Suivez les
- instructions dans votre e-mail pour terminer le processus.
+ instructions_end: pour commencer le processus de suppression du compte. Suivez
+ les instructions dans votre e-mail pour terminer le processus.
instructions_start: Nous avons envoyé un e-mail à
security_note: Par mesure de sécurité, nous avons également envoyé un SMS à
votre numéro de téléphone enregistré.
delete_account:
- are_you_sure: Êtes-vous sûr de vouloir supprimer votre compte?
+ are_you_sure: Êtes-vous sûr de vouloir supprimer votre compte ?
info: La suppression de votre compte devrait être votre dernier recours si vous
- êtes en lock-out de votre compte Vous ne pourrez pas récupérer les
- informations liées à ton compte. Nous informerons les agences auxquelles
- vous accédez avec %{app_name} que vous ne plus avoir un compte. Une fois
- votre compte supprimé, vous pouvez en créer un nouveau en utilisant la
- même adresse e-mail.
+ vous êtes fait bloquer de votre compte. Vous ne pourrez pas récupérer
+ les informations liées à votre compte. Nous informerons les organismes
+ auxquels vous accédez avec %{app_name} que vous ne disposez plus d’un
+ compte. Une fois votre compte supprimé, vous pouvez en créer un nouveau
+ en utilisant la même adresse e-mail.
title: La suppression de votre compte devrait être votre dernier recours
pending:
- cancel_request: Demande d’annulation
+ cancel_request: Annuler la demande
canceled: Nous avons annulé votre demande de suppression de votre compte.
confirm: Si vous annulez maintenant, vous devez créer une nouvelle demande et
attendre encore %{interval} pour supprimer votre compte.
@@ -45,17 +45,18 @@ fr:
Keychain ou Google Password Manager. Essayez d’utiliser le
déverrouillage facial ou tactile sur un navigateur utilisant ce
gestionnaire de mots de passe.
- header: Êtes-vous sûr de vouloir supprimer votre compte?
- help_text: Si vous êtes bloqué et que vous avez toujours besoin d’accéder à
- %{app_name}, essayez plutôt ces étapes.
- try_another_device: Essayez un autre appareil sur lequel vous avez peut-être
+ header: Êtes-vous sûr de vouloir supprimer votre compte ?
+ help_text: Si vous êtes bloqué et avez toujours besoin d’accéder à %{app_name},
+ essayez plutôt les mesures suivantes.
+ try_another_device: Essayer un autre appareil sur lequel vous avez peut-être
sélectionné l’option « mémoriser l’appareil ».
- try_method_again: Essayez à nouveau votre méthode d’authentification
- use_device: Utilisez un autre appareil
+ try_method_again: Essayer à nouveau votre méthode d’authentification
+ use_device: Utiliser un autre appareil
use_same_device: Sinon, essayez d’utiliser le même appareil où vous avez
configuré le déverrouillage facial ou tactile.
request:
- are_you_sure: Êtes-vous sûr de n’avoir accès à aucune de vos méthodes de sécurité?
+ are_you_sure: Êtes-vous sûr de n’avoir accès à aucune de vos méthodes
+ d’authentification ?
delete_account: Supprimer votre compte
delete_account_info:
- Supprimer votre compte existant et en créer un nouveau vous permet
@@ -75,5 +76,5 @@ fr:
assurez-vous que vous n’avez pas une autre option de sécurité que vous
pouvez utiliser à la place.
no_cancel: Annuler
- title: Suppression de compte et réinitialisation
- yes_continue: Oui, continuez la suppression
+ title: Suppression et réinitialisation de compte
+ yes_continue: Oui, continuer la suppression
diff --git a/config/locales/banned_user/es.yml b/config/locales/banned_user/es.yml
index c5fa53be986..0c820195c30 100644
--- a/config/locales/banned_user/es.yml
+++ b/config/locales/banned_user/es.yml
@@ -1,5 +1,5 @@
---
es:
banned_user:
- details: No podemos autenticarlo en este momento.
- title: El acceso está restringido
+ details: No podemos autenticarle en este momento.
+ title: Acceso restringido
diff --git a/config/locales/components/es.yml b/config/locales/components/es.yml
index 40dc2a2fb34..0a5a54490b9 100644
--- a/config/locales/components/es.yml
+++ b/config/locales/components/es.yml
@@ -5,52 +5,52 @@ es:
image_alt: Código de barras
captcha_submit_button:
action_message: Verificando…
- mock_score_disclaimer: Solo para uso interno
+ mock_score_disclaimer: Uso interno
mock_score_label: 'Puntuación reCAPTCHA: (0.0 - 1.0)'
clipboard_button:
label: Copiar
- tooltip: ¡Copiado!
+ tooltip: Copiado
countdown_alert:
- time_remaining_html: 'Quedan %{countdown_html}'
+ time_remaining_html: Quedan %{countdown_html}
download_button:
label: Descargar
javascript_required:
browser_instructions: 'Siga las instrucciones para habilitar JavaScript en su navegador:'
- enabled_alert: YHabilitó el JavaScript en su navegador.
- next_step: Recargue esta página una vez que haya habilitado JavaScript en su
+ enabled_alert: Habilitó JavaScript en su navegador.
+ next_step: Actualice esta página después de haber habilitado JavaScript en su
navegador.
manageable_authenticator:
cancel: Cancelar
created_on: Creado el %{date}
- delete: Borrar
- delete_confirm: ¿Está seguro que desea eliminar este método de autenticación?
- deleted: Se ha eliminado correctamente un método de autenticación.
+ delete: Eliminar
+ delete_confirm: '¿Está seguro de que desea eliminar este método de autenticación?'
+ deleted: Se eliminó un método de autenticación
deleting: Eliminando…
- done: Terminado
+ done: Listo
manage: Administrar
- manage_accessible_label: Gestionar método de autenticación
- nickname: Apodo
- rename: Cambiar el nombre
- renamed: Se ha cambiado correctamente el nombre de su método de autenticación.
+ manage_accessible_label: Administrar método de autenticación
+ nickname: Alias
+ rename: Cambiar nombre
+ renamed: Cambió el nombre de su método de autenticación
save: Guardar
saving: Guardando…
memorable_date:
day: Día
errors:
- invalid_date: La entrada no es una fecha válida
- invalid_day: Introduzca un día entre el 1 y el 31
- invalid_month: Introduce un mes entre el 1 y el 12
- invalid_year: Introduzca un año con 4 números
- missing_day: Introduce un día
- missing_day_year: Introduce un día y un año
- missing_month: Introduce un mes
- missing_month_day: Introduce un mes y un día
- missing_month_day_year: Introduce una %{label}
- missing_month_year: Introduce un mes y un año
- missing_year: Introduce un año
- outside_date_range: Ingrese una %{label} entre %{min} y %{max}
- range_overflow: Ingrese una fecha del %{date} o antes
- range_underflow: Ingrese una fecha a partir del %{date}
+ invalid_date: La fecha introducida no es válida
+ invalid_day: Introducir un día entre el 1 y el 31
+ invalid_month: Introducir un mes entre el 1 y el 12
+ invalid_year: Introducir un año con 4 números
+ missing_day: Introducir un día
+ missing_day_year: Introducir un día y un año
+ missing_month: Introducir un mes
+ missing_month_day: Introducir un mes y un día
+ missing_month_day_year: Introducir %{label}
+ missing_month_year: Introducir un mes y un año
+ missing_year: Introducir un año
+ outside_date_range: Introducir una %{label} entre %{min} y %{max}
+ range_overflow: Introducir una fecha del %{date} o anterior
+ range_underflow: Introducir una fecha del %{date} o posterior
month: Mes
year: Año
one_time_code_input:
@@ -68,9 +68,9 @@ es:
label: Contraseña
toggle_label: Mostrar contraseña
phone_input:
- country_code_label: Código del país
+ country_code_label: Código de país
print_button:
- label: Imprima
+ label: Imprimir
troubleshooting_options:
- default_heading: '¿Tiene alguna dificultad? Esto es lo que puede hacer:'
- ipp_heading: 'Opciones adicionales para solución de problemas:'
+ default_heading: '¿Tiene problemas? Esto es lo que puede hacer:'
+ ipp_heading: 'Otras opciones para la solución de problemas:'
diff --git a/config/locales/components/fr.yml b/config/locales/components/fr.yml
index ff7e1cfbe29..cbf588c070b 100644
--- a/config/locales/components/fr.yml
+++ b/config/locales/components/fr.yml
@@ -4,73 +4,73 @@ fr:
barcode:
image_alt: Code-barres
captcha_submit_button:
- action_message: Vérification…
+ action_message: Vérification en cours…
mock_score_disclaimer: Usage interne uniquement
- mock_score_label: 'Score reCAPTCHA: (0.0 - 1.0)'
+ mock_score_label: 'Score reCAPTCHA : (0,0 - 1,0)'
clipboard_button:
label: Copier
- tooltip: Copié!
+ tooltip: Copié !
countdown_alert:
- time_remaining_html: '%{countdown_html} restantes'
+ time_remaining_html: Il reste %{countdown_html}
download_button:
label: Télécharger
javascript_required:
- browser_instructions: 'Suivez les instructions de votre navigateur pour activer JavaScript:'
+ browser_instructions: 'Suivez les instructions pour activer JavaScript dans votre navigateur :'
enabled_alert: Vous avez activé JavaScript dans votre navigateur.
next_step: Veuillez rafraîchir cette page une fois que vous avez activé
JavaScript dans votre navigateur.
manageable_authenticator:
cancel: Annuler
created_on: Créé le %{date}
- delete: Effacer
- delete_confirm: Êtes-vous sûr de vouloir supprimer cette méthode d’authentification?
+ delete: Supprimer
+ delete_confirm: Êtes-vous sûr de vouloir supprimer cette méthode d’authentification ?
deleted: Suppression réussie d’une méthode d’authentification
deleting: Suppression en cours…
done: Terminé
- manage: Administrer
+ manage: Gérer
manage_accessible_label: Gérer la méthode d’authentification
- nickname: Pseudo
+ nickname: Surnom
rename: Renommer
- renamed: Votre méthode d’authentification a été renommée avec succès
+ renamed: Renommage de la méthode d’authentification réussi
save: Sauvegarder
saving: Sauvegarde en cours…
memorable_date:
day: Jour
errors:
- invalid_date: L’entrée n’est pas une date valide
- invalid_day: Entrez un jour entre 1 et 31
- invalid_month: Entrez un mois entre 1 et 12
- invalid_year: Entrez une année avec 4 chiffres
- missing_day: Entrez un jour
- missing_day_year: Entrez un jour et une année
- missing_month: Entrez un mois
- missing_month_day: Entrez un mois et un jour
- missing_month_day_year: Entrez une %{label}
- missing_month_year: Entrez un mois et une année
- missing_year: Entrez une année
- outside_date_range: Entrez une %{label} entre le %{min} et le %{max}
- range_overflow: Entrez une date au plus tard le %{date}
- range_underflow: Entrez une date le ou après le %{date}
+ invalid_date: La saisie n’est pas une date valide
+ invalid_day: Saisissez un jour entre 1 et 31
+ invalid_month: Saisissez un mois entre 1 et 12
+ invalid_year: Saisissez une année avec 4 chiffres
+ missing_day: Saisissez un jour
+ missing_day_year: Saisissez un jour et une année
+ missing_month: Saisissez un mois
+ missing_month_day: Saisissez un mois et un jour
+ missing_month_day_year: Saisissez un(e) %{label}
+ missing_month_year: Saisissez un mois et une année
+ missing_year: Saisissez une année
+ outside_date_range: Saisissez un(e) %{label} entre %{min} et %{max}
+ range_overflow: Saisissez une date au plus tard le %{date}
+ range_underflow: Saisissez une date au plus tôt le %{date}
month: Mois
- year: An
+ year: Année
one_time_code_input:
hint:
- alphanumeric: 'Exemple: 123ABC'
- numeric: 'Exemple: 123456'
+ alphanumeric: 'Exemple : 123ABC'
+ numeric: 'Exemple : 123456'
label: Code à usage unique
password_confirmation:
confirm_label: Confirmer le mot de passe
errors:
- empty: Tapez à nouveau votre mot de passe
+ empty: Saisissez à nouveau votre mot de passe
mismatch: Vos mots de passe ne correspondent pas
toggle_label: Afficher le mot de passe
password_toggle:
label: Mot de passe
toggle_label: Afficher le mot de passe
phone_input:
- country_code_label: Code pays
+ country_code_label: Indicatif pays
print_button:
label: Imprimer
troubleshooting_options:
- default_heading: 'Des difficultés? Voici ce que vous pouvez faire:'
- ipp_heading: 'Options de dépannage supplémentaires:'
+ default_heading: 'Des difficultés ? Voici ce que vous pouvez faire :'
+ ipp_heading: 'Options de dépannage supplémentaires :'
diff --git a/config/locales/countries/es.yml b/config/locales/countries/es.yml
index e01754156fe..8896cff2549 100644
--- a/config/locales/countries/es.yml
+++ b/config/locales/countries/es.yml
@@ -14,27 +14,27 @@ es:
at: Austria
au: Australia
aw: Aruba
- az: Azerbaiján
- ba: Bosnia y Herzegovina
+ az: Azerbaiyán
+ ba: Bosnia-Herzegovina
bb: Barbados
- bd: Bangladesh
+ bd: Bangladés
be: Bélgica
bf: Burkina Faso
bg: Bulgaria
- bh: Bahrain
+ bh: Baréin
bi: Burundi
- bj: Benin
- bm: Bermuda
- bn: Brunei
+ bj: Benín
+ bm: Bermudas
+ bn: Brunéi
bo: Bolivia
bq: Antillas Holandesas
br: Brasil
bs: Bahamas
- bt: Bhutan
- bw: Botswana
+ bt: Bután
+ bw: Botsuana
by: Bielorrusia
- bz: Belize
- ca: Canada
+ bz: Belice
+ ca: Canadá
cd: República Democrática del Congo
cf: República Centroafricana
cg: República del Congo
@@ -57,7 +57,7 @@ es:
dz: Argelia
ec: Ecuador
ee: Estonia
- eg: Egypt
+ eg: Egipto
er: Eritrea
es: España
et: Etiopía
@@ -66,9 +66,9 @@ es:
fm: Micronesia (Estados Federados de)
fo: Islas Faroe
fr: Francia
- ga: Gabon
+ ga: Gabón
gb: Reino Unido
- gd: Grenada
+ gd: Granada
ge: Georgia
gf: Guayana Francesa
gg: Guernesey
@@ -77,29 +77,29 @@ es:
gl: Groenlandia
gm: Gambia
gn: Guinea
- gp: Guadeloupe
+ gp: Guadalupe
gq: Guinea Ecuatorial
gr: Grecia
gt: Guatemala
gu: Guam
gw: Guinea-Bisáu
- gy: Guayana
+ gy: Guyana
hk: Hong Kong
hn: Honduras
- hr: Croatia
- ht: Haiti
- hu: Hungary
+ hr: Croacia
+ ht: Haití
+ hu: Hungría
id: Indonesia
ie: Irlanda
il: Israel
- im: Isla del hombre
+ im: Isla de Man
in: India
iq: Irak
is: Islandia
it: Italia
je: Jersey
jm: Jamaica
- jo: Jordan
+ jo: Jordania
jp: Japón
ke: Kenia
kg: Kirguistán
@@ -110,7 +110,7 @@ es:
kr: Corea del Sur
kw: Kuwait
ky: Islas Caimán
- kz: Kazajstán
+ kz: Kazajistán
la: Laos
lb: Líbano
lc: Santa Lucía
@@ -127,12 +127,12 @@ es:
md: Moldavia
me: Montenegro
mg: Madagascar
- mh: Las Islas Marshall
+ mh: Islas Marshall
mk: Macedonia
ml: Malí
mm: Birmania
mn: Mongolia
- mo: Macau
+ mo: Macao
mp: Islas Marianas del Norte
mq: Martinica
mr: Mauritania
@@ -141,7 +141,7 @@ es:
mu: Mauricio
mv: Maldivas
mw: Malaui
- mx: Mexico
+ mx: México
my: Malasia
mz: Mozambique
na: Namibia
@@ -163,15 +163,15 @@ es:
pk: Pakistán
pl: Polonia
pr: Puerto Rico
- ps: Palestino
+ ps: Palestina
pt: Portugal
pw: Palaos
py: Paraguay
- qa: Katar
- re: La Reunión
+ qa: Catar
+ re: Reunión
ro: Rumania
rs: Serbia
- ru: Russia
+ ru: Rusia
rw: Ruanda
sa: Arabia Saudita
sb: Islas Salomón
@@ -180,22 +180,22 @@ es:
sg: Singapur
si: Eslovenia
sk: Eslovaquia
- sl: Sierra Leone
+ sl: Sierra Leona
sm: San Marino
sn: Senegal
so: Somalia
- sr: Suriname
+ sr: Surinam
ss: Sudán del Sur
st: Santo Tomé y Príncipe
sv: El Salvador
- sz: Eswatini
+ sz: Esuatini (antes Suazilandia)
tc: Islas Turcas y Caicos
td: Chad
tg: Togo
th: Tailandia
tj: Tayikistán
tl: Timor Oriental
- tm: Turkmenistan
+ tm: Turkmenistán
tn: Túnez
to: Tonga
tr: Turquía
diff --git a/config/locales/countries/fr.yml b/config/locales/countries/fr.yml
index b7b70b44fce..b2737721410 100644
--- a/config/locales/countries/fr.yml
+++ b/config/locales/countries/fr.yml
@@ -2,10 +2,10 @@
fr:
countries:
ad: Andorre
- ae: Émirats Arabes Unis
+ ae: Émirats arabes unis
af: Afghanistan
- ag: Antigua et Barbuda
- ai: Anguille
+ ag: Antigua-et-Barbuda
+ ai: Anguilla
al: Albanie
am: Arménie
ao: Angola
@@ -16,51 +16,51 @@ fr:
aw: Aruba
az: Azerbaïdjan
ba: Bosnie-Herzégovine
- bb: La Barbade
+ bb: Barbade
bd: Bangladesh
be: Belgique
bf: Burkina Faso
bg: Bulgarie
- bh: Bahrain
+ bh: Bahreïn
bi: Burundi
- bj: Benin
- bm: Bermuda
- bn: Brunei
+ bj: Bénin
+ bm: Bermudes
+ bn: Brunéi Darussalam
bo: Bolivie
bq: Antilles néerlandaises
br: Brésil
bs: Bahamas
bt: Bhoutan
bw: Botswana
- by: Biélorussie
+ by: Bélarus
bz: Belize
ca: Canada
- cd: République Démocratique du Congo
+ cd: République démocratique du Congo
cf: République centrafricaine
cg: République du Congo
- ch: La Suisse
+ ch: Suisse
ci: Côte d’Ivoire
- ck: Les Îles Cook
- cl: Chile
+ ck: Îles Cook
+ cl: Chili
cm: Cameroun
cn: Chine
- co: Colombia
+ co: Colombie
cr: Costa Rica
- cv: Cap-Vert
+ cv: Cabo Verde
cy: Chypre
cz: Tchéquie (République tchèque)
de: Allemagne
dj: Djibouti
dk: Danemark
dm: Dominique
- do: République Dominicaine
+ do: République dominicaine
dz: Algérie
- ec: Equateur
+ ec: Équateur
ee: Estonie
- eg: Egypte
+ eg: Égypte
er: Érythrée
es: Espagne
- et: Ethiopie
+ et: Éthiopie
fi: Finlande
fj: Fidji
fm: Micronésie (États fédérés de)
@@ -68,9 +68,9 @@ fr:
fr: France
ga: Gabon
gb: Royaume-Uni
- gd: Grenada
+ gd: Grenade
ge: Géorgie
- gf: Guyane Française
+ gf: Guyane française
gg: Guernesey
gh: Ghana
gi: Gibraltar
@@ -78,16 +78,16 @@ fr:
gm: Gambie
gn: Guinée
gp: Guadeloupe
- gq: Guinée Équatoriale
+ gq: Guinée équatoriale
gr: Grèce
gt: Guatemala
gu: Guam
gw: Guinée-Bissau
- gy: Guyane
+ gy: Guyana
hk: Hong Kong
hn: Honduras
hr: Croatie
- ht: Haiti
+ ht: Haïti
hu: Hongrie
id: Indonésie
ie: Irlande
@@ -98,25 +98,25 @@ fr:
is: Islande
it: Italie
je: Jersey
- jm: Jamaica
- jo: Jordan
+ jm: Jamaïque
+ jo: Jordanie
jp: Japon
ke: Kenya
kg: Kirghizistan
kh: Cambodge
ki: Kiribati
km: Comores
- kn: Saint-Christophe-et-Niévès
+ kn: Saint-Kitts-et-Nevis
kr: Corée du Sud
- kw: Koweit
- ky: Îles Caïmans
+ kw: Koweït
+ ky: Îles Caïmanes
kz: Kazakhstan
la: Laos
lb: Liban
- lc: Saint Lucia
+ lc: Sainte-Lucie
li: Liechtenstein
lk: Sri Lanka
- lr: Libéria
+ lr: Liberia
ls: Lesotho
lt: Lituanie
lu: Luxembourg
@@ -124,13 +124,13 @@ fr:
ly: Libye
ma: Maroc
mc: Monaco
- md: Moldavie
+ md: Moldova
me: Monténégro
mg: Madagascar
- mh: Les Îles Marshall
- mk: Macédoine
+ mh: Îles Marshall
+ mk: Macédoine du Nord
ml: Mali
- mm: Birmanie
+ mm: Myanmar
mn: Mongolie
mo: Macao
mp: Îles Mariannes du Nord
@@ -145,19 +145,19 @@ fr:
my: Malaisie
mz: Mozambique
na: Namibie
- nc: Nouvelle Calédonie
+ nc: Nouvelle-Calédonie
ne: Niger
ng: Nigeria
ni: Nicaragua
nl: Pays-Bas
'no': Norvège
np: Népal
- nu: Niué
+ nu: Niue
nz: Nouvelle-Zélande
om: Oman
pa: Panama
pe: Pérou
- pf: Polynésie Française
+ pf: Polynésie française
pg: Papouasie-Nouvelle-Guinée
ph: Philippines
pk: Pakistan
@@ -168,34 +168,34 @@ fr:
pw: Palaos
py: Paraguay
qa: Qatar
- re: La Rénion
+ re: Réunion (France)
ro: Roumanie
rs: Serbie
ru: Russie
rw: Rwanda
- sa: Arabie Saoudite
- sb: Les îles Salomon
+ sa: Arabie saoudite
+ sb: Îles Salomon
sc: Seychelles
- se: La Suède
+ se: Suède
sg: Singapour
si: Slovénie
sk: Slovaquie
sl: Sierra Leone
- sm: Saint Marin
+ sm: Saint-Marin
sn: Sénégal
so: Somalie
sr: Suriname
- ss: Soudan du sud
- st: Sao Tomé et Principe
- sv: Le Salvador
- sz: L’Eswatini
- tc: îles Turques et Caïques
+ ss: Soudan du Sud
+ st: Sao Tomé-et-Principe
+ sv: El Salvador
+ sz: Eswatini (anciennement Swaziland)
+ tc: îles Turques-et-Caïques
td: Tchad
tg: Togo
th: Thaïlande
tj: Tadjikistan
- tl: Timor oriental
- tm: Turkmenistan
+ tl: Timor-Leste
+ tm: Turkménistan
tn: Tunisie
to: Tonga
tr: Turquie
@@ -203,21 +203,21 @@ fr:
tv: Tuvalu
tw: Taïwan
tz: Tanzanie
- ua: L’Ukraine
- ug: Uganda
+ ua: Ukraine
+ ug: Ouganda
us: États-Unis
uy: Uruguay
- uz: L’Ouzbékistan
+ uz: Ouzbékistan
vc: Saint-Vincent-et-les-Grenadines
ve: Venezuela
vg: îles Vierges britanniques
- vi: îles Vierges des États-Unis
- vn: Vietnam
+ vi: îles Vierges américaines
+ vn: Viet Nam
vu: Vanuatu
ws: Samoa
xk: Kosovo
- ye: Yemen
+ ye: Yémen
yt: Mayotte
- za: L’Afrique du Sud
+ za: Afrique du Sud
zm: Zambie
zw: Zimbabwe
diff --git a/config/locales/devise/es.yml b/config/locales/devise/es.yml
index d9e8558ae43..d72c2e2efcf 100644
--- a/config/locales/devise/es.yml
+++ b/config/locales/devise/es.yml
@@ -2,53 +2,52 @@
es:
devise:
confirmations:
- already_confirmed: Su email ha sido confirmado. %{action}
- confirmed: Usted ha confirmado su email.
- confirmed_but_must_set_password: Usted ha confirmado su email.
+ already_confirmed: Su dirección de correo electrónico fue confirmada. %{action}
+ confirmed: Usted confirmó su dirección de correo electrónico
+ confirmed_but_must_set_password: Usted confirmó su dirección de correo electrónico
confirmed_but_remove_from_other_account: Esta dirección de correo electrónico ya
- está asociada con una cuenta %{app_name}, por lo que no podemos
- agregarla a otra cuenta. Primero debe eliminarlo o eliminarlo de la
- cuenta con la que está asociado. Para ello, inicie sesión con esta
+ está asociada con una cuenta de %{app_name}, por lo que no podemos
+ agregarla a otra cuenta. Primero, debe eliminarla o quitarla de la
+ cuenta con la que está asociada. Para ello, inicie sesión con esta
dirección de correo electrónico.
- confirmed_but_sign_in: Has confirmado tu dirección de correo electrónico. Por
- favor inicia sesión para ver tu perfil.
- sign_in: Inicie la sesión de nuevo.
+ confirmed_but_sign_in: Usted confirmó su dirección de correo electrónico. Inicie
+ sesión para ver su perfil.
+ sign_in: Inicie sesión.
failure:
already_authenticated: ''
- inactive: Su cuenta aún no está activada.
- invalid_html: El email o la contraseña que ingresó son incorrectos. Intente
- %{link_html}.
- invalid_link_text: restablecer su contraseña
- last_attempt: Tiene un intento más antes de que su cuenta esté bloqueada.
+ inactive: Su cuenta no ha sido activada.
+ invalid_html: El correo electrónico o la contraseña que ingresó son incorrectos.
+ Intente %{link_html}.
+ invalid_link_text: restableciendo su contraseña
+ last_attempt: Le queda un intento más antes de que su cuenta quede bloqueada.
locked: Su cuenta está bloqueada.
- not_found_in_database_html: El email o la contraseña que ingresó son
- incorrectos. Intente %{link_html}.
- not_found_in_database_link_text: restablecer su contraseña
- session_limited: Sus credenciales para iniciar una sesión se utilizaron en otro
- navegador. Inicie una sesión nueva para continuar en este navegador.
- timeout: Su sesión ha caducado. Vuelva a iniciar la sesión para continuar.
- unauthenticated: Su sesión ha caducado. Vuelva a iniciar la sesión para continuar.
- unconfirmed: Debe confirmar su email antes de continuar.
+ not_found_in_database_html: El correo electrónico o la contraseña que ingresó
+ son incorrectos. Intente %{link_html}.
+ not_found_in_database_link_text: restableciendo su contraseña
+ session_limited: Sus credenciales para iniciar una sesión se usaron en otro
+ navegador. Vuelva a iniciar sesión para continuar en este navegador.
+ timeout: Su sesión terminó. Vuelva a iniciar la sesión para continuar.
+ unauthenticated: Su sesión terminó. Vuelva a iniciar la sesión para continuar.
+ unconfirmed: Debe confirmar su dirección de correo electrónico antes de continuar.
mailer:
password_updated:
- subject: Su contraseña ha sido cambiada.
+ subject: Su contraseña cambió
passwords:
choose_new_password: Elija una contraseña nueva.
- invalid_token: El código para restablecer la contraseña no es válido. Inténtelo
- de nuevo.
- no_token: Usted no puede acceder a esta página si no procede desde el email para
- restablecer la contraseña. Asegúrese de utilizar el enlace completo que
- está en el email.
- send_instructions: En pocos minutos recibirá un email con instrucciones para
- restablecer su contraseña.
- send_paranoid_instructions: En pocos minutos recibirá un email con instrucciones
- para restablecer su contraseña.
- token_expired: Ha tardado demasiado en restablecer su contraseña. Inténtelo de nuevo.
- updated: Su contraseña ha sido cambiada. Ahora ha iniciado una sesión.
- updated_not_active: Su contraseña ha sido cambiada. Inicie sesión con su contraseña nueva.
+ invalid_token: El token para restablecer la contraseña no es válido. Inténtelo de nuevo.
+ no_token: Use el vínculo del correo electrónico que recibió para restablecer su
+ contraseña. Si pega el vínculo en su navegador, cerciórese de pegar el
+ vínculo completo.
+ send_instructions: En unos minutos, recibirá un correo electrónico con
+ instrucciones para restablecer su contraseña.
+ send_paranoid_instructions: En unos minutos, recibirá un correo electrónico con
+ instrucciones para restablecer su contraseña.
+ token_expired: Tardó demasiado en restablecer su contraseña. Inténtelo de nuevo.
+ updated: Su contraseña cambió. Inició su sesión.
+ updated_not_active: Su contraseña cambió. Inicie sesión con su contraseña nueva.
registrations:
- close_window: Puedes cerrar esta ventana si terminaste.
- destroyed: Su cuenta se ha eliminado exitosamente.
+ close_window: Puede cerrar esta ventana si ya terminó.
+ destroyed: Su cuenta fue eliminada.
sessions:
signed_in: ''
- signed_out: Su sesión ha terminado ahora.
+ signed_out: Cerró su sesión.
diff --git a/config/locales/devise/fr.yml b/config/locales/devise/fr.yml
index af3f9cbfecb..6828208e88f 100644
--- a/config/locales/devise/fr.yml
+++ b/config/locales/devise/fr.yml
@@ -2,53 +2,52 @@
fr:
devise:
confirmations:
- already_confirmed: Votre adresse courriel a déjà été confirmée. %{action}
- confirmed: Vous avez confirmé votre adresse courriel
- confirmed_but_must_set_password: Vous avez confirmé votre adresse courriel
- confirmed_but_remove_from_other_account: Cette adresse électronique est déjà
- associée à un compte %{app_name}, nous ne pouvons donc pas l’ajouter à
- un autre compte. Vous devez d’abord le supprimer ou le supprimer du
- compte auquel il est associé. Pour ce faire, connectez-vous avec cette
- adresse e-mail.
- confirmed_but_sign_in: Vous avez confirmé votre adresse email. Veuillez vous
+ already_confirmed: Votre adresse e-mail a déjà été confirmée. %{action}
+ confirmed: Vous avez confirmé votre adresse e-mail
+ confirmed_but_must_set_password: Vous avez confirmé votre adresse e-mail
+ confirmed_but_remove_from_other_account: Cette adresse e-mail est déjà associée
+ à un compte %{app_name}, nous ne pouvons donc pas l’ajouter à un autre
+ compte. Vous devez d’abord la supprimer ou la retirer du compte auquel
+ elle est associée. Pour ce faire, connectez-vous avec cette adresse
+ e-mail.
+ confirmed_but_sign_in: Vous avez confirmé votre adresse e-mail. Veuillez vous
connecter pour voir votre profil.
- sign_in: Veuillez vous connecter de nouveau.
+ sign_in: Veuillez vous connecter.
failure:
already_authenticated: ''
- inactive: Votre compte n’est pas encore activé.
- invalid_html: L’adresse courriel ou le mot de passe que vous avez entré est
+ inactive: Votre compte n’est pas activé.
+ invalid_html: L’adresse e-mail ou le mot de passe que vous avez saisi est
erroné. Essayez de %{link_html}.
invalid_link_text: réinitialiser votre mot de passe
last_attempt: Il vous reste un essai avant que votre compte ne soit verrouillé.
locked: Votre compte est maintenant verrouillé.
- not_found_in_database_html: L’adresse courriel ou le mot de passe que vous avez
- entré est erroné. Essayez de %{link_html}.
+ not_found_in_database_html: L’adresse e-mail ou le mot de passe que vous avez
+ saisi est erroné. Essayez de %{link_html}.
not_found_in_database_link_text: réinitialiser votre mot de passe
- session_limited: Vos authentifiants ont été utilisés dans un autre navigateur.
- Veuillez vous connecter de nouveau pour continuer avec ce navigateur.
- timeout: Votre session est expirée. Veuillez vous connecter de nouveau pour
- continuer.
- unauthenticated: Votre session est expirée. Veuillez vous connecter de nouveau
- pour continuer.
- unconfirmed: Vous devez confirmer votre adresse courriel avant de continuer.
+ session_limited: Vos identifiants de connexion ont été utilisés dans un autre
+ navigateur. Veuillez vous reconnecter pour continuer avec ce navigateur.
+ timeout: Votre session a expiré. Veuillez vous reconnecter pour continuer.
+ unauthenticated: Votre session a expiré. Veuillez vous reconnecter pour continuer.
+ unconfirmed: Vous devez confirmer votre adresse e-mail avant de continuer.
mailer:
password_updated:
subject: Votre mot de passe a été modifié
passwords:
choose_new_password: Choisissez un nouveau mot de passe.
invalid_token: Le jeton de réinitialisation de mot de passe n’est pas valide.
- Veuillez essayer de nouveau.
- no_token: Vous ne pouvez accéder à cette page que depuis un courriel de
- réinitialisation de mot de passe. Si vous avez été redirigé à partir
- d’un courriel de réinitialisation de mot de passe, veuillez vous assurer
- que vous avez utilisé le lien fourni complet.
- send_instructions: Vous recevrez dans quelques instants un courriel avec des
- instructions pour réinitialiser votre mot de passe.
- send_paranoid_instructions: Vous recevrez dans quelques instants un courriel
- avec des instructions pour réinitialiser votre mot de passe.
- token_expired: Vous avez pris trop de temps pour réinitialiser votre mot de
- passe. Veuillez essayer de nouveau.
- updated: Votre mot de passe a été modifié. Vous êtes maintenant connectée(e).
+ Veuillez réessayer.
+ no_token: Pour réinitialiser votre mot de passe, veuillez utiliser le lien
+ contenu dans l’e-mail de réinitialisation de mot de passe que vous avez
+ reçu. Si vous collez ce lien dans votre navigateur, veuillez vous
+ assurer que vous l’avez collé dans son intégralité.
+ send_instructions: Vous recevrez dans quelques minutes un e-mail contenant des
+ instructions pour procéder à la réinitialisation de votre mot de passe.
+ send_paranoid_instructions: Vous recevrez dans quelques minutes un e-mail
+ contenant des instructions pour procéder à la réinitialisation de votre
+ mot de passe.
+ token_expired: Vous avez mis trop de temps à réinitialiser votre mot de passe.
+ Veuillez réessayer.
+ updated: Votre mot de passe a été modifié. Vous êtes maintenant connecté.
updated_not_active: Votre mot de passe a été modifié. Veuillez vous connecter
avec votre nouveau mot de passe.
registrations:
@@ -56,4 +55,4 @@ fr:
destroyed: Votre compte a bien été supprimé.
sessions:
signed_in: ''
- signed_out: Vous êtes maintenant déconnecté(e).
+ signed_out: Vous êtes maintenant déconnecté.
diff --git a/config/locales/doc_auth/es.yml b/config/locales/doc_auth/es.yml
index 5d0c61cb05b..e83e222e443 100644
--- a/config/locales/doc_auth/es.yml
+++ b/config/locales/doc_auth/es.yml
@@ -3,66 +3,66 @@ es:
doc_auth:
accessible_labels:
camera_video_capture_instructions: Tomaremos la foto automáticamente
- camera_video_capture_label: Visor con encuadre para centrar tu documento
- document_capture_dialog: Captura del documento
+ camera_video_capture_label: Visor con marco para centrar su identificación
+ document_capture_dialog: Captura de documento
buttons:
add_new_photos: Añadir nuevas fotos
close: Cerrar
continue: Continuar
- take_or_upload_picture_html: 'Toma una
- foto o Sube una
+ take_or_upload_picture_html: 'Tomar la
+ foto o Cargar la
foto'
- take_picture: Toma una foto
- take_picture_retry: Retirar la foto
- upload_picture: Subir foto
+ take_picture: Tomar la foto
+ take_picture_retry: Volver a tomar la foto
+ upload_picture: Cargar la foto
errors:
alerts:
- address_check: No pudimos leer la dirección en su documento de identidad.
- Intente de tomar nuevas fotos.
+ address_check: No pudimos leer la dirección en su identificación. Intente tomar
+ nuevas fotos.
barcode_content_check: No pudimos leer el código de barras en el reverso de su
documento de identidad. Puede ser debido a un problema con el código
de barras, o bien el código de barras es un nuevo tipo que aún no
reconocemos. Use otro documento de identidad expedido por el estado si
tiene uno.
barcode_read_check: No pudimos leer el código de barras en el reverso de su
- documento de identidad. Intente tomar una nueva foto.
- birth_date_checks: No pudimos leer la fecha de nacimiento en su documento de
- identidad. Intente tomar nuevas fotografías.
+ identificación. Intente tomar una nueva foto.
+ birth_date_checks: No pudimos leer la fecha de nacimiento en su identificación.
+ Intente tomar nuevas fotos.
control_number_check: No pudimos leer el número de referencia en el reverso de
- su documento de identidad. Intente tomar una nueva foto.
- doc_crosscheck: No pudimos reconocer su documento de identidad. Puede estar
- desgastado o dañado, o la parte delantera y trasera del documento de
- identidad no coinciden. Intente tomar nuevas fotos.
- doc_number_checks: No pudimos leer el número de documento en su documento de
- identidad. Intente tomar nuevas fotografías.
- expiration_checks: El documento ha caducado, o no pudimos leer la fecha de
- caducidad en su documento de identidad. Si su documento de identidad
- no ha caducado, intente tomar nuevas fotografías.
- full_name_check: No pudimos leer el nombre completo en su documento de
- identidad. Intente tomar nuevas fotos.
- id_not_recognized: No pudimos reconocer su documento de identidad. Puede estar
- desgastado o dañado, o ser un tipo de documento de identidad que no
- reconocemos. Intente tomar nuevas fotografías.
- id_not_verified: No pudimos verificar su documento de identidad. Puede que se
- haya movido cuando tomó la foto. Intente tomar nuevas fotos.
- issue_date_checks: No pudimos leer la fecha de emisión en su documento de
- identidad. Intente tomar nuevas fotos.
+ su identificación. Intente tomar una nueva foto.
+ doc_crosscheck: No pudimos reconocer su identificación. Puede estar maltratada o
+ dañada, o bien el frente y el reverso de la identificación no
+ coinciden. Intente tomar nuevas fotos.
+ doc_number_checks: No pudimos leer el número de documento en su identificación.
+ Intente tomar nuevas fotos.
+ expiration_checks: El documento venció, o no pudimos leer la fecha de
+ vencimiento en su identificación. Si su identificación no ha vencido,
+ intente tomar nuevas fotografías.
+ full_name_check: No pudimos leer el nombre completo en su identificación.
+ Intente tomar nuevas fotos.
+ id_not_recognized: No pudimos reconocer su identificación. Puede estar
+ maltratada o dañada, o bien es de un tipo de identificación que no
+ reconocemos. Intente tomar nuevas fotos.
+ id_not_verified: No pudimos verificar su identificación. Puede ser que se haya
+ movido cuando tomó la foto. Intente tomar nuevas fotos.
+ issue_date_checks: No pudimos leer la fecha de emisión en su identificación.
+ Intente tomar nuevas fotos.
ref_control_number_check: No pudimos leer el código de barras del número de
- control. Intente tomar nuevas fotografías.
+ control. Intente tomar nuevas fotos.
selfie_not_live_help_link_text: Consulte más consejos para tomar una foto clara de usted mismo
selfie_not_live_or_poor_quality: Intente tomar de nuevo una foto de usted.
Asegúrese de que su rostro se vea claramente en la foto.
- sex_check: No pudimos leer el sexo en su documento de identidad. Intente tomar
- nuevas fotos.
- visible_color_check: No pudimos verificar su documento de identidad. Puede que
- se haya movido cuando tomó la foto, o la foto es demasiado oscura.
+ sex_check: No pudimos leer el sexo en su identificación. Intente tomar nuevas
+ fotos.
+ visible_color_check: No pudimos verificar su identificación. Puede ser que se
+ haya movido cuando tomó la foto, o que la foto es demasiado oscura.
Intente tomar nuevas fotografías con una luz más brillante.
- visible_photo_check: No pudimos verificar la foto de su identificación. Intente
- tomar nuevas fotografías.
+ visible_photo_check: No pudimos verificar la fotografía de su identificación.
+ Intente tomar nuevas fotos.
barcode_attention:
- confirm_info: Si la información que aparece a continuación es incorrecta, por
- favor, suba nuevas fotos de su ID emitido por el estado.
- heading: No pudimos leer el código de barras en su ID.
+ confirm_info: Si la información siguiente es incorrecta, cargue nuevas fotos de
+ su identificación emitida por el estado.
+ heading: No pudimos leer el código de barras en su identificación.
camera:
blocked: Su cámara está bloqueada
blocked_detail_html: Permita el acceso a su cámara para tomar las
@@ -70,176 +70,170 @@ es:
fotografías de nuevo permitiendo el acceso. Si eso no funciona, tal
vez necesite revisar la configuración de su dispositivo para permitir
el acceso.
- failed: No se ha podido encender la cámara, por favor, inténtelo de nuevo.
- card_type: Solo se aceptan licencias de conducir o documentos de identidad
- estatales.
+ failed: No se pudo activar la cámara; inténtelo de nuevo.
+ card_type: Inténtelo de nuevo con su licencia de conducir o tarjeta de
+ identificación estatal.
doc:
doc_type_check: Su licencia de conducir o identificación estatal debe ser
- emitida por un estado o territorio de los EE. UU. No aceptamos
- cartillas militares, pasaportes estadounidenses ni otros documentos de
- identificación.
- resubmit_failed_image: Ya intentó con esta imagen pero falló. Intente añadir una
- imagen diferente.
+ emitida por un estado o territorio de los EE. UU. No aceptamos otras
+ formas de identificación, como pasaportes o identificaciones
+ militares.
+ resubmit_failed_image: Ya intentó con esta imagen y no funcionó. Intente añadir
+ una imagen diferente.
wrong_id_type_html: Solo aceptamos una licencia de conducir o una identificación
- estatal emitida por un estado o territorio de EE. UU. No aceptamos
- cartillas militares, pasaportes estadounidenses ni otros documentos de
- identificación. Más información sobre los documentos de identidad
- aceptados
+ estatal emitida por un estado o territorio de los EE. UU. No aceptamos
+ otras formas de identificación, como pasaportes o identificaciones
+ militares. Obtenga más información sobre las identificaciones
+ aceptadas
dpi:
- failed_short: La imagen es demasiado pequeña o está borrosa, por favor inténtelo
- de nuevo.
+ failed_short: La imagen es demasiado pequeña o está borrosa; inténtelo de nuevo.
top_msg: No pudimos leer su identificación. Es posible que el tamaño de su
- imagen sea demasiado chico, que su identificación sea demasiado
- pequeña o que la foto esté borrosa. Asegúrese de que su identificación
- ocupe un gran espacio dentro del marco de la imagen e intente tomar
- una nueva foto.
- top_msg_plural: No pudimos leer su identificación. Es posible que los tamaños de
- sus imágenes sean demasiado chicos, que su identificación sea
- demasiado pequeña o que las fotos estén borrosas. Asegúrese de que su
- identificación ocupe un gran espacio dentro del marco de la imagen e
- intente tomar nuevas fotos.
+ imagen o de su identificación sea demasiado pequeño o que la foto esté
+ borrosa. Asegúrese de que su identificación se vea más grande dentro
+ del marco de la imagen e intente tomar una nueva foto.
+ top_msg_plural: No pudimos leer su identificación. Es posible que el tamaño de
+ sus imágenes o de su identificación sea demasiado pequeño o que las
+ fotos estén borrosas. Asegúrese de que su identificación se vea grande
+ dentro del marco de la imagen e intente tomar nuevas fotos.
file_type:
- invalid: Ese formato no es admitido, por favor elija un archivo JPG o PNG.
+ invalid: No se acepta este tipo de archivo; elija un archivo JPG o PNG.
general:
fallback_field_level: Agregue una imagen nueva
- multiple_back_id_failures: No pudimos verificar la parte trasera de su documento
- de identidad. Intente tomar una nueva foto.
- multiple_front_id_failures: No pudimos verificar la parte delantera de su
- documento de identidad. Intente tomar una nueva foto.
- network_error: Estamos teniendo problemas técnicos por nuestra parte. Intente
- enviar sus imágenes de nuevo más tarde.
- no_liveness: Intente tomar nuevas fotografías.
+ multiple_back_id_failures: No pudimos verificar el reverso de su identificación.
+ Intente tomar una nueva foto.
+ multiple_front_id_failures: No pudimos verificar el frente de su identificación.
+ Intente tomar una nueva foto.
+ network_error: Estamos teniendo problemas técnicos. Intente enviar sus imágenes
+ de nuevo más tarde.
+ no_liveness: Intente tomar nuevas fotos.
selfie_failure: No pudimos verificar su foto. Intente tomar una nueva foto.
selfie_failure_help_link_text: Consulte más consejos para tomar fotos claras
glare:
- failed_short: Hay reflejos en la imagen, por favor inténtelo de nuevo.
+ failed_short: La imagen tiene reflejos; inténtelo de nuevo.
top_msg: No pudimos leer su identificación. Es posible que su foto tenga
- reflejos. Asegúrese de que el flash de su cámara esté desactivado e
+ reflejos. Asegúrese de que el flash de su cámara esté apagado e
intente tomar una nueva foto.
top_msg_plural: No pudimos leer su identificación. Es posible que sus fotos
- tengan reflejos. Asegúrese de que el flash de su cámara esté
- desactivado e intente tomar nuevas fotos.
+ tengan reflejos. Asegúrese de que el flash de su cámara esté apagado e
+ intente tomar nuevas fotos.
http:
image_load:
- failed_short: El archivo de la imagen no es compatible. Inténtalo de nuevo.
- top_msg: El archivo de imagen que ha añadido no es compatible. Por favor, tome
- nuevas fotos de su identificación y vuelva a intentarlo.
+ failed_short: El archivo de la imagen no es compatible; inténtelo de nuevo.
+ top_msg: El archivo de imagen que añadió no es compatible. Tome nuevas fotos de
+ su identificación e inténtelo de nuevo.
image_size:
- failed_short: El archivo de la imagen no es compatible. Inténtalo de nuevo.
+ failed_short: El archivo de la imagen no es compatible; inténtelo de nuevo.
top_msg: El tamaño de la imagen es demasiado grande o demasiado pequeño. Añada
- imágenes de su documento de identidad de unos 2025 x 1275 píxeles.
+ imágenes de su identificación de unos 2025 x 1275 píxeles.
pixel_depth:
- failed_short: El archivo de la imagen no es compatible. Inténtalo de nuevo.
- top_msg: No es compatible con la profundidad de píxeles de su archivo de imagen.
- Tome nuevas fotos de su documento de identidad e inténtelo
- nuevamente. La profundidad de píxeles de la imagen admitida es de 24
- bits RGB.
+ failed_short: El archivo de la imagen no es compatible; inténtelo de nuevo.
+ top_msg: La profundidad de píxel de su archivo de imagen no es compatible. Tome
+ nuevas fotos de su identificación e inténtelo de nuevo. La
+ profundidad de píxel de la imagen admitida es RGB de 24 bits.
not_a_file: La selección no era un archivo válido.
pii:
- birth_date_min_age: Tu cumpleaños no cumple con el requisito de edad mínima.
+ birth_date_min_age: Su fecha de nacimiento no cumple con el requisito de edad mínima.
sharpness:
- failed_short: La imagen está borrosa, por favor inténtelo de nuevo.
+ failed_short: La imagen está borrosa; inténtelo de nuevo.
top_msg: No pudimos leer su identificación. Es posible que su foto esté
- demasiado borrosa u oscura. Intente tomar una nueva foto en un área
- iluminada.
+ demasiado borrosa u oscura. Intente tomar una nueva foto en un lugar
+ iluminado.
top_msg_plural: No pudimos leer su identificación. Es posible que sus fotos
estén demasiado borrosas u oscuras. Intente tomar nuevas fotos en un
- área iluminada.
- upload_error: Lo siento, algo salió mal por nuestra parte.
+ lugar iluminado.
+ upload_error: Lo sentimos, algo no funcionó bien.
forms:
captured_image: Imagen capturada
change_file: Cambiar archivo
- choose_file_html: Arrastre el archivo aquí o elija de la
+ choose_file_html: Arrastrar el archivo aquí o seleccionarlo de la
carpeta
- doc_success: Verificamos sus datos
+ doc_success: Verificamos su información
selected_file: Archivo seleccionado
headings:
address: Actualice su dirección postal
back: Reverso de su licencia de conducir o identificación estatal
capture_complete: Verificamos su identificación
- capture_scan_warning_html: No pudimos leer el código de barras en su ID. Si la
- información que aparece a continuación es incorrecta, por favor,
- %{link_html} de su ID emitido por el estado.
- capture_scan_warning_link: suba nuevas fotos
+ capture_scan_warning_html: No pudimos leer el código de barras en su
+ identificación. Si la información que aparece a continuación es
+ incorrecta, %{link_html} de su identificación emitida por el estado.
+ capture_scan_warning_link: cargue nuevas fotos
document_capture: Añade fotos de tu licencia de conducir o credencial de
identificación oficial
document_capture_back: Reverso de su identificación
document_capture_front: Frente de su identificación
document_capture_selfie: Fotografía de su cara
- document_capture_subheader_id: Licencia de conducir o tarjeta de identificación estatal
+ document_capture_subheader_id: Licencia de conducir o identificación estatal
document_capture_subheader_selfie: Fotografía de su cara
- document_capture_with_selfie: Agregue las fotos de su identificación y una foto de usted
- front: Anverso de su licencia de conducir o identificación estatal
- how_to_verify: Elija cómo quiere verificar su identidad
- hybrid_handoff: '¿Cómo desea añadir su documento de identidad?'
+ document_capture_with_selfie: Agregue fotos de su identificación y una foto de usted
+ front: Frente de su licencia de conducir o identificación estatal
+ how_to_verify: Elija cómo desea verificar su identidad
+ hybrid_handoff: '¿Cómo desea añadir su identificación?'
hybrid_handoff_selfie: Ingrese su número telefónico para cambiar dispositivos
interstitial: Estamos procesando sus imágenes
lets_go: Cómo funciona la verificación de su identidad
- no_ssn: ¿No tiene un número de Seguro Social?
+ no_ssn: '¿No tiene un número de Seguro Social?'
review_issues: Revise sus imágenes e inténtelo de nuevo
- secure_account: Asegure su cuenta
+ secure_account: Proteja su cuenta
selfie: Fotografía de su cara
ssn: Ingrese su número de Seguro Social
ssn_update: Actualice su número de Seguro Social
text_message: Enviamos un mensaje a su teléfono
- upload_from_computer: Continuar en esta computadora
- upload_from_phone: Utilice su teléfono para tomar las fotos
+ upload_from_computer: Continúe en esta computadora
+ upload_from_phone: Utilice su teléfono para tomar fotos
verify_at_post_office: Verifique su identidad en una oficina de correos
verify_identity: Verifique su identidad
verify_online: Verifique su identidad en línea
welcome: 'Verifiquemos su identidad para %{sp_name}'
hybrid_flow_warning:
- explanation_html: Usted está utilizando %{app_name} para
- verificar su identidad y acceder a
- %{service_provider_name} y sus servicios.
- explanation_non_sp_html: Usted está utilizando %{app_name} para
- verificar su identidad
+ explanation_html: Está utilizando %{app_name} para verificar su
+ identidad y acceder a %{service_provider_name} y sus
+ servicios.
+ explanation_non_sp_html: Está utilizando %{app_name} para verificar su identidad.
only_add_if_text: 'SOLO AGREGUE SU IDENTIFICACIÓN SI:'
only_add_own_account: Está usando su propia cuenta de %{app_name}
- only_add_phone_verify: Usted solicitó a %{app_name} que verificara su identidad
- a través de su teléfono
- only_add_sp_services_html: Está tratando de acceder a los servicios
+ only_add_phone_verify: Usted solicitó a %{app_name} que verificara su
+ identificación con su teléfono
+ only_add_sp_services_html: Está tratando de acceder a los servicios de
%{service_provider_name}
info:
address_guidance_puerto_rico_html: Residentes en Puerto Rico:
Edite su
- dirección para que figure su urbanización o condominio en la línea de
- dirección 2.
+ dirección para que el edificio de su vivienda o condominio figure en la
+ línea de dirección 2.
capture_status_big_document: Demasiado cerca
capture_status_capturing: Capturando
- capture_status_none: Alinea
- capture_status_small_document: Muévete mas cerca
- capture_status_tap_to_capture: Toque para capturar
+ capture_status_none: Alinear
+ capture_status_small_document: Acercar
+ capture_status_tap_to_capture: Tocar para capturar
exit:
with_sp: Salir de %{app_name} y volver a %{sp_name}
- without_sp: Salir de la verificación de identidad e ir a la página de su cuenta
+ without_sp: Salga de la verificación de identidad y vaya a la página de su cuenta
getting_started_html: '%{sp_name} necesita asegurarse de que se trata de usted y
no de alguien que se hace pasar por usted. %{link_html}'
getting_started_learn_more: Obtenga más información sobre la verificación de su identidad
how_to_verify: Tiene la opción de verificar su identidad en línea o en persona
en una oficina de correos participante.
- how_to_verify_troubleshooting_options_header: ¿Quiere saber más sobre cómo verificar su identidad?
- hybrid_handoff: Recopilaremos información sobre usted leyendo su documento de
- identidad expedido por el estado.
- hybrid_handoff_ipp_html: ¿No tiene un teléfono móvil? Puede
- verificar su identidad en una oficina de correos de los Estados Unidos.
+ how_to_verify_troubleshooting_options_header: '¿Desea obtener más información sobre cómo verificar su identidad?'
+ hybrid_handoff: Recopilaremos información sobre usted leyendo su identificación
+ emitida por el estado.
+ hybrid_handoff_ipp_html: '¿No tiene un teléfono móvil? Puede
+ verificar su identidad en una oficina de correos de los Estados Unidos.'
image_loaded: Imagen cargada
image_loading: Cargando la imagen
image_updated: Imagen actualizada
- interstitial_eta: Esto puede tardar hasta un minuto. Cargaremos el siguiente
+ interstitial_eta: Esto podría tardar hasta un minuto. Cargaremos el siguiente
paso automáticamente cuando esté terminado.
- interstitial_thanks: '¡Gracias por su paciencia!'
- keep_window_open: No cierres esta ventana.
- learn_more: Obtenga más información sobre cómo protegemos sus datos confidenciales
- lets_go: 'La verificación de la identidad se realiza en dos partes:'
- link_sent: Verifique su teléfono y siga las instrucciones para tomar una
- fotografía de la identificación emitida por su estado.
- link_sent_complete_no_polling: Cuando termines, haz clic en “Continuar” para
- completar la verificación de tu identidad.
- link_sent_complete_polling: El siguiente paso se cargará automáticamente una vez
- que verifiques tu identidad a través de tu teléfono.
+ interstitial_thanks: Gracias por su paciencia
+ keep_window_open: No cierre esta ventana.
+ learn_more: Obtenga más información sobre cómo protegemos su información confidencial
+ lets_go: 'La verificación de la identidad se efectúa en dos partes:'
+ link_sent: Revise su teléfono y siga las instrucciones para tomar una foto de su
+ identificación emitida por el estado.
+ link_sent_complete_no_polling: Cuando termine, haga clic en “Continuar” para
+ terminar la verificación de su identidad.
+ link_sent_complete_polling: El siguiente paso se cargará automáticamente.
no_ssn: Debe tener un número de Seguro Social para finalizar la verificación de
su identidad.
- review_examples_of_photos: Revisa ejemplos de cómo hacer fotos nítidas de tu documento de identidad.
+ review_examples_of_photos: Vea ejemplos de cómo tomar fotos nítidas de su identificación.
secure_account: Cifraremos su cuenta cuando vuelva a introducir su contraseña.
La encriptación significa que sus datos están protegidos y solo usted
podrá acceder o modificar su información.
@@ -249,20 +243,19 @@ es:
face_not_found: No se detectó el rostro
face_too_small: Rostro demasiado pequeño
too_many_faces: Demasiados rostros
- ssn: Necesitamos su número de Seguro Social para validar su nombre, fecha de
+ ssn: Necesitamos su número de Seguro Social para verificar su nombre, fecha de
nacimiento y dirección.
- stepping_up_html: 'Verifica su identidad de nuevo para acceder a este servicio.
- %{link_html}'
+ stepping_up_html: Verifica su identidad de nuevo para acceder a este servicio. %{link_html}
tag: Recomendado
- upload_from_computer: ¿No tiene teléfono? Suba fotos de su documento de
- identidad desde esta computadora.
- upload_from_phone: No tendrá que volver a iniciar sesión y volverá a cambiar a
- esta computadora después de tomar las fotos. Su teléfono móvil debe
- tener una cámara y un navegador web.
+ upload_from_computer: '¿No tiene un teléfono? Cargue fotos de su identificación
+ desde esta computadora.'
+ upload_from_phone: No tendrá que volver a iniciar sesión y volverá a esta
+ computadora después de tomar las fotos. Su teléfono móvil debe tener una
+ cámara y un navegador web.
verify_at_post_office_description: Esta opción es mejor si no tiene un teléfono
para tomar fotografías de su identificación.
- verify_at_post_office_instruction: Ingresará su información de identificación en
- línea y verificará su identidad en persona en una oficina de correos
+ verify_at_post_office_instruction: Ingresará la información de su identificación
+ en línea y verificará su identidad en persona en una oficina de correos
participante.
verify_at_post_office_link_text: Obtenga más información sobre la verificación en persona
verify_identity: Le pediremos su identificación, número de teléfono y otros
@@ -271,25 +264,25 @@ es:
verify_online_description: Esta opción es mejor si tiene un teléfono para tomar
fotografías de su identificación.
verify_online_instruction: Tomará fotografías de su identificación para
- verificar su identidad completamente en línea. La mayoría de los
- usuarios finalizan este proceso de una sola vez.
+ verificar su identidad por completo en línea. La mayoría de los usuarios
+ logran terminar este proceso en una sola sesión.
verify_online_link_text: Obtenga más información sobre la verificación en línea
- you_entered: 'Ud. entregó:'
+ you_entered: 'Usted ingresó:'
instructions:
bullet1: Tener una licencia de conducir o una tarjeta de identificación estatal
bullet2: Ingresar su número de Seguro Social
bullet3: Hacer coincidir su número de teléfono
bullet4: Volver a ingresar su contraseña de %{app_name}
- consent: Al marcar esta casilla, usted permite que %{app_name} solicite,
- utilice, conserve y comparta su información personal. Los utilizamos
- para verificar su identidad.
+ consent: Al marcar esta casilla, usted permite que %{app_name} pida, utilice,
+ conserve y divulgue su información personal. La usaremos para verificar
+ su identidad.
getting_started: 'Necesitará:'
learn_more: Obtenga más información sobre nuestras medidas de privacidad y seguridad
- switch_back: Regrese a su computadora para continuar con la verificación de su
- identidad.
+ switch_back: Vuelva a su computadora para finalizar la verificación de su identidad.
switch_back_image: Flecha que apunta del teléfono a la computadora
- test_ssn: En el entorno de prueba solo los SSN que comienzan con “900-” o “666-”
- se consideran válidos. No ingrese PII real en este campo.
+ test_ssn: En el entorno de prueba, solo se consideran válidos los números de
+ Seguro Social que comienzan con “900-” o “666-”. No ingrese IIP real en
+ este campo.
text1: No se aceptan otras formas de identificación. Revisaremos que usted sea
la persona que figura en su identificación.
text2: No necesita la tarjeta física del Seguro Social.
@@ -297,7 +290,7 @@ es:
y enviamos un código de un solo uso a su teléfono.
text4: Su contraseña guarda y cifra su información personal.
tips:
- document_capture_hint: Debe ser un JPG o PNG
+ document_capture_hint: Debe ser un archivo JPG o PNG
document_capture_id_text1: Coloque su identificación en una superficie plana y de color oscuro.
document_capture_id_text2: Tómese la foto en un lugar bien iluminado.
document_capture_id_text3: Evite que se vean reflejos o sombras en su identificación.
@@ -309,9 +302,8 @@ es:
document_capture_selfie_text2: Tómese la foto en un lugar bien iluminado.
document_capture_selfie_text3: Mantenga una expresión neutral.
document_capture_selfie_text4: Revise que se vea su rostro completo dentro del círculo verde.
- review_issues_id_header_text: 'Revise las imágenes de su documento de identidad
- expedido por el estado:'
- review_issues_id_text1: '¿Ha usado un fondo oscuro?'
+ review_issues_id_header_text: 'Revise las imágenes de su identificación emitida por el estado:'
+ review_issues_id_text1: '¿Usó un fondo de color oscuro?'
review_issues_id_text2: '¿Tomó la foto en una superficie plana?'
- review_issues_id_text3: '¿Tiene el flash de su cámara apagado?'
- review_issues_id_text4: '¿Todos los detalles están nítidos y claramente visibles?'
+ review_issues_id_text3: '¿Está apagado el flash de su cámara?'
+ review_issues_id_text4: '¿Todos los detalles se ven con precisión y claridad?'
diff --git a/config/locales/doc_auth/fr.yml b/config/locales/doc_auth/fr.yml
index ea12cb1e70a..a41dfcf8ce0 100644
--- a/config/locales/doc_auth/fr.yml
+++ b/config/locales/doc_auth/fr.yml
@@ -6,9 +6,9 @@ fr:
camera_video_capture_label: Viseur avec cadre pour centrer votre pièce d’identité
document_capture_dialog: Capture du document
buttons:
- add_new_photos: Ajoutez de nouvelles photos
+ add_new_photos: Ajouter de nouvelles photos
close: Fermer
- continue: Continuer
+ continue: Suite
take_or_upload_picture_html: 'Prendre une
photo ou Télécharger une
photo'
@@ -25,24 +25,24 @@ fr:
reconnaissons pas encore. Utilisez une autre carte d’identité délivrée
par l’État si vous en avez une.
barcode_read_check: Nous n’avons pas pu lire le code-barres au verso de votre
- carte d’identité. Essayez de prendre une nouvelle photo.
+ pièce d’identité. Essayez de prendre une nouvelle photo.
birth_date_checks: Nous n’avons pas pu lire la date de naissance sur votre pièce
d’identité. Essayez de prendre de nouvelles photos.
control_number_check: Nous n’avons pas pu lire le numéro de référence au verso
de votre carte d’identité. Essayez de prendre une nouvelle photo.
doc_crosscheck: Nous n’avons pas pu reconnaître votre pièce d’identité. Il se
peut qu’elle soit usée ou endommagée, ou que le recto et le verso de
- la carte d’identité ne correspondent pas. Essayez de prendre de
+ la pièce d’identité ne correspondent pas. Essayez de prendre de
nouvelles photos.
doc_number_checks: Nous n’avons pas pu lire le numéro du document sur votre
carte d’identité. Essayez de prendre de nouvelles photos.
- expiration_checks: Le document a expiré ou nous n’avons pas pu lire la date
- d’expiration sur votre carte d’identité. Si votre pièce d’identité
- n’est pas expirée, essayez de prendre de nouvelles photos.
+ expiration_checks: Le document est périmé ou nous n’avons pas pu lire la date
+ d’expiration sur votre pièce d’identité. Si votre pièce d’identité
+ n’est pas périmée, essayez de prendre de nouvelles photos.
full_name_check: Nous n’avons pas pu lire le nom complet sur votre pièce
d’identité. Essayez de prendre de nouvelles photos.
id_not_recognized: Nous n’avons pas pu reconnaître votre pièce d’identité. Elle
- est peut-être usée ou endommagée, ou bien il s’agit d’un type de carte
+ est peut-être usée ou endommagée, ou bien il s’agit d’un type de pièce
d’identité que nous ne reconnaissons pas. Essayez de prendre de
nouvelles photos.
id_not_verified: Nous n’avons pas pu vérifier votre pièce d’identité. Il se peut
@@ -58,15 +58,15 @@ fr:
visible sur la photo.
sex_check: Nous n’avons pas pu lire le sexe sur votre pièce d’identité. Essayez
de prendre de nouvelles photos.
- visible_color_check: Nous n’avons pas pu vérifier votre pièce d’identité. Elle a
- peut-être bougé lorsque vous avez pris la photo, ou la photo est trop
- sombre. Essayez de prendre de nouvelles photos avec un éclairage plus
- fort.
+ visible_color_check: Nous n’avons pas pu vérifier votre pièce d’identité. Il se
+ peut qu’elle ait bougé lorsque vous avez pris la photo, ou que la
+ photo soit trop sombre. Essayez de prendre de nouvelles photos avec un
+ meilleur éclairage.
visible_photo_check: Nous n’avons pas pu vérifier la photo sur votre pièce
d’identité. Essayez de prendre de nouvelles photos.
barcode_attention:
confirm_info: Si les informations ci-dessous sont incorrectes, veuillez
- télécharger de nouvelles photos de votre carte d’identité délivrée par
+ télécharger de nouvelles photos de votre pièce d’identité délivrée par
l’État.
heading: Nous n’avons pas pu lire le code-barres de votre pièce d’identité.
camera:
@@ -77,34 +77,33 @@ fr:
cela ne marche pas, pensez à vérifier les paramètres de votre appareil
en matière d’autorisations d’accès.
failed: L’appareil photo n’a pas réussi à démarrer, veuillez réessayer.
- card_type: Réessayez avec votre permis de conduire ou carte d’identité délivrée
- par l’État.
+ card_type: Réessayez avec votre permis de conduire ou carte d’identité d’un État.
doc:
doc_type_check: Votre permis de conduire ou votre carte d’identité doit être
- établi par un État ou un territoire des États-Unis. Nous n’acceptons
- pas les cartes d’identité militaires, les passeports américains ou
- autres documents d’identification.
+ délivré par un État ou un territoire des États-Unis. Nous n’acceptons
+ pas d’autres pièces d’identité, comme les passeports ou les cartes
+ d’identité militaires.
resubmit_failed_image: Vous avez déjà essayé cette image et elle a échoué.
Veuillez essayer d’ajouter une image différente.
wrong_id_type_html: Nous n’acceptons qu’un permis de conduire ou une carte
- d’identité délivrée par un état ou un territoire des États-Unis. Nous
- n’acceptons pas les cartes d’identité militaires, les passeports
- américains ou autres documents d’identification. En savoir plus sur
- les pièces d’identité acceptées
+ d’identité délivré par un État ou un territoire des États-Unis. Nous
+ n’acceptons pas d’autres pièces d’identité, comme les passeports ou
+ les cartes d’identité militaires. En savoir plus sur les pièces
+ d’identité acceptées
dpi:
- failed_short: L’image est trop petite ou floue, veuillez réessayer.
- top_msg: Nous n’avons pas pu lire votre pièce d’identité. La taille de votre
- image est peut-être trop petite ou il se peut que votre pièce
- d’identité soit trop petite ou floue sur la photo. Assurez-vous que la
- taille de votre pièce d’identité est grande et qu’elle est située dans
- le cadre de l’image puis essayez de prendre une nouvelle photo.
- top_msg_plural: Nous n’avons pas pu lire votre pièce d’identité. La taille de
- vos images est peut-être trop petite ou il se peut que votre pièce
- d’identité soit trop petite ou floue sur les photos. Assurez-vous que
- la taille de votre pièce d’identité est grande et qu’elle est située
- dans le cadre de l’image puis essayez de prendre des nouvelles photos.
+ failed_short: Image trop petite ou floue, veuillez réessayer.
+ top_msg: Nous n’avons pas pu lire votre pièce d’identité. Il se peut que votre
+ image soit de trop petite taille ou que votre pièce d’identité soit
+ trop petite ou floue sur la photo. Assurez-vous que votre pièce
+ d’identité remplisse le cadre de l’image, puis essayez de prendre une
+ nouvelle photo.
+ top_msg_plural: Nous n’avons pas pu lire votre pièce d’identité. Il se peut que
+ votre image soit de trop petite taille ou que votre pièce d’identité
+ soit trop petite ou floue sur les photos. Assurez-vous que votre pièce
+ d’identité remplisse le cadre de l’image, puis essayez de prendre une
+ nouvelle photo.
file_type:
- invalid: Ce type de fichier n’est pas accepté, veuillez choisir un fichier JPG
+ invalid: Ce type de fichier n’est pas accepté ; veuillez choisir un fichier JPG
ou PNG.
general:
fallback_field_level: Veuillez ajouter une nouvelle image
@@ -112,20 +111,22 @@ fr:
d’identité. Essayez de prendre une nouvelle photo.
multiple_front_id_failures: Nous n’avons pas pu vérifier le recto de votre pièce
d’identité. Essayez de prendre une nouvelle photo.
- network_error: Nous avons des difficultés techniques de notre côté. Veuillez
- essayer de soumettre à nouveau vos images plus tard.
+ network_error: Nous rencontrons actuellement des difficultés techniques de notre
+ côté. Veuillez réessayer d’envoyer vos images ultérieurement.
no_liveness: Essayez de prendre de nouvelles photos.
selfie_failure: Nous n’avons pas pu vérifier votre photo. Essayez de prendre une
nouvelle photo.
selfie_failure_help_link_text: Consultez plus de conseils pour prendre des photos claires
glare:
failed_short: L’image a des reflets, veuillez réessayer.
- top_msg: Nous n’avons pas pu lire votre pièce d’identité. Votre photo peut avoir
- des reflets. Assurez-vous que le flash de votre appareil photo est
- désactivé puis essayez de prendre une nouvelle photo.
- top_msg_plural: Nous n’avons pas pu lire votre pièce d’identité. Vos photos
- peuvent avoir des reflets. Assurez-vous que le flash de votre appareil
- photo est désactivé puis essayez de prendre de nouvelles photos.
+ top_msg: Nous n’avons pas pu lire votre pièce d’identité. Il se peut que votre
+ photo présente des reflets. Assurez-vous que le flash de votre
+ appareil photo soit désactivé, puis essayez de prendre une nouvelle
+ photo.
+ top_msg_plural: Nous n’avons pas pu lire votre pièce d’identité. Il se peut que
+ votre photo présente des reflets. Assurez-vous que le flash de votre
+ appareil photo soit désactivé, puis essayez de prendre une nouvelle
+ photo.
http:
image_load:
failed_short: Le fichier image n’est pas pris en charge, veuillez réessayer.
@@ -135,122 +136,121 @@ fr:
image_size:
failed_short: Le fichier image n’est pas pris en charge, veuillez réessayer.
top_msg: La taille de votre image est trop grande ou trop petite. Veuillez
- ajouter des images de votre pièce d’identité d’environ 2025 x 1275
- pixels.
+ ajouter des images de votre pièce d’identité d’environ 2 025 x
+ 1 275 pixels.
pixel_depth:
failed_short: Le fichier image n’est pas pris en charge, veuillez réessayer.
- top_msg: La profondeur de pixel de votre fichier image n’est pas supportée.
- Veuillez prendre de nouvelles photos de votre pièce d’identité et
- réessayer. La profondeur de pixel de l’image prise en charge est de
- 24 bits RGB.
+ top_msg: La profondeur de pixel de votre fichier image n’est pas prise en
+ charge. Veuillez prendre de nouvelles photos de votre pièce
+ d’identité et réessayer. La profondeur de pixel de l’image prise en
+ charge est de 24 bits RGB.
not_a_file: La sélection n’était pas un fichier valide.
pii:
birth_date_min_age: Votre anniversaire ne correspond pas à l’âge minimum requis.
sharpness:
failed_short: L’image est floue, veuillez réessayer.
- top_msg: Nous n’avons pas pu lire votre pièce d’identité. Votre photo est
- peut-être trop floue ou trop sombre. Essayez de prendre une nouvelle
- photo dans un endroit lumineux.
- top_msg_plural: Nous n’avons pas pu lire votre pièce d’identité. Vos photos sont
- peut-être trop floues ou trop sombres. Essayez de prendre de nouvelles
- photos dans un endroit lumineux.
- upload_error: Désolé, quelque chose a mal tourné de notre côté.
+ top_msg: Nous n’avons pas pu lire votre pièce d’identité. Il se peut que votre
+ photo soit trop floue ou trop sombre. Essayez de prendre une nouvelle
+ photo dans un endroit bien éclairé.
+ top_msg_plural: Nous n’avons pas pu lire votre pièce d’identité. Il se peut que
+ vos photos soient trop floues ou trop sombres. Essayez de prendre de
+ nouvelles photos dans un endroit bien éclairé.
+ upload_error: Désolé, il y a eu un problème de notre côté.
forms:
captured_image: Image capturée
change_file: Changer de fichier
- choose_file_html: Faites glisser le fichier ici ou choisissez un
- dossier
+ choose_file_html: Faites glisser le fichier ici ou choisissez dans
+ un dossier
doc_success: Nous avons vérifié vos informations
selected_file: Fichier sélectionné
headings:
address: Mettre à jour votre adresse postale
- back: Verso de votre permis de conduire ou de votre carte d’identité de l’État
- capture_complete: Nous avons vérifié votre document d’identité
+ back: Verso de votre permis de conduire ou de votre carte d’identité d’un État
+ capture_complete: Nous avons vérifié votre pièce d’identité
capture_scan_warning_html: Nous n’avons pas pu lire le code-barres de votre
- pièce d’identité. Si les informations ci-dessous sont incorrectes,
+ pièce d’identité. Si les informations ci-dessous ne sont pas correctes,
veuillez %{link_html} de votre carte d’identité délivrée par l’État.
capture_scan_warning_link: télécharger de nouvelles photos
document_capture: Ajoutez des photos de votre permis de conduire ou de votre
carte d’identité nationale
document_capture_back: Verso de votre pièce d’identité
- document_capture_front: Recto de votre pièce d’identité
+ document_capture_front: Recto de votre carte d’identité
document_capture_selfie: Photo de votre visage
document_capture_subheader_id: Permis de conduire ou carte d’identité d’un État
document_capture_subheader_selfie: Photo de votre visage
document_capture_with_selfie: Ajouter des photos de votre pièce d’identité et une photo de vous-même
- front: Recto de votre permis de conduire ou de votre carte d’identité de l’État
+ front: Recto de votre permis de conduire ou de votre carte d’identité d’un État
how_to_verify: Choisissez la manière dont vous souhaitez confirmer votre identité
- hybrid_handoff: Comment voulez-vous ajouter votre identifiant ?
+ hybrid_handoff: Comment voulez-vous ajouter votre pièce d’identité ?
hybrid_handoff_selfie: Saisir votre numéro de téléphone pour changer d’appareil
interstitial: Nous traitons vos images
lets_go: Comment fonctionne la vérification de votre identité
- no_ssn: Vous n’avez pas de numéro de sécurité sociale?
+ no_ssn: Vous n’avez pas de numéro de sécurité sociale ?
review_issues: Vérifiez vos images et essayez à nouveau
secure_account: Sécuriser votre compte
selfie: Photo de votre visage
- ssn: Saisissez votre numéro de sécurité sociale
- ssn_update: Mettre à jour votre numéro de Sécurité Sociale
+ ssn: Saisir votre numéro de sécurité sociale
+ ssn_update: Mettre à jour votre numéro de sécurité sociale
text_message: Nous avons envoyé un message à votre téléphone
upload_from_computer: Continuer sur cet ordinateur
- upload_from_phone: Utilisez votre téléphone pour prendre des photos
- verify_at_post_office: Vérifiez votre identité un bureau de poste
- verify_identity: Vérifier votre identité
- verify_online: Vérifiez votre identité en ligne
+ upload_from_phone: Utiliser votre téléphone pour prendre des photos
+ verify_at_post_office: Confirmer votre identité dans un bureau de poste
+ verify_identity: Confirmer votre identité
+ verify_online: Confirmer votre identité en ligne
welcome: Vérifions votre identité auprès de %{sp_name}
hybrid_flow_warning:
- explanation_html: Vous utilisez %{app_name} pour vérifier votre
- identité et accéder à %{service_provider_name} et à ses
- services.
- explanation_non_sp_html: Vous utilisez %{app_name} pour vérifier votre identité.
- only_add_if_text: 'N’AJOUTEZ VOTRE IDENTIFIANT QUE SI :'
+ explanation_html: Vous utilisez %{app_name} pour confirmer
+ votre identité et accéder à %{service_provider_name} et
+ à ses services.
+ explanation_non_sp_html: Vous utilisez %{app_name} pour confirmer votre identité.
+ only_add_if_text: 'N’AJOUTEZ VOTRE PIÈCE D’IDENTITÉ QUE SI :'
only_add_own_account: Vous utilisez votre propre compte %{app_name}
- only_add_phone_verify: Vous avez demandé à %{app_name} de vérifier votre
- identité en utilisant votre téléphone
+ only_add_phone_verify: Vous avez demandé à %{app_name} de confirmer votre
+ identité à l’aide de votre téléphone
only_add_sp_services_html: Vous essayez d’accéder aux services de
%{service_provider_name}
info:
- address_guidance_puerto_rico_html: Résidents de Porto Rico:
Modifiez
+ address_guidance_puerto_rico_html: Résidents de Porto Rico :
modifiez
votre adresse pour indiquer votre lotissement ou votre condominium à la
ligne 2.
capture_status_big_document: Trop près
- capture_status_capturing: Prendre la photo
+ capture_status_capturing: Prise de la photo
capture_status_none: Alignez
capture_status_small_document: Approchez-vous
- capture_status_tap_to_capture: Appuyez pour capturer
+ capture_status_tap_to_capture: Appuyez pour prendre la photo
exit:
- with_sp: Quittez %{app_name} et retournez à %{sp_name}
- without_sp: Quittez la vérification d’identité et accédez à la page de votre compte
+ with_sp: Quitter %{app_name} et revenir à %{sp_name}
+ without_sp: Quitter la vérification d’identité et accéder à la page de votre compte
getting_started_html: '%{sp_name} doit s’assurer qu’il s’agit bien de vous et
non de quelqu’un qui se fait passer pour vous. %{link_html}'
getting_started_learn_more: En savoir plus sur la vérification de votre identité
how_to_verify: Vous avez la possibilité de vérifier votre identité en ligne ou
en personne dans un bureau de poste participant.
- how_to_verify_troubleshooting_options_header: Vous voulez en savoir plus sur la façon de vérifier votre identité?
- hybrid_handoff: Nous recueillons des informations sur vous en lisant votre carte
- d’identité délivrée par l’État.
- hybrid_handoff_ipp_html: Vous n’avez pas de téléphone portable?
- Vous pouvez confirmer votre identité dans un bureau de poste américain
- participant.
+ how_to_verify_troubleshooting_options_header: Vous voulez en savoir plus sur la façon de confirmer votre identité ?
+ hybrid_handoff: Nous recueillerons des informations vous concernant en lisant
+ votre pièce d’identité délivrée par un État.
+ hybrid_handoff_ipp_html: 'Vous n’avez pas de téléphone
+ portable? Vous pouvez confirmer votre identité dans un bureau
+ de poste américain participant.'
image_loaded: Image chargée
- image_loading: Chargement de l’image
+ image_loading: Image en cours de chargement
image_updated: Image mise à jour
interstitial_eta: Cette opération peut prendre jusqu’à une minute. Nous
chargerons automatiquement l’étape suivante lorsqu’elle sera terminée.
- interstitial_thanks: Merci de votre patience!
+ interstitial_thanks: Merci de votre patience !
keep_window_open: Ne fermez pas cette fenêtre.
learn_more: En savoir plus sur la façon dont nous protégeons vos informations
confidentielles
- lets_go: La vérification de l’identité se fait en deux temps
+ lets_go: 'La vérification de l’identité se fait en deux temps :'
link_sent: Veuillez vérifier votre téléphone et suivre les instructions pour
- prendre une photo de votre identité émise par l’État.
- link_sent_complete_no_polling: Quand vous aurez fini, cliquez sur « Continuer »
- ici pour terminer la vérification de votre identité.
- link_sent_complete_polling: L’étape suivante se chargera automatiquement une
- fois que vous aurez confirmé votre identifiant à l’aide de votre
- téléphone.
+ prendre une photo de votre pièce d’identité délivrée par l’État.
+ link_sent_complete_no_polling: Quand vous aurez fini, cliquez sur « Suite » ici
+ pour terminer la vérification de votre identité.
+ link_sent_complete_polling: L’étape suivante se chargera automatiquement.
no_ssn: Vous devez avoir un numéro de sécurité sociale pour terminer la
vérification de votre identité.
- review_examples_of_photos: Examinez des exemples de photos claires de votre pièce d’identité.
+ review_examples_of_photos: Voir des exemples qui montrent comment prendre des
+ photos nettes de votre pièce d’identité.
secure_account: Nous chiffrerons votre compte lorsque vous saisirez à nouveau
votre mot de passe. Le chiffrage signifie que vos données sont protégées
et que vous êtes le/la seul(e) à pouvoir accéder à vos informations ou
@@ -262,23 +262,23 @@ fr:
face_not_found: Visage non trouvé
face_too_small: Visage trop petit
too_many_faces: Trop de visages
- ssn: Nous avons besoin de votre numéro de sécurité sociale pour vérifier votre
+ ssn: Nous avons besoin de votre numéro de sécurité sociale pour confirmer vos
nom, date de naissance et adresse.
stepping_up_html: Vérifiez à nouveau votre identité pour accéder à ce service.
Pour plus d’informations sur la vérification de votre identité
%{link_html}
tag: Recommandation
upload_from_computer: Vous n’avez pas de téléphone ? Téléchargez les photos de
- votre carte d’identité depuis cet ordinateur.
+ votre pièce d’identité depuis cet ordinateur.
upload_from_phone: Vous n’aurez pas à vous reconnecter. Vous reviendrez sur cet
ordinateur après avoir pris des photos. Votre téléphone portable doit
être équipé d’un appareil photo et d’un navigateur web.
verify_at_post_office_description: Cette option est préférable si vous n’avez
pas de téléphone pour prendre des photos de votre pièce d’identité.
- verify_at_post_office_instruction: Vous saisissez vos données d’identification
- en ligne et confirmez votre identité en personne dans un bureau de poste
+ verify_at_post_office_instruction: Vous saisirez vos données d’identification en
+ ligne et confirmerez votre identité en personne dans un bureau de poste
participant.
- verify_at_post_office_link_text: En savoir plus sur la confirmation en personne
+ verify_at_post_office_link_text: En savoir plus sur la vérification en personne
verify_identity: Nous vous demanderons votre pièce d’identité, numéro de
téléphone et d’autres renseignements personnels afin de confirmer votre
identité par rapport aux registres publics.
@@ -286,24 +286,24 @@ fr:
téléphone pour prendre des photos de votre pièce d’identité.
verify_online_instruction: Vous prendrez des photos de votre pièce d’identité
pour confirmer votre identité entièrement en ligne. La plupart des
- utilisateurs terminent ce processus en une seule fois.
- verify_online_link_text: En savoir plus sur la confirmation en ligne
- you_entered: 'Tu as soumis:'
+ utilisateurs effectuent l’ensemble du processus en une seule fois.
+ verify_online_link_text: En savoir plus sur la vérification en ligne
+ you_entered: 'Vous avez saisi :'
instructions:
bullet1: Présenter votre permis de conduire ou votre carte d’identité d’un État
bullet2: Saisir votre numéro de sécurité sociale
bullet3: Vérifier la correspondance avec votre numéro de téléphone
bullet4: Saisir à nouveau votre mot de passe %{app_name}
consent: En cochant cette case, vous autorisez %{app_name} à demander, utiliser,
- conserver et partager vos renseignements personnels. Nous les utilisons
- pour vérifier votre identité.
+ conserver et partager vos renseignements personnels. Nous les
+ utiliserons pour confirmer votre identité.
getting_started: 'Vous devrez :'
learn_more: En savoir plus sur nos mesures de confidentialité et de sécurité
- switch_back: Retournez sur votre ordinateur pour continuer à vérifier votre identité.
+ switch_back: Revenir à votre ordinateur pour continuer à confirmer votre identité.
switch_back_image: Flèche pointant du téléphone vers l’ordinateur
- test_ssn: Dans l’environnement de test seuls les SSN commençant par “900-” ou
- “900-” sont considérés comme valides. N’entrez pas de vrais PII dans ce
- champ.
+ test_ssn: Dans l’environnement de test, seuls les numéros de sécurité sociale
+ commençant par “900-” ou “666-” sont considérés comme valides. Ne
+ saisissez pas de vraies IPI dans ce champ.
text1: Les autres pièces d’identité ne sont pas acceptées. Nous vérifierons que
vous êtes la personne figurant sur la pièce d’identité.
text2: Vous n’aurez pas besoin de votre carte de sécurité sociale papier.
@@ -311,7 +311,7 @@ fr:
et vous envoyons un code à usage unique sur votre téléphone.
text4: Votre mot de passe s’enregistre et chiffre vos informations personnelles.
tips:
- document_capture_hint: Doit être un JPG ou PNG
+ document_capture_hint: Doit être au format JPG ou PNG
document_capture_id_text1: Placez votre pièce d’identité sur une surface plane et sombre.
document_capture_id_text2: Prenez votre photo dans un endroit bien éclairé.
document_capture_id_text3: Évitez les reflets et les ombres sur votre pièce d’identité.
@@ -325,9 +325,8 @@ fr:
document_capture_selfie_text3: Gardez une expression neutre.
document_capture_selfie_text4: Assurez-vous que l’ensemble de votre visage soit
visible à l’intérieur du cercle vert.
- review_issues_id_header_text: 'Examinez les images de votre carte d’identité délivrée par l’État:'
- review_issues_id_text1: Avez-vous utilisé un fond sombre?
- review_issues_id_text2: Avez-vous pris la photo sur une surface plane?
- review_issues_id_text3: Le flash de votre caméra est-il éteint?
- review_issues_id_text4: Tous les détails sont-ils nets et clairement visibles?
- couvert par un chapeau ou des lunettes?
+ review_issues_id_header_text: 'Examinez les images de votre carte d’identité délivrée par l’État :'
+ review_issues_id_text1: Avez-vous utilisé un arrière-plan de couleur sombre ?
+ review_issues_id_text2: Avez-vous pris la photo sur une surface plane ?
+ review_issues_id_text3: Le flash de votre appareil photo est-il éteint ?
+ review_issues_id_text4: Tous les détails sont-ils nets et clairement visibles ?
diff --git a/config/locales/email_addresses/es.yml b/config/locales/email_addresses/es.yml
index 3806509ea8c..380a381aed5 100644
--- a/config/locales/email_addresses/es.yml
+++ b/config/locales/email_addresses/es.yml
@@ -3,15 +3,15 @@ es:
email_addresses:
add:
duplicate: Esta dirección de correo electrónico ya está registrada en su cuenta.
- limit: Has agregado la cantidad máxima de direcciones de correo electrónico.
+ limit: Agregó el número máximo de direcciones de correo electrónico.
delete:
- bullet1: No podrá iniciar sesión en %{app_name} (ni en ninguna de las
- aplicaciones gubernamentales vinculadas a su cuenta) utilizando esta
- dirección de correo electrónico
- bullet2: No recibirás notificaciones de la cuenta en esta dirección de correo
- electrónico
- confirm: '¿Estas seguro que quieres borrarlo %{email}?'
+ bullet1: Si usa esta dirección de correo electrónico, no podrá iniciar sesión en
+ %{app_name} (ni en ninguna de las aplicaciones gubernamentales
+ vinculadas a su cuenta).
+ bullet2: No recibirá notificaciones de la cuenta en esta dirección de correo
+ electrónico.
+ confirm: '¿Está seguro de que desea eliminar %{email}?'
failure: No se puede eliminar esta dirección de correo electrónico.
- success: La dirección de correo electrónico ha sido eliminada.
- warning: Si borras tu dirección de correo electrónico
- unconfirmed: '(inconfirmado)'
+ success: Se eliminó la dirección de correo electrónico.
+ warning: Si elimina su dirección de correo electrónico
+ unconfirmed: '(sin confirmar)'
diff --git a/config/locales/email_addresses/fr.yml b/config/locales/email_addresses/fr.yml
index e8a355e6df3..bdca142ea5f 100644
--- a/config/locales/email_addresses/fr.yml
+++ b/config/locales/email_addresses/fr.yml
@@ -3,14 +3,15 @@ fr:
email_addresses:
add:
duplicate: Cette adresse e-mail est déjà enregistrée sur votre compte.
- limit: Vous avez ajouté le nombre maximum d’adresses électroniques.
+ limit: Vous avez ajouté le nombre maximum d’adresses e-mail.
delete:
bullet1: Vous ne pourrez pas vous connecter à %{app_name} (ni à aucune des
- applications gouvernementales associées à votre compte) en utilisant
- cette adresse électronique
- bullet2: Vous ne recevrez pas de notifications de compte à cette adresse email
- confirm: Etes-vous sûr que vous voulez supprimer %{email}?
- failure: Impossible de supprimer cette adresse email.
- success: L’adresse email a été supprimée.
+ applications de l’administration associées à votre compte) à l’aide de
+ cette adresse e-mail
+ bullet2: Vous ne recevrez pas de notifications concernant votre compte à cette
+ adresse e-mail
+ confirm: Êtes-vous sûr de vouloir supprimer %{email} ?
+ failure: Nous n’avons pas pu supprimer cette adresse e-mail.
+ success: L’adresse e-mail a été supprimée.
warning: Si vous supprimez votre adresse e-mail
unconfirmed: '(non confirmé)'
diff --git a/config/locales/errors/es.yml b/config/locales/errors/es.yml
index 64f053a1fa6..091a11b17fd 100644
--- a/config/locales/errors/es.yml
+++ b/config/locales/errors/es.yml
@@ -2,22 +2,22 @@
es:
errors:
account_reset:
- cancel_token_invalid: el token de cancelación no es válido
- cancel_token_missing: falta el token de cancelación
- granted_token_expired: El enlace para eliminar su cuenta de %{app_name} ha
- caducado. Crea otra solicitud para eliminar tu cuenta.
- granted_token_invalid: El enlace para eliminar tu cuenta de %{app_name} no es
- válido. Haz clic de nuevo en el enlace en tu correo electrónico.
- granted_token_missing: El enlace para eliminar tu cuenta de %{app_name} no es
- válido. Haz clic de nuevo en el enlace en tu correo electrónico.
+ cancel_token_invalid: El token de cancelación no es válido
+ cancel_token_missing: Falta el token de cancelación
+ granted_token_expired: El vínculo para eliminar su cuenta de %{app_name} ya
+ venció. Cree otra solicitud para eliminar su cuenta.
+ granted_token_invalid: El vínculo para eliminar su cuenta de %{app_name} no es
+ válido. Haga clic de nuevo en el vínculo de su correo electrónico.
+ granted_token_missing: El vínculo para eliminar su cuenta de %{app_name} no es
+ válido. Haga clic de nuevo en el vínculo de su correo electrónico.
attributes:
password:
avoid_using_phrases_that_are_easily_guessed: Evite usar frases que puedan ser
- adivinadas fácilmente, tales como fragmentos de su correo electrónico
- o fechas personales.
+ adivinadas fácilmente, como partes de su correo electrónico o fechas
+ personales.
too_short:
- one: La contraseña debe tener al menos un carácter
- other: La contraseña debe tener al menos %{count} caracteres de longitud.
+ one: La contraseña debe tener al menos un carácter.
+ other: La contraseña debe tener al menos %{count} caracteres.
capture_doc:
invalid_link: Este enlace ha caducado o no es válido. Solicite otro enlace para
verificar su identidad en un teléfono móvil.
@@ -25,129 +25,123 @@ es:
doc_auth:
consent_form: Antes de continuar, debe darnos permiso. Marque la casilla a
continuación y luego haga clic en continuar.
- doc_type_not_supported_heading: Solo aceptamos una licencia de conducir o un
- documento de identidad estatal
+ doc_type_not_supported_heading: Solo aceptamos una licencia de conducir o una identificación estatal.
document_capture_canceled: Ha cancelado la carga de fotos de su identificación en este teléfono.
how_to_verify_form: Seleccione una forma de verificar su identidad.
phone_step_incomplete: Debe ir a su teléfono y cargar fotos de su identificación
- antes de continuar. Te enviamos un enlace con instrucciones.
- rate_limited_heading: No pudimos verificar la identificación
- rate_limited_subheading: Intente tomar nuevas fotografías.
- rate_limited_text_html: 'Por su seguridad, limitamos el número de veces que
- puede intentar verificar un documento en línea. Inténtelo de
- nuevo en %{timeout}.'
+ antes de continuar. Le enviamos un vínculo con instrucciones.
+ rate_limited_heading: No pudimos verificar su identificación
+ rate_limited_subheading: Intente tomar nuevas fotos
+ rate_limited_text_html: Por su seguridad, limitamos el número de veces que puede
+ intentar verificar un documento en línea. Vuelva a intentarlo en
+ %{timeout}.
selfie_fail_heading: No hemos podido cotejar su foto con su identificación.
selfie_not_live_or_poor_quality_heading: No pudimos verificar su foto
- send_link_limited: Ha intentado demasiadas veces, por favor, inténtelo de nuevo
- en %{timeout}. También puede retroceder y elegir utilizar su computadora
- como alternativa.
+ send_link_limited: Lo intentó demasiadas veces; vuelva a intentarlo en
+ %{timeout}. También puede volver atrás y elegir utilizar su computadora.
enter_code:
rate_limited_html: Ingresó un código de verificación incorrecto demasiadas
- veces. Inténtelo de nuevo en %{timeout}.
- general: '¡Oops! Algo salió mal. Inténtelo de nuevo.'
- invalid_totp: El código es inválido. Vuelva a intentarlo.
+ veces. Vuelva a intentarlo en %{timeout}.
+ general: Algo salió mal. Vuelva a intentarlo.
+ invalid_totp: El código no es válido. Vuelva a intentarlo.
manage_authenticator:
- internal_error: Se produjo un error interno al procesar tu solicitud. Por favor,
- inténtalo de nuevo.
+ internal_error: Hubo un error interno al procesar su solicitud. Vuelva a intentarlo.
remove_only_method_error: No puede eliminar su único método de autenticación.
- unique_name_error: Nombre ya en uso. Utilice un nombre diferente.
- max_password_attempts_reached: Ha ingresado demasiadas contraseñas incorrectas.
- Puede restablecer su contraseña usando el enlace “¿Olvidó su contraseña?”.
+ unique_name_error: Ese nombre ya está en uso. Use un nombre diferente.
+ max_password_attempts_reached: Ingresó demasiadas contraseñas incorrectas. Puede
+ restablecer su contraseña usando el vínculo “¿Olvidó su contraseña?”.
messages:
- already_confirmed: ya estaba confirmado, por favor intente iniciar una sesión
- blank: Por favor, rellenar este campo.
+ already_confirmed: ya estaba confirmado, intente iniciar una sesión
+ blank: Llene este campo.
blank_cert_element_req: No podemos detectar un certificado en su solicitud.
confirmation_code_incorrect: Código de verificación incorrecto
- confirmation_invalid_token: El enlace de confirmación no es válido. El enlace
- expiró o usted ya ha confirmado su cuenta.
- confirmation_period_expired: El enlace de confirmación expiró. Puede hacer clic
- en “Reenviar instrucciones de confirmación” para obtener otro.
- expired: ha caducado, por favor solicite uno nuevo
- format_mismatch: Por favor, use el formato solicitado.
- gpo_otp_expired: Tu código de verificación ha caducado. Vuelve a solicitar otra
- carta para recibir un nuevo código.
+ confirmation_invalid_token: El vínculo de confirmación no es válido. El vínculo
+ venció o usted ya confirmó su cuenta.
+ confirmation_period_expired: El vínculo de confirmación venció. Puede hacer clic
+ en “Volver a enviar instrucciones de confirmación” para obtener otro.
+ expired: venció; solicite uno nuevo
+ format_mismatch: Use el formato solicitado.
+ gpo_otp_expired: Su código de verificación ya venció. Solicite otra carta para
+ recibir un nuevo código.
gpo_otp_expired_and_cannot_request_another: Tu código de verificación ha caducado.
- improbable_phone: Número de teléfono no válido. Asegúrate de introducir un
+ improbable_phone: Número de teléfono no válido. Asegúrese de introducir un
número de teléfono válido.
- inclusion: No se incluye en la lista.
- invalid_calling_area: No se admiten llamadas a ese número de teléfono. Intenta
- enviar un SMS si tienes un teléfono que permita enviar SMS.
+ inclusion: no figura en la lista
+ invalid_calling_area: No se admiten llamadas a ese número de teléfono. Intente
+ enviar un SMS si tiene un teléfono compatible con SMS.
invalid_phone_number:
international: Ingrese un número de teléfono con el número correcto de dígitos.
- us: Ingrese un número de teléfono de 10 dígitos.
+ us: Ingrese un número de teléfono de 10 dígitos.
invalid_recaptcha_token: Lo sentimos, pero es posible que tu computadora o red
te estén enviando consultas automáticas. Para proteger a nuestros
usuarios, no podemos procesar tu solicitud en este momento.
invalid_sms_number: El número de teléfono ingresado no admite mensajes de texto.
- Pruebe la opción de llamada telefónica.
- invalid_voice_number: Numero de telefono invalido. Verifique que haya ingresado
- el código de país o de área correcto.
- missing_field: Por favor, rellene este campo.
- no_pending_profile: Ningún perfil está esperando verificación
+ Intente la opción de llamada telefónica.
+ invalid_voice_number: Número de teléfono no válido. Verifique haber ingresado el
+ código de país o de área correcto.
+ missing_field: Llene este campo.
+ no_pending_profile: No hay ningún perfil en espera de verificación
not_a_number: no es un número
- otp_format: Ingrese su código único por completo sin espacios ni caracteres
- especiales
- password_incorrect: La contraseña es incorrecta
+ otp_format: Ingrese su código de un solo uso completo, sin espacios ni
+ caracteres especiales.
+ password_incorrect: Contraseña incorrecta
password_mismatch: Sus contraseñas no coinciden
- personal_key_incorrect: La clave personal es incorrecta
- phone_carrier: Lo sentimos, no podemos admitir ese operador telefónico en este
- momento. Por favor, seleccione un número diferente e inténtelo de nuevo.
- phone_confirmation_limited: Lo intentaste muchas veces, vuelve a intentarlo en %{timeout}.
- phone_duplicate: Esta cuenta ya está utilizando el número de teléfono que
- ingresó como autenticador. Por favor, use un número de teléfono
- diferente.
- phone_required: Número de teléfono requerido
- phone_unsupported: Lo sentimos, no podemos enviar SMS en este momento. Pruebe la
- opción de llamada telefónica a continuación o use su clave personal.
+ personal_key_incorrect: Clave personal incorrecta
+ phone_carrier: Lo sentimos, no podemos admitir ese proveedor telefónico por
+ ahora. Seleccione un número diferente e inténtelo de nuevo.
+ phone_confirmation_limited: Lo intentó demasiadas veces; vuelva a intentarlo en %{timeout}.
+ phone_duplicate: Esta cuenta ya usa el número de teléfono que ingresó como
+ autenticador. Use un número de teléfono diferente.
+ phone_required: Se requiere un número de teléfono.
+ phone_unsupported: Lo sentimos, no podemos enviar un SMS en este momento.
+ Intente la opción de llamada telefónica siguiente, o use su clave
+ personal.
premium_rate_phone: Parece que se trata de un número de teléfono de tarifa
- premium. Por favor, seleccione otro número e inténtelo de nuevo.
- pwned_password: La contraseña que ingresaste no es segura. Está en una lista de
- contraseñas conocidas expuestas en violaciones de datos.
+ especial. Seleccione un número diferente e inténtelo de nuevo.
+ pwned_password: La contraseña que ingresó no es segura. Está en una lista de
+ contraseñas conocidas expuestas a filtraciones de datos.
stronger_password: Introduzca una contraseña más segura
too_long:
- one: es demasiado largo (el máximo es 1 carácter)
- other: es demasiado largo (el máximo es %{count} caracteres)
+ one: es demasiado larga (el máximo es 1 carácter)
+ other: es demasiado larga (el máximo es %{count} caracteres)
too_short:
- one: es demasiado corto (el mínimo es 1 carácter)
- other: es demasiado corto (el mínimo es %{count} caracteres)
- try_again: Por favor, inténtelo de nuevo.
+ one: es demasiado corta (el mínimo es 1 carácter)
+ other: es demasiado corta (el mínimo es %{count} caracteres)
+ try_again: Vuelva a intentarlo.
unauthorized_authn_context: Contexto de autenticación no autorizado
- unauthorized_nameid_format: Formato de ID de nombre no autorizado
+ unauthorized_nameid_format: Formato de identificación de nombre no autorizado
unauthorized_service_provider: Proveedor de servicio no autorizado
- voip_check_error: Se ha producido un error al comprobar su teléfono, por favor,
- inténtelo de nuevo
+ voip_check_error: Hubo un error al comprobar su teléfono; inténtelo de nuevo
voip_phone: Este número corresponde a un servicio de telefonía basado en la web
- (VoIP). Por favor, seleccione un número diferente e inténtelo de nuevo.
+ (VoIP). Seleccione un número diferente e inténtelo de nuevo.
weak_password: Su contraseña no es suficientemente segura. %{feedback}
wrong_length:
- one: es la longitud incorrecta (debería ser de 1 carácter)
- other: es la longitud incorrecta (debería ser de %{count} caracteres)
+ one: tiene la longitud incorrecta (debe ser de 1 carácter)
+ other: tiene la longitud incorrecta (debe ser de %{count} caracteres)
piv_cac_setup:
- unique_name: El nombre ya fue escogido. Por favor, elija un nombre diferente.
+ unique_name: Ese nombre ya fue seleccionado. Elija un nombre diferente.
registration:
terms: Antes de continuar, debe darnos permiso. Marque la casilla a continuación
y luego haga clic en continuar.
sign_in:
- bad_password_limit: Has superado el número máximo de intentos de inicio de sesión.
+ bad_password_limit: Superó el número máximo de intentos de inicio de sesión.
two_factor_auth_setup:
must_select_additional_option: Seleccione un método de autenticación adicional.
must_select_option: Seleccione un método de autenticación.
verify_personal_key:
- rate_limited: Lo intentaste muchas veces, vuelve a intentarlo en %{timeout}.
+ rate_limited: Lo intentó demasiadas veces; vuelva a intentarlo en %{timeout}.
webauthn_platform_setup:
- account_setup_error: No pudimos agregar el desbloqueo con la cara o con la
- huella digital. Inténtelo de nuevo o %{link}.
- already_registered: Ya está registrado el desbloqueo con la cara o con la huella
- digital en este dispositivo. Trate de agregar otro método de
- autenticación.
+ account_setup_error: No pudimos agregar el desbloqueo facial o táctil. Inténtelo
+ de nuevo o %{link}.
+ already_registered: El desbloqueo facial o táctil ya está registrado en este
+ dispositivo. Trate de agregar otro método de autenticación.
choose_another_method: elija otro método de autenticación
- general_error: No pudimos agregar el desbloqueo con la cara o con la huella
- digital. Inténtelo de nuevo o elija otro método de autenticación.
- not_supported: Su navegador no permite el desbloqueo facial o con la huella
- digital. Use la última versión de Google Chrome, Microsoft Edge o Safari
- para usar el desbloqueo facial o con la huella digital.
- unique_name: Ese nombre de dispositivo ha sido utilizado. Por favor, seleccione
- un nombre de dispositivo diferente.
+ general_error: No pudimos agregar el desbloqueo facial o táctil. Inténtelo de
+ nuevo o elija otro método.
+ not_supported: Su navegador no admite el desbloqueo facial o táctil. Use la
+ última versión de Google Chrome, Microsoft Edge o Safari para utilizar
+ el desbloqueo facial o táctil.
+ unique_name: Ese nombre ya fue seleccionado. Elija un nombre diferente.
webauthn_setup:
additional_methods_link: elija otro método de autenticación
already_registered: Ya vinculó esta clave de seguridad a su cuenta. Pruebe con
diff --git a/config/locales/errors/fr.yml b/config/locales/errors/fr.yml
index aa6f5507321..95873e7a211 100644
--- a/config/locales/errors/fr.yml
+++ b/config/locales/errors/fr.yml
@@ -16,7 +16,7 @@ fr:
password:
avoid_using_phrases_that_are_easily_guessed: Évitez d’utiliser des suites de
caractères faciles à deviner, telles que des parties de votre adresse
- électronique ou des dates personnelles.
+ e-mail ou des dates personnelles.
too_short:
one: Le mot de passe doit comporter au moins un caractère
other: Le mot de passe doit comporter au moins %{count} caractères
@@ -26,20 +26,20 @@ fr:
confirm_password_incorrect: Mot de passe incorrect.
doc_auth:
consent_form: Avant de pouvoir continuer, vous devez nous donner la permission.
- Veuillez cocher la case ci-dessous puis cliquez sur continuer.
+ Veuillez cocher la case ci-dessous, puis cliquez sur Suite.
doc_type_not_supported_heading: Nous n’acceptons que les permis de conduire ou
- les cartes d’identité délivrées par l’État
+ les cartes d’identité délivrées par un État
document_capture_canceled: Vous avez annulé le téléchargement de vos photos
d’identité sur votre téléphone.
how_to_verify_form: Sélectionnez un moyen de vérifier votre identité.
phone_step_incomplete: Vous devez aller sur votre téléphone et télécharger des
- photos de votre identifiant avant de continuer. Nous vous avons envoyé
- un lien avec des instructions.
- rate_limited_heading: Nous n’avons pas pu vérifier votre identité
+ photos de votre pièce d’identité avant de continuer. Nous vous avons
+ envoyé un lien avec des instructions.
+ rate_limited_heading: Nous n’avons pas pu vérifier votre pièce d’identité.
rate_limited_subheading: Essayez de prendre de nouvelles photos.
- rate_limited_text_html: 'Pour votre sécurité, nous limitons le nombre de fois où
- vous pouvez tenter de vérifier un document en ligne. Veuillez
- réessayer dans %{timeout}.'
+ rate_limited_text_html: Pour votre sécurité, nous limitons le nombre de fois où
+ vous pouvez tenter de vérifier un document en ligne. Réessayez
+ dans %{timeout}.
selfie_fail_heading: Nous n’avons pas pu faire correspondre votre photo à celle
figurant sur votre pièce d’identité.
selfie_not_live_or_poor_quality_heading: Nous n’avons pas pu vérifier votre photo
@@ -49,16 +49,16 @@ fr:
enter_code:
rate_limited_html: Vous avez saisi un code de vérification inexact à trop de
reprises. Réessayez dans %{timeout}.
- general: Oups, une erreur s’est produite. Veuillez essayer de nouveau.
- invalid_totp: Code non valide. Veuillez essayer de nouveau.
+ general: Oups, une erreur s’est produite. Veuillez réessayer.
+ invalid_totp: Code non valide. Veuillez réessayer.
manage_authenticator:
internal_error: Une erreur interne s’est produite lors du traitement de votre
demande. Veuillez réessayer.
remove_only_method_error: Vous ne pouvez pas supprimer votre seule méthode d’authentification.
- unique_name_error: Ce nom est déjà utilisé. Veuillez utiliser un nom différent.
- max_password_attempts_reached: Vous avez inscrit des mots de passe incorrects un
- trop grand nombre de fois. Vous pouvez réinitialiser votre mot de passe en
- utilisant le lien « Vous avez oublié votre mot de passe? ».
+ unique_name_error: Ce nom est déjà pris. Veuillez utiliser un nom différent.
+ max_password_attempts_reached: Vous avez saisi des mots de passe inexacts à trop
+ de reprises. Vous pouvez réinitialiser votre mot de passe en utilisant le
+ lien « Mot de passe oublié ? »
messages:
already_confirmed: a déjà été confirmé, veuillez essayer de vous connecter
blank: Veuillez remplir ce champ.
@@ -67,102 +67,99 @@ fr:
confirmation_invalid_token: Lien de confirmation non valide. Le lien est expiré
ou vous avez déjà confirmé votre compte.
confirmation_period_expired: Lien de confirmation expiré. Vous pouvez cliquer
- sur « Envoyer les instructions de confirmation de nouveau » pour en
- obtenir un autre.
- expired: est expiré, veuillez en demander un nouveau
+ sur « Renvoyer les instructions de confirmation » pour en obtenir un
+ autre.
+ expired: a expiré, veuillez en demander un nouveau
format_mismatch: Veuillez vous assurer de respecter le format requis.
- gpo_otp_expired: Votre code de vérification a expiré. Veuillez solliciter une
+ gpo_otp_expired: Votre code de vérification a expiré. Veuillez demander une
autre lettre afin d’obtenir un nouveau code.
gpo_otp_expired_and_cannot_request_another: Votre code de vérification a expiré.
improbable_phone: Numéro de téléphone non valide. Veillez à saisir un numéro de
téléphone valide.
- inclusion: N’est pas inclus dans la liste
+ inclusion: n’est pas inclus dans la liste
invalid_calling_area: Les appels vers ce numéro de téléphone ne sont pas pris en
charge. Veuillez essayer par SMS si vous possédez un téléphone disposant
de cette fonction.
invalid_phone_number:
international: Saisissez un numéro de téléphone avec le nombre correct de chiffres.
- us: Entrez un numéro de téléphone à 10 chiffres.
+ us: Saisissez un numéro de téléphone à 10 chiffres.
invalid_recaptcha_token: Désolé, il est possible que votre ordinateur ou votre
réseau envoie des requêtes automatiques. Pour protéger nos utilisateurs,
nous ne pouvons pas traiter votre demande pour le moment.
invalid_sms_number: Le numéro de téléphone saisi ne prend pas en charge les
- messages textuels. Veuillez essayer l’option d’appel téléphonique.
- invalid_voice_number: Numéro de téléphone invalide. Vérifiez que vous avez entré
- le bon indicatif international ou régional.
+ messages texte. Veuillez essayer l’option d’appel téléphonique.
+ invalid_voice_number: Numéro de téléphone non valide. Vérifiez que vous avez
+ entré le bon indicatif international ou régional.
missing_field: Veuillez remplir ce champ.
no_pending_profile: Aucun profil en attente de vérification
- not_a_number: N’est pas un nombre
+ not_a_number: n’est pas un chiffre
otp_format: Saisissez l’intégralité de votre code à usage unique sans espaces ni
caractères spéciaux
password_incorrect: Mot de passe incorrect
password_mismatch: Vos mots de passe ne correspondent pas
personal_key_incorrect: Clé personnelle incorrecte
- phone_carrier: Nous nous excusons, car nous ne pouvons pas prendre en charge cet
+ phone_carrier: Désolé, nous ne ne sommes pas en mesure de prendre en charge cet
opérateur téléphonique pour le moment. Veuillez sélectionner un autre
- numéro puis réessayer.
- phone_confirmation_limited: Vous avez essayé plusieurs fois, essayez à nouveau dans %{timeout}.
+ numéro et réessayer.
+ phone_confirmation_limited: Vous avez essayé trop de fois, veuillez réessayer dans %{timeout}.
phone_duplicate: Ce compte utilise déjà le numéro de téléphone que vous avez
- entré en tant qu’authentificateur. Veuillez utiliser un numéro de
- téléphone différent.
+ saisi en tant qu’authentifiant. Veuillez utiliser un numéro de téléphone
+ différent.
phone_required: Le numéro de téléphone est obligatoire
phone_unsupported: Désolé, nous ne sommes pas en mesure d’envoyer des SMS pour
- le moment. S’il vous plaît essayez l’option d’appel téléphonique
- ci-dessous, ou utilisez votre clé personnelle.
+ le moment. Veuillez essayez l’option d’appel téléphonique ci-dessous ou
+ utilisez votre clé personnelle.
premium_rate_phone: Il semble s’agir d’un numéro de téléphone surtaxé. Veuillez
sélectionner un autre numéro et réessayer.
- pwned_password: Le mot de passe que vous avez entré n’est pas sécurisé. C’est
- dans une liste de mots de passe connus exposés dans les violations de
- données.
- stronger_password: Entrez un mot de passe plus fort
+ pwned_password: Le mot de passe que vous avez saisi n’est pas sécurisé. Il
+ figure sur une liste de mots de passe connus exposés au cours de
+ violations de données.
+ stronger_password: Saisissez un mot de passe plus fort
too_long:
- one: Est trop long (maximum de 1 caractère)
- other: est trop long (le maximum est de %{count} caractères)
+ one: est trop long (1 caractère maximum)
+ other: est trop long (%{count} caractères maximum)
too_short:
one: est trop court (1 caractère minimum)
- other: est trop court (le minimum est de %{count} caractères)
+ other: est trop court (%{count} caractères minimum)
try_again: Veuillez réessayer.
unauthorized_authn_context: Contexte d’authentification non autorisé
- unauthorized_nameid_format: Format non autorisé du nom d’identification
+ unauthorized_nameid_format: Format de nom d’identification non autorisé
unauthorized_service_provider: Fournisseur de service non autorisé
- voip_check_error: Il y a eu une erreur lors de la vérification de votre
+ voip_check_error: Une erreur s’est produite lors de la vérification de votre
téléphone, veuillez réessayer
- voip_phone: Ce numéro est un service téléphonique basé sur le Web (Voix sur IP).
- Veuillez sélectionner un autre numéro et réessayer
+ voip_phone: Ce numéro est un service téléphonique Web (Voix sur IP). Veuillez
+ sélectionner un autre numéro et réessayer
weak_password: Votre mot de passe n’est pas assez fort. %{feedback}
wrong_length:
one: n’est pas de la bonne longueur (devrait être de 1 caractère)
- other: n’est pas de la bonne longueur (devrait être %{count} caractères)
+ other: n’est pas de la bonne longueur (devrait être de %{count} caractères)
piv_cac_setup:
unique_name: Ce nom est déjà pris. Veuillez choisir un autre nom.
registration:
terms: Avant de pouvoir continuer, vous devez nous donner la permission.
- Veuillez cocher la case ci-dessous puis cliquez sur continuer.
+ Veuillez cocher la case ci-dessous, puis cliquez sur Suite.
sign_in:
bad_password_limit: Vous avez dépassé le nombre maximal de tentatives de connexion.
two_factor_auth_setup:
must_select_additional_option: Sélectionnez une méthode d’authentification supplémentaire.
must_select_option: Sélectionnez une méthode d’authentification.
verify_personal_key:
- rate_limited: Vous avez essayé plusieurs fois, essayez à nouveau dans %{timeout}.
+ rate_limited: Vous avez essayé trop de fois, veuillez réessayer dans %{timeout}.
webauthn_platform_setup:
- account_setup_error: Nous n’avons pas pu ajouter le déverrouillage facial ni le
- déverrouillage tactile. Veuillez réessayer ou %{link}.
- already_registered: Le déverrouillage facial ou le déverrouillage tactile est
- déjà enregistré sur cet appareil. Veuillez essayer d’ajouter une autre
- méthode d’authentification.
- choose_another_method: choisir une autre méthode d’authentification
- general_error: Nous n’avons pas pu ajouter le déverrouillage facial ni le
- déverrouillage tactile. Veuillez réessayer ou choisir une autre méthode
+ account_setup_error: Nous n’avons pas pu ajouter le déverrouillage facial ou
+ tactile. Veuillez réessayer ou %{link}.
+ already_registered: Le déverrouillage facial ou tactile est déjà enregistré sur
+ cet appareil. Veuillez essayer d’ajouter une autre méthode
d’authentification.
- not_supported: Votre navigateur ne prend pas en charge le déverrouillage par
- reconnaissance faciale ou tactile. Utilisez la dernière version de
- Google Chrome, Microsoft Edge ou Safari pour utiliser le déverrouillage
- par reconnaissance faciale ou tactile.
- unique_name: Ce nom d’appareil a été utilisé. Veuillez sélectionner un autre nom
- d’appareil.
+ choose_another_method: choisir une autre méthode d’authentification
+ general_error: Nous n’avons pas pu ajouter le déverrouillage facial ou tactile.
+ Veuillez réessayer ou choisir une autre méthode.
+ not_supported: Votre navigateur ne prend pas en charge le déverrouillage facial
+ ou tactile. Utilisez la dernière version de Google Chrome, Microsoft
+ Edge ou Safari pour utiliser le déverrouillage facial ou tactile.
+ unique_name: Ce nom est déjà pris. Veuillez choisir un autre nom.
webauthn_setup:
- additional_methods_link: choisissez une autre méthode d’authentification
+ additional_methods_link: choisir une autre méthode d’authentification
already_registered: Vous avez déjà lié cette clé de sécurité à votre compte.
Veuillez essayer une autre clé de sécurité.
general_error_html: Nous n’avons pas pu ajouter la clé de sécurité. Vérifiez que
diff --git a/config/locales/event_disavowals/es.yml b/config/locales/event_disavowals/es.yml
index 708d508944b..34e5730c572 100644
--- a/config/locales/event_disavowals/es.yml
+++ b/config/locales/event_disavowals/es.yml
@@ -2,10 +2,10 @@
es:
event_disavowals:
errors:
- event_already_disavowed: Ya has usado ese enlace para cambiar tu contraseña.
- Inicia sesión para cambiar tu contraseña.
- event_disavowal_expired: El enlace para cambiar tu contraseña ha caducado.
- Inicia sesión para cambiar tu contraseña.
- event_not_found: El enlace para cambiar su contraseña no es válido. Inicia
- sesión para cambiar tu contraseña.
+ event_already_disavowed: Ya usó ese vínculo para cambiar su contraseña. Inicie
+ sesión para cambiar su contraseña.
+ event_disavowal_expired: El vínculo para cambiar su contraseña ya venció. Inicie
+ sesión para cambiar su contraseña.
+ event_not_found: El vínculo para cambiar su contraseña no es válido. Inicie
+ sesión para cambiar su contraseña.
no_account: No hay ninguna cuenta asociada con este evento.
diff --git a/config/locales/event_disavowals/fr.yml b/config/locales/event_disavowals/fr.yml
index 154a421155c..74529d83c1c 100644
--- a/config/locales/event_disavowals/fr.yml
+++ b/config/locales/event_disavowals/fr.yml
@@ -6,6 +6,6 @@ fr:
de passe. Connectez-vous pour changer votre mot de passe.
event_disavowal_expired: Le lien pour changer votre mot de passe a expiré.
Connectez-vous pour changer votre mot de passe.
- event_not_found: Le lien pour changer votre mot de passe est invalide.
+ event_not_found: Le lien pour changer votre mot de passe n’est pas valide.
Connectez-vous pour changer votre mot de passe.
no_account: Aucun compte n’est associé à cet événement.
diff --git a/config/locales/event_types/es.yml b/config/locales/event_types/es.yml
index 4740687c944..dd3f1afe488 100644
--- a/config/locales/event_types/es.yml
+++ b/config/locales/event_types/es.yml
@@ -5,27 +5,27 @@ es:
account_verified: Cuenta verificada
authenticated_at: Sesión iniciada en %{service_provider}
authenticated_at_html: Sesión iniciada en %{service_provider_link_html}
- authenticator_disabled: Aplicación autenticadora eliminada
- authenticator_enabled: Aplicación de autenticador agregada
- backup_codes_added: Códigos de respaldo añadidos
+ authenticator_disabled: Aplicación de autenticación eliminada
+ authenticator_enabled: Aplicación de autenticación agregada
+ backup_codes_added: Códigos de recuperación añadidos
eastern_timestamp: '%{timestamp} (hora del Este)'
- email_changed: Email cambiado
+ email_changed: Dirección de correo electrónico modificada
email_deleted: Dirección de correo electrónico eliminada
gpo_mail_sent: Carta enviada
- new_personal_key: Clave personal cambiado
- password_changed: Contraseña cambiada
- password_invalidated: Restablecimiento de contraseña por %{app_name}
+ new_personal_key: Clave personal modificada
+ password_changed: Contraseña modificada
+ password_invalidated: Contraseña restablecida por %{app_name}
personal_key_used: Clave personal utilizada para iniciar sesión
- phone_added: Teléfono añadido
- phone_changed: Número de teléfono cambiado
+ phone_added: Número de teléfono añadido
+ phone_changed: Número de teléfono modificado
phone_confirmed: Teléfono confirmado
- phone_removed: Teléfono eliminado
- piv_cac_disabled: Tarjeta PIV/CAC no asociada
- piv_cac_enabled: Tarjeta PIV/CAC asociada
- sign_in_after_2fa: Inicia sesión con segundo factor
- sign_in_before_2fa: Inicia sesión con contraseña
+ phone_removed: Número de teléfono eliminado
+ piv_cac_disabled: Tarjeta PIV o CAC no asociada
+ piv_cac_enabled: Tarjeta PIV o CAC asociada
+ sign_in_after_2fa: Inicio de sesión con un segundo factor
+ sign_in_before_2fa: Inicio de sesión con contraseña
sign_in_notification_timeframe_expired: Plazo de notificación expirado para el
inicio de sesión desde un nuevo dispositivo
sign_in_unsuccessful_2fa: Error al autenticar
- webauthn_key_added: Clave de seguridad de hardware añadido
+ webauthn_key_added: Clave de seguridad de hardware añadida
webauthn_key_removed: Clave de seguridad de hardware eliminada
diff --git a/config/locales/event_types/fr.yml b/config/locales/event_types/fr.yml
index 69a697c171f..0fb38680744 100644
--- a/config/locales/event_types/fr.yml
+++ b/config/locales/event_types/fr.yml
@@ -5,27 +5,27 @@ fr:
account_verified: Compte vérifié
authenticated_at: Connecté à %{service_provider}
authenticated_at_html: Connecté à %{service_provider_link_html}
- authenticator_disabled: Application d’authentification supprimée
- authenticator_enabled: Application authenticator ajoutée
+ authenticator_disabled: Appli d’authentification supprimée
+ authenticator_enabled: Appli d’authentification ajoutée
backup_codes_added: Codes de sauvegarde ajoutés
- eastern_timestamp: '%{timestamp} (est)'
- email_changed: Adresse courriel modifiée
+ eastern_timestamp: '%{timestamp} (heure de l’Est)'
+ email_changed: Adresse e-mail modifiée
email_deleted: Adresse e-mail supprimée
gpo_mail_sent: Lettre envoyée
- new_personal_key: Clé personnelle modifié
+ new_personal_key: Clé personnelle modifiée
password_changed: Mot de passe modifié
- password_invalidated: Réinitialisation du mot de passe par %{app_name}
+ password_invalidated: Mot de passe réinitialisé par %{app_name}
personal_key_used: Clé personnelle utilisée pour la connexion
phone_added: Numéro de téléphone ajouté
phone_changed: Numéro de téléphone modifié
phone_confirmed: Numéro de téléphone confirmé
phone_removed: Numéro de téléphone supprimé
- piv_cac_disabled: Carte PIV/CAC non associée
+ piv_cac_disabled: Carte PIV/CAC désassociée
piv_cac_enabled: Carte PIV/CAC associée
- sign_in_after_2fa: Signé avec deuxième facteur
+ sign_in_after_2fa: Connecté avec deuxième facteur
sign_in_before_2fa: Connecté avec mot de passe
sign_in_notification_timeframe_expired: Délai de notification pour la connexion
à partir d’un nouveau dispositif expiré
sign_in_unsuccessful_2fa: Échec de l’authentification
- webauthn_key_added: Clé de sécurité ajoutée
- webauthn_key_removed: Clé de sécurité retirée
+ webauthn_key_added: Clé de sécurité physique ajoutée
+ webauthn_key_removed: Clé de sécurité physique supprimée
diff --git a/config/locales/forms/es.yml b/config/locales/forms/es.yml
index 64fdd91dee8..8c10ca47670 100644
--- a/config/locales/forms/es.yml
+++ b/config/locales/forms/es.yml
@@ -2,33 +2,32 @@
es:
forms:
backup_code:
- caution_codes: Cada código solo puede usarse una vez. Te daremos nuevos códigos
- una vez que hayas usado los diez.
- caution_delete: Si elimina sus códigos de respaldo, ya no podrá usarlos para
+ caution_codes: Cada código solo se puede usar una vez. Cuando haya usado los
+ 10 códigos, le enviaremos códigos nuevos.
+ caution_delete: Si elimina sus códigos de recuperación, ya no podrá usarlos para
iniciar sesión.
- confirm_delete: '¿Estás seguro de que deseas eliminar tus códigos de respaldo?'
+ confirm_delete: '¿Está seguro de que desea eliminar sus códigos de recuperación?'
generate: Obtener códigos
- last_code: Usted utilizó el último código de seguridad. Imprima, copie o
- descargue los códigos que aparecen a continuación. Puede introducir
- estos nuevos códigos la próxima vez que se registre.
+ last_code: Ya usó su último código de recuperación. Imprima, copie o descargue
+ los códigos siguientes. Puede usar estos códigos nuevos la próxima vez
+ que inicie sesión.
regenerate: Obtener nuevos códigos
- saved: He guardado mis códigos de seguridad en un lugar seguro.
- subinfo_html: 'Si pierdes tu dispositivo, necesitarás estos códigos para
- iniciar sesión en %{app_name}. Guárdalos o imprímelos y
- consérvalos en un lugar seguro.'
- title: Guarda estos códigos de seguridad
+ saved: Guardé mis códigos de recuperación en un lugar seguro.
+ subinfo_html: 'Si pierde su dispositivo, necesitará estos códigos para
+ iniciar sesión en %{app_name}. Guárdelos o imprímalos, y
+ consérvelos en un lugar seguro.'
+ title: Guarde estos códigos de recuperación
backup_code_regenerate:
- caution: Si vuelve a generar sus códigos de respaldo, recibirá un nuevo conjunto
- de códigos de respaldo. Sus códigos de copia de seguridad originales ya
- no serán válidos.
- confirm: '¿Está seguro de que desea volver a generar sus códigos de copia de
- seguridad?'
+ caution: Si vuelve a generar sus códigos de recuperación, recibirá un conjunto
+ nuevo de códigos. Sus códigos de recuperación originales ya no serán
+ válidos.
+ confirm: '¿Está seguro de que desea volver a generar sus códigos de recuperación?'
backup_code_reminder:
- body_info: Si por alguna razón no puede acceder a su método de autenticación
- principal, puede usar códigos de recuperación para ingresar a su cuenta.
+ body_info: Si no puede acceder a su método de autenticación principal, puede
+ usar códigos de recuperación para acceder a su cuenta.
have_codes: Tengo mis códigos
heading: '¿Todavía tiene sus códigos de recuperación?'
- need_new_codes: Necesito un nuevo conjunto de códigos de recuperación
+ need_new_codes: Necesito un conjunto nuevo de códigos de recuperación
buttons:
back: Atrás
cancel: Sí, cancelar
@@ -36,22 +35,22 @@ es:
continue: Continuar
continue_ipp: Continúe en persona
continue_remote: Continúe en línea
- delete: Borrar
- disable: Borrar
+ delete: Eliminar
+ disable: Eliminar
edit: Editar
manage: Administrar
- send_link: Enviar enlace
+ send_link: Enviar vínculo
send_one_time_code: Enviar código
submit:
confirm_change: Confirmar cambio
default: Enviar
update: Actualizar
- upload_photos: Subir fotos
+ upload_photos: Cargar fotos
confirmation:
show_hdr: Crear una contraseña segura
email:
buttons:
- delete: Eliminar correo electrónico
+ delete: Eliminar dirección de correo electrónico
example: 'Ejemplo:'
messages:
remember_device: Recuerde este navegador
@@ -59,7 +58,7 @@ es:
passwords:
edit:
buttons:
- submit: Cambiar la contraseña
+ submit: Cambiar contraseña
labels:
password: Nueva contraseña
personal_key:
@@ -68,72 +67,72 @@ es:
download: Descargar (archivo de texto)
instructions: Confirme que tiene una copia de su clave personal ingresándola a
continuación.
- required_checkbox: He guardado mi clave personal en un lugar seguro.
+ required_checkbox: Guardé mi clave personal en un lugar seguro.
title: Ingrese su clave personal
personal_key_partial:
acknowledgement:
- header: Necesitarás tu clave personal si olvidas tu contraseña. Mantenla en un
- lugar seguro y no la compartas con nadie.
- help_link_text: Más información sobre la clave personal
- text: 'Si restableces tu contraseña sin tu clave personal, tendrás que volver a
- verificar tu identidad.'
- header: Guarda tu clave personal
+ header: Necesitará su clave personal si olvida su contraseña. Consérvela en un
+ lugar seguro y no la comparta con nadie.
+ help_link_text: Obtenga más información sobre la clave personal
+ text: Si restablece su contraseña y no tiene su clave personal, tendrá que
+ verificar nuevamente su identidad.
+ header: Guarde su clave personal
phone:
buttons:
- delete: Eliminar el teléfono
+ delete: Eliminar teléfono
piv_cac_login:
- submit: Inserte su PIV/CAC
+ submit: Inserte su tarjeta PIV o CAC
piv_cac_mfa:
- submit: Presentar tarjeta PIV/CAC
+ submit: Presentar la tarjeta PIV o CAC
piv_cac_setup:
- nickname: Apodo PIV/CAC
+ nickname: Alias de la tarjeta PIV o CAC
no_thanks: No, gracias
- piv_cac_intro_html: Le pediremos que presente su tarjeta PIV/CAC cada
+ piv_cac_intro_html: Le pediremos que presente su tarjeta PIV o CAC cada
vez que inicie sesión como parte de la autenticación de dos
- factores.
Después de hacer clic en “Agregar PIV/CAC”, su
- navegador le solicitará su PIN PIV/CAC y le pedirá que seleccione un
- certificado.
- submit: Agregar tarjeta PIV/CAC
+ factores.
Después de hacer clic en “Agregar tarjeta PIV o CAC”,
+ su navegador le pedirá el PIN de su tarjeta PIV o CAC y que seleccione
+ un certificado.
+ submit: Agregar tarjeta PIV o CAC
registration:
labels:
email: Ingrese su dirección de correo electrónico
- email_language: Seleccione su preferencia de idioma de correo electrónico
+ email_language: Seleccione su preferencia de idioma del correo electrónico
ssn:
- show: Mostrar Número de Seguro Social
+ show: Mostrar número de Seguro Social
totp_setup:
totp_intro: Configure una aplicación de autenticación para iniciar sesión con
códigos de seguridad temporales.
- totp_step_1: Darle un apodo
- totp_step_1a: Si agrega más de una aplicación, sabrá cuáles.
- totp_step_2: Abra su app de autenticación.
- totp_step_3: Escanee este código de barras QR con su aplicación
- totp_step_4: Ingrese el código temporal de su aplicación
+ totp_step_1: Asígnele un alias.
+ totp_step_1a: Si agrega más de una aplicación, podrá distinguirlas.
+ totp_step_2: Abra su aplicación de autenticación.
+ totp_step_3: Escanee este código de barras QR con su aplicación.
+ totp_step_4: Ingrese el código temporal de su aplicación.
two_factor:
- backup_code: Código de respaldo
+ backup_code: Código de recuperación
personal_key: Clave personal
- try_again: Use otro número de teléfono.
+ try_again: Use otro número de teléfono
validation:
required_checkbox: Marque esta casilla para continuar
webauthn_platform_setup:
continue: Continuar
info_text: Tendrá que configurar un método de autenticación adicional después de
- establecer el desbloqueo con la cara o con la huella digital.
- intro_html: Autentifíquese de la misma forma que desbloquea su dispositivo,
- ya sea con su cara o huella digital, una contraseña u otro
- método.
Si utiliza un gestor de contraseñas como iCloud Keychain o
- Google Password Manager, es posible que le pida que guarde una llave de
- acceso. Esto le permite autentificar en cualquier dispositivo con ese
- gestor de contraseñas. %{link}
- intro_link_text: Más información sobre el uso de varios dispositivos.
- nickname: Apodo de dispositivo.
- nickname_hint: Si agrega más dispositivos para desbloquear con la cara o con la
- huella digital, podrá distinguirlos.
+ establecer el desbloqueo facial o táctil.
+ intro_html: 'Autentíquese de la misma forma que desbloquea su dispositivo,
+ sea con su rostro o huella dactilar, contraseña u otro método.
Si
+ utiliza un administrador de contraseñas como iCloud Keychain o Google
+ Password Manager, es posible que le pida que guarde una clave de paso.
+ Esto le permite autenticarse en cualquier dispositivo con ese
+ administrador de contraseñas. %{link}
'
+ intro_link_text: Obtenga más información sobre el uso de varios dispositivos.
+ nickname: Alias del dispositivo.
+ nickname_hint: Si agrega más dispositivos para desbloqueo facial o táctil, podrá
+ distinguirlos.
webauthn_setup:
intro: Utilice su clave de seguridad física para añadir un nivel adicional de
protección a su cuenta de %{app_name} y evitar accesos no autorizados.
learn_more: Obtenga información sobre claves de seguridad
- nickname: Apodo clave de seguridad
- saving: Guardando sus credenciales …
+ nickname: Alias de la clave de seguridad
+ saving: Guardando sus credenciales…
set_up: Configure su clave de seguridad
step_1: Darle un apodo
step_1a: Si añade más de una llave de seguridad, sabrá cuál es cuál.
diff --git a/config/locales/forms/fr.yml b/config/locales/forms/fr.yml
index ac4f4b2abbe..8a8cc96ae20 100644
--- a/config/locales/forms/fr.yml
+++ b/config/locales/forms/fr.yml
@@ -22,124 +22,122 @@ fr:
caution: Si vous régénérez vos codes de sauvegarde, vous recevrez un nouvel
ensemble de codes de sauvegarde. Vos codes de sauvegarde d’origine ne
seront plus valides.
- confirm: Êtes-vous sûr de vouloir régénérer vos codes de sauvegarde?
+ confirm: Êtes-vous sûr de vouloir régénérer vos codes de sauvegarde ?
backup_code_reminder:
body_info: Si vous perdez l’accès à votre méthode d’authentification principale,
vous pouvez utiliser des codes de sauvegarde pour accéder à nouveau à
votre compte.
have_codes: J’ai mes codes
- heading: Avez-vous toujours vos codes de sauvegarde?
+ heading: Avez-vous toujours vos codes de sauvegarde ?
need_new_codes: J’ai besoin d’un nouvel ensemble de codes de sauvegarde
buttons:
back: Retour
cancel: Oui, annuler
confirm: Confirmer
- continue: Continuer
+ continue: Suite
continue_ipp: Continuer en personne
continue_remote: Continuer en ligne
- delete: Effacer
- disable: Effacer
+ delete: Supprimer
+ disable: Supprimer
edit: Modifier
- manage: Administrer
+ manage: Gérer
send_link: Envoyer le lien
send_one_time_code: Envoyer le code
submit:
confirm_change: Confirmer le changement
- default: Soumettre
+ default: Valider
update: Mettre à jour
upload_photos: Télécharger des photos
confirmation:
- show_hdr: Créez un mot de passe fort
+ show_hdr: Créer un mot de passe fort
email:
buttons:
- delete: Supprimer l’email
- example: 'Exemple:'
+ delete: Supprimer l’adresse e-mail
+ example: 'Exemple :'
messages:
- remember_device: Enregistrer ce navigateur
+ remember_device: Se souvenir de ce navigateur
password: Mot de passe
passwords:
edit:
buttons:
- submit: Changer le mot de passe
+ submit: Modifier le mot de passe
labels:
password: Nouveau mot de passe
personal_key:
- alternative: Vous n’avez pas votre clé personnelle?
+ alternative: Vous ne disposez pas de votre clé personnelle ?
confirmation_label: Clé personnelle
download: Télécharger (fichier texte)
instructions: Veuillez confirmer que vous avez une copie de votre clé
- personnelle en l’entrant ci-dessous.
+ personnelle en la saisissant ci-dessous.
required_checkbox: J’ai conservé ma clé personnelle en lieu sûr.
- title: Entrez votre clé personnelle
+ title: Saisir votre clé personnelle
personal_key_partial:
acknowledgement:
header: En cas d’oubli de votre mot de passe, vous aurez besoin de votre clé
personnelle. Gardez-la en sécurité et ne la partagez avec personne.
help_link_text: En savoir plus sur la clé personnelle
text: Si vous réinitialisez votre mot de passe sans votre clé personnelle, vous
- devrez à nouveau vérifier votre identité.
- header: Sauvegardez votre clé personnelle
+ devrez à nouveau confirmer votre identité.
+ header: Sauvegarder votre clé personnelle
phone:
buttons:
- delete: Supprimer le numéro de teléfono
+ delete: Supprimer le numéro de téléphone
piv_cac_login:
submit: Insérez votre PIV/CAC
piv_cac_mfa:
- submit: Veuillez présenter une carte PIV/CAC
+ submit: Présentez la carte PIV/CAC
piv_cac_setup:
- nickname: Pseudo PIV/CAC
- no_thanks: Non merci
+ nickname: Surnom de la carte PIV/CAC
+ no_thanks: Non, merci
piv_cac_intro_html: Nous vous demanderons de présenter votre carte PIV/CAC
- chaque fois que vous vous connecterez dans le cadre de
- l’authentification à deux facteurs.
Après avoir cliqué sur
- “Ajouter PIV/CAC”, votre navigateur vous demandera votre code PIN
- PIV/CAC et vous choisirez un certificat.
+ chaque fois que vous vous connecterez sur dans le cadre
+ de l’authentification à deux facteurs.
Après avoir cliqué sur
+ « Ajouter une carte PIV/CAC », votre navigateur vous demandera de saisir
+ le NIP de votre PIV/CAC et de choisir un certificat.
submit: Ajouter une carte PIV/CAC
registration:
labels:
- email: Entrez votre adresse email
- email_language: Sélectionnez votre préférence de langue pour les e-mails
+ email: Saisissez votre adresse e-mail
+ email_language: Sélectionnez votre langue de préférence pour les e-mails
ssn:
show: Afficher le numéro de sécurité sociale
totp_setup:
- totp_intro: Configurez une application d’authentification pour vous connecter à
- l’aide de codes de sécurité temporaires.
+ totp_intro: Configurer une appli d’authentification pour vous connecter à l’aide
+ de codes de sécurité temporaires.
totp_step_1: Donnez-lui un surnom
- totp_step_1a: Si vous ajoutez plusieurs applications, vous saurez lesquelles.
- totp_step_2: Démarrez votre application d’authentification
- totp_step_3: Scannez ce code-barres QR avec votre application
- totp_step_4: Entrez le code temporaire de votre application
+ totp_step_1a: Si vous ajoutez plusieurs applications, vous saurez les différencier.
+ totp_step_2: Démarrez votre appli d’authentification
+ totp_step_3: Scannez ce QR code avec votre appli
+ totp_step_4: Saisissez le code temporaire de votre appli
two_factor:
backup_code: Code de sauvegarde
personal_key: Clé personnelle
- try_again: Utilisez un autre numéro de téléphone
+ try_again: Utiliser un autre numéro de téléphone
validation:
required_checkbox: Veuillez cocher cette case pour continuer
webauthn_platform_setup:
- continue: Continuer
- info_text: Vous aurez besoin de configurer une méthode d’authentification
- supplémentaire après que vous aurez configuré le déverrouillage facial
- ou le déverrouillage tactile.
- intro_html: Authentifiez-vous de la même manière que vous déverrouillez votre
- appareil, que ce soit avec votre visage ou votre empreinte digitale, un
- mot de passe ou une autre méthode.
Si vous utilisez un
- gestionnaire de mots de passe tel que le trousseau iCloud ou le
+ continue: Suite
+ info_text: Vous aurez besoin de configurer une autre méthode d’authentification
+ après la configuration du déverrouillage facial ou tactile.
+ intro_html: '
Authentifiez-vous de la même manière que vous déverrouillez
+ votre appareil, que ce soit avec votre visage ou votre empreinte
+ digitale, un mot de passe ou une autre méthode.
Si vous utilisez
+ un gestionnaire de mots de passe tel que le trousseau iCloud ou le
gestionnaire de mots de passe Google, il peut vous demander
d’enregistrer une clé d’accès. Cela vous permet de vous authentifier sur
n’importe quel appareil à l’aide de ce gestionnaire de mots de passe.
- %{link}
+ %{link}
'
intro_link_text: En savoir plus sur l’utilisation de plusieurs appareils.
- nickname: Pseudo dispositivo
+ nickname: Surnom de l’appareil
nickname_hint: Au cas où vous ajouteriez d’autres appareils pour le
- déverrouillage facial ou pour le déverrouillage tactile, vous saurez les
- reconnaître.
+ déverrouillage facial ou tactile, vous saurez les différencier.
webauthn_setup:
intro: Utilisez votre clé de sécurité physique pour ajouter une couche de
protection supplémentaire à votre compte %{app_name} pour empêcher tout
accès non autorisé.
learn_more: En savoir plus sur les clés de sécurité
- nickname: Pseudo clé de sécurité
- saving: Enregistrement de vos informations d’identification …
+ nickname: Surnom de la clé de sécurité
+ saving: Enregistrement de vos identifiants en cours…
set_up: Configurer votre clé de sécurité
step_1: Donnez-lui un surnom
step_1a: Si vous ajoutez plus d’une clé de sécurité, vous saurez reconnaître
diff --git a/config/locales/headings/es.yml b/config/locales/headings/es.yml
index 2e35e947912..893fe6e34d6 100644
--- a/config/locales/headings/es.yml
+++ b/config/locales/headings/es.yml
@@ -4,71 +4,72 @@ es:
account:
activity: Actividad
authentication_apps: Aplicaciones de autenticación
- connected_accounts: Tus cuentas conectadas
+ connected_accounts: Sus cuentas conectadas
devices: Dispositivos
events: Eventos
federal_employee_id: Identificación de empleado federal
login_info: Su cuenta
reactivate: Reactive su cuenta
- two_factor: Tus métodos de autenticación
- unphishable: Incapaz de phish
+ two_factor: Sus métodos de autenticación
+ unphishable: No vulnerable al phishing
verified_account: Cuenta verificada
verified_information: Información verificada
- add_email: Añadir una nueva dirección de correo electrónico
+ add_email: Agregar una nueva dirección de correo electrónico
add_info:
phone: Agregar un número de teléfono
cancellations:
- prompt: '¿Estas seguro que quieres cancelar?'
+ prompt: '¿Está seguro de que desea cancelar?'
create_account_new_users: Crear una cuenta para usuarios nuevos
create_account_with_sp:
- sp_text: está utilizando %{app_name} para permitirle iniciar sesión en su cuenta
- de forma segura.
+ sp_text: está usando %{app_name} para permitirle iniciar sesión en su cuenta de
+ forma segura.
edit_info:
password: Cambie su contraseña
- phone: Administrar la configuración de su teléfono
+ phone: Administre la configuración de su teléfono
passwords:
change: Cambie su contraseña
- confirm: Confirme la contraseña actual para continuar
- confirm_for_personal_key: Introduzca la contraseña y obtenga una nueva clave personal
+ confirm: Confirme su contraseña actual para continuar
+ confirm_for_personal_key: Introduzca la contraseña y obtenga una clave personal nueva
forgot: '¿Olvidó su contraseña?'
piv_cac:
certificate:
- bad: El certificado PIV/CAC que seleccionaste no es válido.
- expired: El certificado PIV/CAC que seleccionó ha expirado.
- invalid: El certificado PIV/CAC que seleccionaste no es válido.
- none: No podemos detectar un certificado en su tarjeta PIV/CAC.
- not_auth_cert: Elija un certificado diferente de su tarjeta PIV/CAC.
- revoked: El certificado PIV/CAC que seleccionó ha sido revocado de su tarjeta.
- unverified: El certificado PIV/CAC que seleccionaste no es válido.
- did_not_work: Su PIV / CAC no funcionó
+ bad: El certificado de la tarjeta PIV o CAC que seleccionó no es válido
+ expired: El certificado de la tarjeta PIV o CAC que seleccionó ya venció
+ invalid: El certificado de la tarjeta PIV o CAC que seleccionó no es válido
+ none: No podemos detectar un certificado en su tarjeta PIV o CAC
+ not_auth_cert: Elija un certificado diferente para su tarjeta PIV o CAC
+ revoked: El certificado de la tarjeta PIV o CAC que seleccionó fue revocado para
+ su tarjeta
+ unverified: El certificado de la tarjeta PIV o CAC que seleccionó no es válido
+ did_not_work: Su tarjeta PIV o CAC no funcionó
token:
- bad: Error interno.
- invalid: El certificado PIV/CAC que seleccionaste no es válido.
- missing: Error interno.
+ bad: Error interno
+ invalid: El certificado de la tarjeta PIV/CAC que seleccionó no es válido
+ missing: Error interno
piv_cac_login:
- account_not_found: Su PIV / CAC no está conectado a una cuenta
- add: Configure su PIV o CAC como un método de autenticación de dos factores para
- que pueda usarlo para iniciar sesión.
- new: Use su PIV / CAC para iniciar sesión en su cuenta
- success: Configuró correctamente PIV/CAC como método de autenticación.
+ account_not_found: Su tarjeta PIV o CAC no está conectada a una cuenta
+ add: Configure su tarjeta PIV o CAC como un método de autenticación de dos
+ factores para que pueda usarla para iniciar sesión.
+ new: Inicie sesión con su tarjeta PIV o CAC
+ success: Logró configurar su tarjeta PIV o CAC como un método de autenticación.
piv_cac_setup:
- already_associated: La PIV/CAC que has presentado está asociada a otro usuario.
- new: Use su tarjeta PIV/CAC para asegurar su cuenta
+ already_associated: La tarjeta PIV o CAC que presentó está asociada con otro usuario.
+ new: Use su tarjeta PIV o CAC para proteger su cuenta
redirecting: Redirigiendo
- residential_address: Dirección residencial actual
+ residential_address: Domicilio actual
session_timeout_warning: '¿Necesita más tiempo?'
sign_in_existing_users: Iniciar sesión para usuarios existentes
sign_in_with_sp: Iniciar sesión para continuar con %{sp}
sign_in_without_sp: Iniciar sesión
sp_handoff_bounced: Hubo un problema al conectarse a %{sp_name}
- ssn: Número de seguro social
- state_id: Documento de identidad emitido por el estado
+ ssn: Número de Seguro Social
+ state_id: Identificación emitida por el estado
totp_setup:
new: Agregar una aplicación de autenticación
- verify: Verifique sus datos
- verify_email: Revise su email
- verify_personal_key: Verifica tu clave personal
+ verify: Verifique su información
+ verify_email: Revise su correo electrónico
+ verify_personal_key: Verifique su clave personal
webauthn_platform_setup:
- new: Desbloqueo facial o táctil
+ new: Agregar desbloqueo facial o táctil
webauthn_setup:
new: Inserte su clave de seguridad
diff --git a/config/locales/headings/fr.yml b/config/locales/headings/fr.yml
index ad3f2805718..a9ab58eaee4 100644
--- a/config/locales/headings/fr.yml
+++ b/config/locales/headings/fr.yml
@@ -3,75 +3,74 @@ fr:
headings:
account:
activity: Activité
- authentication_apps: Applications d’authentification
+ authentication_apps: Applis d’authentification
connected_accounts: Vos comptes connectés
- devices: Dispositifs
+ devices: Appareils
events: Événements
- federal_employee_id: Identification des employés fédéraux
+ federal_employee_id: Carte d’employé fédéral
login_info: Votre compte
- reactivate: Réactivez votre compte
+ reactivate: Réactiver votre compte
two_factor: Vos méthodes d’authentification
- unphishable: Incapable de phishing
+ unphishable: Non hameçonnable
verified_account: Compte vérifié
verified_information: Informations vérifiées
add_email: Ajouter une nouvelle adresse e-mail
add_info:
phone: Ajouter un numéro de téléphone
cancellations:
- prompt: Es-tu sûre de vouloir annuler?
+ prompt: Êtes-vous sûr de vouloir annuler ?
create_account_new_users: Créer un compte pour les nouveaux utilisateurs
create_account_with_sp:
sp_text: utilise %{app_name} pour vous permettre de vous connecter à votre
compte de façon sûre et sécurisée.
edit_info:
- password: Changez votre mot de passe
- phone: Administrer les paramètres de votre téléphone
+ password: Changer votre mot de passe
+ phone: Gérer les paramètres de votre téléphone
passwords:
- change: Changez votre mot de passe
- confirm: Confirmez votre mot de passe actuel pour continuer
- confirm_for_personal_key: Entrez le mot de passe et obtenez une nouvelle clé personnelle
- forgot: Vous avez oublié votre mot de passe?
+ change: Changer votre mot de passe
+ confirm: Confirmer votre mot de passe actuel pour continuer
+ confirm_for_personal_key: Saisir le mot de passe et obtenir une nouvelle clé personnelle
+ forgot: Mot de passe oublié ?
piv_cac:
certificate:
- bad: Le certificat PIV/CAC que vous avez sélectionné n’est pas valide.
- expired: Le certificat PIV/CAC que vous avez sélectionné a expiré.
- invalid: Le certificat PIV/CAC que vous avez sélectionné n’est pas valide.
- none: Nous ne pouvons pas détecter un certificat sur votre carte PIV/CAC.
- not_auth_cert: Veuillez choisir un autre certificat de votre carte PIV/CAC.
- revoked: Le certificat PIV/CAC que vous avez sélectionné a été retiré de votre
- carte.
- unverified: Le certificat PIV/CAC que vous avez sélectionné n’est pas valide.
- did_not_work: Votre PIV / CAC n’a pas fonctionné
+ bad: Le certificat PIV/CAC sélectionné n’est pas valide.
+ expired: Le certificat PIV/CAC sélectionné a expiré.
+ invalid: Le certificat PIV/CAC sélectionné n’est pas valide.
+ none: Nous ne pouvons pas détecter de certificat sur votre carte PIV/CAC.
+ not_auth_cert: Veuillez choisir un autre certificat pour votre carte PIV/CAC.
+ revoked: Le certificat PIV/CAC sélectionné a été révoqué de votre carte.
+ unverified: Le certificat PIV/CAC sélectionné n’est pas valide.
+ did_not_work: Votre PIV/CAC n’a pas fonctionné
token:
bad: Erreur interne.
invalid: Le certificat PIV/CAC sélectionné n’est pas valide.
missing: Erreur interne.
piv_cac_login:
- account_not_found: Votre PIV / CAC n’est pas connecté à un compte
- add: Configurez votre PIV ou votre CAC en tant que méthode d’authentification à
- deux facteurs pour pouvoir l’utiliser pour vous connecter.
- new: Utilisez votre PIV / CAC pour vous connecter à votre compte
- success: Vous avez correctement configuré PIV/CAC en tant que méthode
+ account_not_found: Votre carte PIV/CAC n’est pas connectée à un compte
+ add: Configurer votre PIV ou votre CAC comme méthode d’authentification à deux
+ facteurs pour pouvoir l’utiliser pour vous connecter.
+ new: Vous connecter avec votre PIV/CAC
+ success: Votre carte PIV/CAC a bien été configurée comme méthode
d’authentification.
piv_cac_setup:
already_associated: La carte PIV/CAC que vous avez présentée est associée à un
autre utilisateur.
- new: Utilisez votre carte PIV/CAC pour sécuriser votre compte
+ new: Utilisez votre carte PIV/CAC pour sécuriser votre compte.
redirecting: Redirection
- residential_address: Adresse de résidence actuelle
- session_timeout_warning: Vous avez besoin de plus de temps?
- sign_in_existing_users: S’identifier pour les utilisateurs existants
- sign_in_with_sp: Connectez-vous pour continuer à %{sp}
- sign_in_without_sp: Connexion
+ residential_address: Adresse résidentielle actuelle
+ session_timeout_warning: Vous avez besoin de plus de temps ?
+ sign_in_existing_users: Se connecter pour les utilisateurs existants
+ sign_in_with_sp: Se connecter pour continuer vers %{sp}
+ sign_in_without_sp: Se connecter
sp_handoff_bounced: Un problème est survenu lors de la connexion à %{sp_name}
ssn: Numéro de sécurité sociale
state_id: Carte d’identité délivrée par l’État
totp_setup:
- new: Ajouter une application d’authentification
- verify: Vérifier votre informations
- verify_email: Consultez vos courriels
+ new: Ajouter une appli d’authentification
+ verify: Vérifier vos informations
+ verify_email: Consulter vos e-mails
verify_personal_key: Vérifier votre clé personnelle
webauthn_platform_setup:
- new: Déverrouillage facial ou tactile
+ new: Ajouter le déverrouillage facial ou tactile
webauthn_setup:
new: Insérer votre clé de sécurité
diff --git a/config/locales/help_text/es.yml b/config/locales/help_text/es.yml
index e90b40f13fe..638bae45e37 100644
--- a/config/locales/help_text/es.yml
+++ b/config/locales/help_text/es.yml
@@ -7,21 +7,21 @@ es:
birthdate: Fecha de nacimiento
email: Dirección de correo electrónico
full_name: Nombre completo
- ial1_consent_reminder_html: Usted debe dar cada año su consentimiento para
- compartir su información con %{sp}. Compartiremos su
- información con %{sp} para vincular su cuenta.
- ial1_intro_html: Le haremos llegar su información a %{sp} para
+ ial1_consent_reminder_html: Debe dar su consentimiento cada año para divulgar su
+ información a %{sp}. Divulgaremos su información a
+ %{sp} para conectar su cuenta.
+ ial1_intro_html: Divulgaremos su información a %{sp} para
conectar su cuenta.
ial2_consent_reminder_html: 'Para conectar su cuenta, %{sp}
- necesita saber quién usted. Debe dar su consentimiento cada año para
- compartir su información verificada con %{sp}.
- Compartiremos esta información:'
- ial2_intro_html: '%{sp} necesita saber quién es para conectar
- su cuenta. Compartiremos esta información con el organismo asociado: '
+ necesita saber quién es usted. Debe dar su consentimiento cada año para
+ divulgar su información verificada a %{sp}.
+ Divulgaremos esta información: '
+ ial2_intro_html: 'Para conectar su cuenta, %{sp} necesita saber
+ quién es usted. Divulgaremos esta información a %{sp}: '
ial2_reverified_consent_info: 'Como volvió a verificar su identidad, necesitamos
- su permiso para compartir esta información con %{sp}: '
+ su permiso para divulgar esta información a %{sp}: '
phone: Número de teléfono
social_security_number: Número de Seguro Social
verified_at: Actualizado en
- x509_issuer: Emisor PIV/CAC
- x509_subject: Identidad PIV/CAC
+ x509_issuer: Emisor de la tarjeta PIV o CAC
+ x509_subject: Identidad de la tarjeta PIV o CAC
diff --git a/config/locales/help_text/fr.yml b/config/locales/help_text/fr.yml
index e8850003c1a..57a576dfa4b 100644
--- a/config/locales/help_text/fr.yml
+++ b/config/locales/help_text/fr.yml
@@ -12,18 +12,17 @@ fr:
informations avec %{sp} pour connecter votre compte.
ial1_intro_html: Nous partagerons vos informations avec %{sp}
pour connecter votre compte.
- ial2_consent_reminder_html: '%{sp} doit savoir qui vous êtes
- pour se connecter à votre compte. Vous devez consentir chaque année à
- partager vos informations vérifiées avec %{sp}. Nous
+ ial2_consent_reminder_html: '%{sp} a besoin de savoir qui vous
+ êtes pour se connecter à votre compte. Vous devez consentir chaque année
+ à partager vos informations vérifiées avec %{sp}. Nous
partagerons ces informations :'
ial2_intro_html: '%{sp} a besoin de savoir qui vous êtes pour
- connecter votre compte. Nous partagerons ces informations avec l’agence
- partenaire:'
- ial2_reverified_consent_info: 'Puisque vous avez à nouveau vérifié votre
+ connecter votre compte. Nous partagerons ces informations avec %{sp} :'
+ ial2_reverified_consent_info: 'Étant donné que vous avez revérifié votre
identité, nous avons besoin de votre autorisation pour partager ces
- informations avec %{sp}:'
+ informations avec %{sp} :'
phone: Numéro de téléphone
social_security_number: Numéro de sécurité sociale
verified_at: Mis à jour le
x509_issuer: Émetteur PIV/CAC
- x509_subject: Identité associée à la carte PIV/CAC
+ x509_subject: Identité PIV/CAC
diff --git a/config/locales/idv/es.yml b/config/locales/idv/es.yml
index a04ed6e977b..b49c1284df2 100644
--- a/config/locales/idv/es.yml
+++ b/config/locales/idv/es.yml
@@ -2,13 +2,12 @@
es:
idv:
accessible_labels:
- masked_ssn: texto seguro, comenzando con %{first_number} y terminando con
- %{last_number}
+ masked_ssn: texto seguro, a partir de %{first_number} y hasta %{last_number}
buttons:
- change_address_label: Actualizar su dirección actual
+ change_address_label: Actualizar dirección
change_label: Actualizar
- change_ssn_label: Actualizar su número de la Seguridad Social
- change_state_id_label: Actualizar la información de su cédula de identidad
+ change_ssn_label: Actualizar número de Seguro Social
+ change_state_id_label: Actualizar identificación estatal
continue_plain: Continuar
mail:
send: Solicitar una carta
@@ -19,7 +18,7 @@ es:
keep_going: No, continuar
start_over: Empezar de nuevo
description:
- account_page: la página de su cuenta
+ account_page: página de la cuenta
exit:
with_sp_html:
- Si sale de %{app_name} ahora y regresa a %{sp_name}, no habrá
@@ -32,138 +31,137 @@ es:
- No obstante, continuará teniendo una cuenta en %{app_name}. Puede
administrar o eliminar su cuenta desde %{account_page_text}.
gpo:
- continue: Continúe empezando de nuevo y verifique su identidad desde el
+ continue: Continúe para empezar de nuevo y verificar su identidad desde el
principio.
- start_over: Si borras tu información y empiezas de nuevo
- start_over_new_address: Para enviar su carta a otra dirección, tendrá que
- empezar de nuevo y verificar su identidad con la nueva dirección.
+ start_over: 'Si borra su información y empieza de nuevo:'
+ start_over_new_address: Para enviar por correo su carta a otra dirección, tendrá
+ que empezar de nuevo y verificar su identidad con la nueva
+ dirección.
warnings:
- El código de verificación de tu carta ya no funcionará
- Tendrás que volver a verificar tu identidad otra vez
- hybrid: Si cancela ahora, se le pedirá regresar a su computadora para continuar
- con la verificación de su identidad.
+ hybrid: Si cancela ahora, se le pedirá que vuelva a su computadora para seguir
+ verificando su identidad.
start_over: Si vuelve a empezar, reiniciará este proceso desde el principio.
headings:
confirmation:
hybrid: Ha cancelado la carga de fotos de su identificación en este teléfono
exit:
with_sp: Salir de %{app_name} y volver a %{sp_name}
- without_sp: Salir de la verificación de identidad e ir a la página de su cuenta
+ without_sp: Salga de la verificación de identidad y vaya a la página de su cuenta
prompt:
- hybrid: '¿Seguro que desea cancelar la carga de fotos de su identificación en
- este teléfono?'
+ hybrid: '¿Está seguro de que desea cancelar la carga de fotos de su
+ identificación en este teléfono?'
standard: '¿Cancelar la verificación de su identidad?'
- start_over: ¿Empezar de nuevo a verificar su identidad?
- start_over: Empezar de nuevo a verificar su identidad
+ start_over: '¿Empezar de nuevo a verificar su identidad?'
+ start_over: Empiece de nuevo a verificar su identidad
errors:
- incorrect_password: La contraseña que ingresó no es correcta.
+ incorrect_password: La contraseña que ingresó no es la correcta.
pattern_mismatch:
- ssn: 'Ingrese un número de Seguro Social de nueve dígitos'
- zipcode: Ingresa un código postal de 5 o 9 dígitos
- zipcode_five: Ingresa un código postal de 5 dígitos
+ ssn: Ingrese un número de Seguro Social de nueve dígitos.
+ zipcode: Ingrese un código postal de 5 o 9 dígitos.
+ zipcode_five: Ingrese un código postal de 5 dígitos.
failure:
attempts_html:
- one: Por motivos de seguridad, le quedan un intento para añadir
- su documento de identidad en línea.
+ one: Por motivos de seguridad, le queda un intento para añadir
+ su identificación en línea.
other: Por motivos de seguridad, le quedan %{count} intentos
- para añadir su documento de identidad en línea.
+ para añadir su identificación en línea.
button:
try_online: Vuelva a intentarlo en línea
- warning: Inténtelo de nuevo
+ warning: Vuelva a intentarlo
exceptions:
in_person_outage_error_message:
post_cta:
- body: Mientras tanto, todavía puedes iniciar el proceso de verificación
- presencial en %{app_name} y luego acudir a una oficina de correos.
- Si necesitas utilizar cuanto antes los servicios, contacta
- directamente a tu agencia.
- title: Estamos resolviendo un problema técnico. Es probable que los resultados
- de tu verificación de identidad se te envíen por correo
- electrónico hasta el %{date}.
+ body: Mientras tanto, todavía puede iniciar el proceso de verificación en
+ persona en %{app_name} y luego acudir a una oficina de correos. Si
+ necesita acceso urgente a los servicios, contacte directamente con
+ su agencia.
+ title: Estamos resolviendo un problema técnico. Es posible que los resultados de
+ su verificación de identidad no se le envíen por correo
+ electrónico sino hasta el %{date}.
ready_to_verify:
- body: Todavía puedes acudir a una oficina de correos para completar tu proceso
- de verificación de identidad. Si necesitas utilizar cuanto antes
- los servicios, contacta directamente a tu agencia.
- contact_html: Contacta al soporte de
- %{app_name} si no has recibido un correo electrónico con los
- resultados de tu verificación para el %{date}.
- title: Estamos resolviendo un problema técnico. Es probable que los resultados
- de tu verificación de identidad se te envíen por correo
- electrónico hasta el %{date}.
- internal_error: Se produjo un error interno al procesar tu solicitud. Por favor,
- inténtalo de nuevo.
- link: contáctanos
+ body: Todavía puede acudir a una oficina de correos para completar el proceso de
+ verificación de su identidad. Si necesita acceso urgente a los
+ servicios, contacte directamente con su agencia.
+ contact_html: Contacte con el servicio de
+ asistencia de %{app_name} si no ha recibido un correo
+ electrónico con los resultados de su verificación antes del
+ %{date}.
+ title: Estamos resolviendo un problema técnico. Es posible que los resultados de
+ su verificación de identidad no se le envíen por correo
+ electrónico sino hasta el %{date}.
+ internal_error: Hubo un error interno al procesar su solicitud. Vuelva a intentarlo.
+ link: contáctenos
post_office_search_error: En este momento, estamos teniendo problemas técnicos.
- Trate de buscar de nuevo una oficina de correos. Si el problema
+ Intente de nuevo buscar una oficina de correos. Si el problema
continúa, regrese más tarde.
- text_html: Inténtalo de nuevo. Si sigues recibiendo estos errores, %{link_html}.
+ text_html: Vuelva a intentarlo. Si sigue recibiendo estos errores, %{link_html}.
exit:
with_sp: Salir de %{app_name} y volver a %{sp_name}
- without_sp: Salir de la verificación de identidad e ir a la página de su cuenta
+ without_sp: Salga de la verificación de identidad y vaya a la página de su cuenta
gpo:
rate_limited:
- heading: Inténtelo de nuevo más tarde
+ heading: Vuelva a intentarlo más tarde
phone:
- heading: No pudimos encontrar coincidencias entre este número de teléfono y
- otros registros
- jobfail: Algo ha fallado y no podemos procesar tu solicitud en este momento.
- Vuelve a intentarlo.
+ heading: No encontramos registros que coincidan con este número de teléfono
+ jobfail: Algo salió mal y no podemos procesar su solicitud en este momento.
+ Vuelva a intentarlo.
rate_limited:
- body: Por motivos de seguridad, se limita el número de veces que puede intentar
- verificar su número de teléfono por Internet.
+ body: Por motivos de seguridad, limitamos el número de veces que puede intentar
+ verificar su número de teléfono en línea.
gpo:
button: Verificar por correo
- heading: No pudimos asociarlo a este número
- option_try_again_later_html: 'Cancelar y empezar de nuevo transcurridas
- %{time_left}'
- option_verify_by_mail_html: 'Verificar por correo, lo cual tarda entre 5
- y 10 días'
- options_header: 'Puede:'
- timeout: Nuestra solicitud para verificar tu información ha caducado. Vuelve a
- intentarlo.
+ heading: No pudimos verificar su identidad por teléfono
+ option_try_again_later_html: Cancelar y empezar de nuevo en %{time_left}
+ option_verify_by_mail_html: Verificar por correo, lo que tarda de 5 a 10 días
+ options_header: 'Usted puede:'
+ timeout: Terminó el tiempo de nuestra solicitud para verificar su información.
+ Vuelva a intentarlo.
warning:
attempts_html:
- one: Por razones de seguridad, le queda un solo intento.
- other: Por razones de seguridad, le quedan %{count} intentos.
+ one: Por motivos de seguridad, le queda un intento.
+ other: Por motivos de seguridad, le quedan %{count} intentos.
gpo:
button: Verificar por correo
- explanation: Si no dispones de otro número de teléfono para intentarlo,
- verifícalo por correo.
+ explanation: Si no tiene otro número de teléfono para intentarlo, haga la
+ verificación por correo.
heading: Verificar por correo
- how_long_it_takes_html: Esto tarda entre 5 y 10 días.
+ how_long_it_takes_html: Esto tarda de 5 a 10 días.
heading: No pudimos asociarlo a este número
- learn_more_link: 'Más información sobre qué número de teléfono usar'
- next_steps_html: 'Pruebe con otro número que utilice a menudo y
- desde hace tiempo.. Puede ser un número del trabajo o particular.'
- try_again_button: 'Intente con otro número'
- you_entered: 'Ud. entregó:'
+ learn_more_link: Obtenga más información sobre el número de teléfono que debe usar
+ next_steps_html: Intente con otro número que use a menudo y
+ haya usado por mucho tiempo. Puede ser el número del trabajo o de
+ casa.
+ try_again_button: Intentar con otro número
+ you_entered: 'Usted ingresó:'
sessions:
exception: Hubo un error interno al procesar su solicitud.
- fail_html: 'Por su seguridad, limitamos el número de veces que puede intentar
- verificar la información personal en línea. Inténtelo de nuevo
- en %{timeout}.'
+ fail_html: Por su seguridad, limitamos el número de veces que puede intentar
+ verificar la información personal en línea. Vuelva a
+ intentarlo en %{timeout}.
heading: No encontramos registros que coincidan con sus datos personales
- warning: Por favor, verifique la información que ingresó y vuelva a intentarlo.
- Los errores más comunes suelen producirse al ingresar un Número de
- Seguridad Social o un Código Postal incorrecto.
+ warning: Revise la información que ingresó y vuelva a intentarlo. Los errores
+ más comunes suelen ser un número de Seguro Social o un código postal
+ incorrecto.
setup:
fail_date_html: Llame a nuestro centro de atención antes del
%{date_html} para seguir verificando su identidad.
fail_html: Llame al %{contact_number} y facilíteles el código
de
error %{support_code}.
heading: Llámenos
- timeout: Estamos experimentando un tiempo de espera superior al habitual al
- procesar su solicitud. Inténtalo de nuevo.
+ timeout: El tiempo de espera para procesar su solicitud es superior al habitual
+ en este momento. Vuelva a intentarlo.
verify:
exit: Salir de %{app_name}
fail_link_html: Obtenga ayuda en %{sp_name}
fail_text: para acceder a los servicios.
- heading: No hemos podido verificar su identidad
+ heading: No pudimos verificar su identidad
forgot_password:
- link_text: '¿Se te olvidó tu contraseña?'
- modal_header: '¿Estás seguro de que no puedes recordar tu contraseña?'
+ link_text: '¿Olvidó su contraseña?'
+ modal_header: '¿Está seguro de que no puede recordar su contraseña?'
reset_password: Restablecer la contraseña
- try_again: Inténtalo de nuevo
+ try_again: Vuelva a intentarlo
warnings:
- Si olvidó su contraseña, deberá restablecerla y completarla nuevamente.
- Tendrá que volver a ingresar su información personal, como su nombre,
@@ -174,157 +172,157 @@ es:
city: Ciudad
dob: Fecha de nacimiento
first_name: Nombre
- id_number: Número de identidad
+ id_number: Número de identificación
issuing_state: Estado emisor
last_name: Apellido
password: Contraseña
- ssn: Número de seguridad social
+ ssn: Número de Seguro Social
ssn_label: Número de Seguro Social
state: Estado
zipcode: Código postal
gpo:
alert_info: 'Enviamos una carta con su código de verificación a:'
- alert_rate_limit_warning_html: No puede solicitar más cartas ahora mismo. Su
- solicitud de carta anterior la hizo el
+ alert_rate_limit_warning_html: No puede solicitar más cartas por ahora. La fecha
+ de su solicitud de carta anterior es el
%{date_letter_was_sent}.
- clear_and_start_over: Borrar su información y empezar de nuevo
+ clear_and_start_over: Borre su información y empiece de nuevo
did_not_receive_letter:
form:
- instructions: Si ya tiene su carta, introduzca el código de 10 caracteres de la
+ instructions: Si ya tiene su carta, introduzca el código de 10 caracteres de la
carta que recibió.
intro:
- be_patient_html: Tenga en cuenta que las cartas tardan hasta 10
- días en llegar. Gracias por su paciencia.
- request_new_letter_link: solicitar una nueva
+ be_patient_html: Recuerde que las cartas tardan hasta 10 días
+ en llegar. Gracias por su paciencia.
+ request_new_letter_link: solicitar una carta nueva
request_new_letter_prompt_html: Si no ha recibido su carta, puede
%{request_new_letter_link}.
- title: ¿No recibió su carta?
+ title: '¿No recibió su carta?'
form:
- instructions: Introduzca el código de 10 caracteres de la carta que ha recibido.
+ instructions: Introduzca el código de 10 caracteres de la carta que recibió.
otp_label: Código de verificación
submit: Confirmar cuenta
title: Confirme su cuenta
- intro_html: 'Si ha recibido su carta, introduzca su código de verificación a
- continuación.
Si su carta aún no ha llegado, tenga paciencia, ya
- que las cartas tardan hasta 10 días en llegar. Gracias
+ intro_html: '
Si ya recibió su carta, introduzca su código de verificación a
+ continuación.
Si su carta aún no ha llegado, tenga paciencia, ya
+ que las cartas tardan hasta 10 días en llegar. Gracias
por su paciencia.
'
request_another_letter:
button: Solicitar otra carta
- instructions_html: Solicite una nueva carta si tiene problemas con la actual o
- si nunca llegó. Las cartas tardan entre 5 y 10 días
- en llegar.
+ instructions_html: Solicite otra carta si tiene problemas con la carta actual o
+ si nunca llegó. Las cartas tardan de 5 a 10 días en
+ llegar.
learn_more_link: Obtenga más información sobre la verificación de su dirección
por correo
- title: ¿Solicitar otra carta?
- return_to_profile: Regrese a su perfil
+ title: '¿Solicitar otra carta?'
+ return_to_profile: Vuelva a su perfil
title: Bienvenido de nuevo
- wrong_address: ¿La dirección no es correcta?
+ wrong_address: '¿No es la dirección correcta?'
images:
come_back_later: Carta con una marca de verificación
messages:
- activated_html: Su identidad ha sido verificada. Si necesita cambiar la
- información verificada, por favor, %{link_html}.
- activated_link: Contáctenos
+ activated_html: Se verificó su identidad. Si necesita cambiar la información
+ verificada, %{link_html}.
+ activated_link: contáctenos
clear_and_start_over: Borrar mi información y empezar de nuevo
- come_back_later_html: Las cartas tardan entre 5 y 10 días en
- llegar por USPS First-Class Mail.
Una vez que reciba la carta,
- inicie sesión en %{app_name} e introduzca su código de verificación
- cuando se le solicite.
- come_back_later_no_sp_html: Ahora puedes volver a tu cuenta de %{app_name}.
- come_back_later_password_html: No olvide su contraseña.
+ come_back_later_html: 'Las cartas tardan de 5 a 10 días en
+ llegar por First-Class Mail del Servicio Postal de los EE. UU.
+ (USPS).
Una vez que reciba su carta, inicie sesión en %{app_name}
+ e introduzca su código de verificación cuando se le solicite.
'
+ come_back_later_no_sp_html: Por ahora, puede volver a su cuenta de %{app_name}.
+ come_back_later_password_html: 'No olvide su contraseña.
Si restablece su contraseña, el código de verificación de su carta ya no
- funcionará y tendrá que verificar su identidad de nuevo.
- come_back_later_sp_html: Ahora puedes volver a %{sp}.
- confirm: Hemos asegurado su información verificada
+ funcionará y tendrá que verificar su identidad de nuevo.'
+ come_back_later_sp_html: Por ahora, puede volver a %{sp}.
+ confirm: Hemos protegido su información verificada
enter_password:
- by_mail_password_reminder_html: Recuerde su contraseña. El
+ by_mail_password_reminder_html: 'Recuerde su contraseña. El
código de verificación de su carta no funcionará si restablece su
- contraseña más tarde.
- message: '%{app_name} encriptará tu información con tu contraseña. Esto
- significa que tu información estará segura y solo tú podrás
- consultarla o modificarla.'
+ contraseña más adelante.'
+ message: '%{app_name} cifrará su información con su contraseña. Esto significa
+ que su información está protegida y solo usted puede acceder a ella o
+ modificarla.'
phone_verified: Verificamos su número de teléfono
gpo:
address_on_file: 'Enviaremos la carta por correo a la dirección que verificó
anteriormente:'
- another_letter_on_the_way: Te enviaremos otra carta
- info_alert: Tendrá que esperar a que su carta sea entregada para terminar de
+ another_letter_on_the_way: Le enviaremos otra carta
+ info_alert: Tendrá que esperar hasta que reciba su carta para terminar de
verificar su identidad.
learn_more_verify_by_mail: Obtenga más información sobre la verificación de su
dirección por correo
- letter_on_the_way: Te enviaremos una carta
+ letter_on_the_way: Le enviaremos una carta
resend: Envíeme otra carta
start_over_html: Si esta no es la dirección correcta, tendrá que
%{start_over_link_html}.
start_over_link_text: empezar de nuevo y verificar con su nueva dirección
timeframe_html: Recibirá una carta con un código de
verificación en un plazo de 5 a 10 días.
- otp_delivery_method_description: Si ha introducido un teléfono fijo más arriba,
- seleccione “Llamada telefónica” más abajo.
+ otp_delivery_method_description: Si introdujo un teléfono fijo arriba,
+ seleccione “Llamada telefónica” a continuación.
phone:
alert_html: 'Introduzca un número de teléfono que sea:'
description: Comprobaremos este número con los registros y le enviaremos un
- código único. Esto es para ayudar a verificar su identidad.
+ código de un solo uso. Esto ayuda a verificar su identidad.
failed_number:
alert_text: No pudimos asociarlo a este número.
- gpo_alert_html: Pruebe con otro número o %{link_html}.
- gpo_verify_link: verifique por correo
- try_again_html: Pruebe con otro número.
+ gpo_alert_html: Intente con otro número o %{link_html}.
+ gpo_verify_link: verificar por correo
+ try_again_html: Intente con otro número.
rules:
- Con base en Estados Unidos (incluidos los territorios de EE.UU.)
- Su número principal (el que utiliza con más frecuencia)
- return_to_profile: '‹ Volver a tu perfil de %{app_name}'
- select_verification_with_sp: Para protegerlo de robo de identidad, no puede
- utilizar su cuenta en %{sp_name} hasta que la active ingresando un
- código único.
- select_verification_without_sp: Para proteger su cuenta de robo de identidad, su
- perfil no se activará hasta que ingrese un código único.
+ return_to_profile: '‹ Vuelva a su perfil de %{app_name}'
+ select_verification_with_sp: Para protegerle contra el fraude de identidad,
+ contactaremos con usted para confirmar que esta cuenta de %{sp_name} es
+ legítima.
+ select_verification_without_sp: Para protegerle contra el fraude de identidad,
+ contactaremos con usted para confirmar que esta cuenta es legítima.
sessions:
enter_password_message: Cuando vuelva a ingresar su contraseña, %{app_name}
- cifrará sus datos para asegurarse de que nadie más pueda acceder a
- ellos.
- no_pii: SITIO DE PRUEBA - No utilice información personal real (sólo para
- propósitos de demostración) - SITIO DE PRUEBA
- verify_info: Leímos sus datos en su identificación. Revíselos y modifíquelos si
- es necesario antes de enviarlos para la verificación.
+ protegerá la información que nos dio, para que solo usted pueda
+ acceder a ella.
+ no_pii: SITIO DE PRUEBA - No use información personal real (para fines de
+ demostración únicamente) - SITIO DE PRUEBA
+ verify_info: Leímos sus datos en su identificación. Revíselos y haga los cambios
+ necesarios antes de enviarlos para verificación.
verifying: Verificando…
titles:
- activated: Ya se verificó tu identidad.
+ activated: Ya se verificó su identidad
come_back_later: Su carta está en camino
enter_password: Revise y envíe
mail:
verify: Verifique su dirección
otp_delivery_method: '¿Cómo debemos enviar un código?'
session:
- enter_password: 'Vuelve a ingresar tu contraseña de %{app_name}'
- enter_password_letter: 'Vuelve a ingresar su contraseña de %{app_name} para enviar su carta'
- unavailable: Estamos trabajando para resolver un error
+ enter_password: Vuelva a ingresar su contraseña de %{app_name}
+ enter_password_letter: Vuelva a ingresar su contraseña de %{app_name} para enviar su carta
+ unavailable: Estamos trabajando para corregir un error
troubleshooting:
headings:
need_assistance: '¿Necesita ayuda inmediata? Así es como puede obtener ayuda:'
options:
- contact_support: Póngase en contacto con el servicio de asistencia de %{app_name}
- doc_capture_tips: Sugerencias para obtener fotos nítidas de tu documento de identidad
+ contact_support: Contacte con el servicio de asistencia de %{app_name}
+ doc_capture_tips: Consejos para tomar fotos nítidas de su identificación
get_help_at_sp: Obtenga ayuda en %{sp_name}
learn_more_verify_by_mail: Obtenga más información sobre la verificación de su
dirección por correo
- learn_more_verify_by_phone: Más información sobre qué número de teléfono usar
- learn_more_verify_by_phone_in_person: Más información sobre cómo verificar su número de teléfono
- learn_more_verify_in_person: Más información sobre la verificación en persona
- supported_documents: Más información sobre los documentos de identidad aceptados
+ learn_more_verify_by_phone: Obtenga más información sobre el número de teléfono que debe usar
+ learn_more_verify_by_phone_in_person: Obtenga más información sobre la verificación de su número de teléfono
+ learn_more_verify_in_person: Obtenga más información sobre la verificación en persona
+ supported_documents: Obtenga más información sobre las identificaciones aceptadas
verify_by_mail: Verifique su dirección por correo
unavailable:
- exit_button: 'Salir de %{app_name}'
+ exit_button: Salir de %{app_name}
idv_explanation:
- with_sp_html: '%{sp} necesita asegurarse de que es usted
- realmente y no alguien que se hace pasar por usted.'
- without_sp: 'La agencia a la que está intentando acceder debe asegurarse de que
- usted sea quien dice ser, y no alguien que se hace pasar por usted.'
+ with_sp_html: '%{sp} necesita asegurarse de que se trata de
+ usted y no de alguien que se hace pasar por usted.'
+ without_sp: La agencia a la que está intentando acceder debe asegurarse de que
+ se trata de usted y no de alguien que se hace pasar por usted.
next_steps_html: '%{status_page_link_html} o salga de %{app_name} y vuelva a
intentarlo más tarde.'
- status_page_link: 'Consulte las actualizaciones en nuestra página de estado'
- technical_difficulties: Lamentablemente, debido a problemas técnicos por nuestra
- parte, tal vez no podamos verificar su identidad en estos momentos.
+ status_page_link: Obtenga las actualizaciones en nuestra página de estado
+ technical_difficulties: Lamentablemente, tenemos problemas técnicos y no podemos
+ verificar su identidad en este momento.
warning:
attempts_html:
one: Por motivos de seguridad, le queda un intento.
@@ -332,16 +330,19 @@ es:
sessions:
heading: No encontramos registros que coincidan con sus datos personales
state_id:
- cancel_button: Salga de %{app_name}
- explanation: |
- Desafortunadamente, estamos experimentando dificultades técnicas con las identificaciones de su estado y actualmente no podemos verificar su información.
- heading: Estamos trabajando para resolver un error
+ cancel_button: Salir de %{app_name}
+ explanation: 'Lamentablemente, tenemos problemas técnicos con las
+ identificaciones de su estado y no podemos verificar su información en
+ este momento.
+
+ '
+ heading: Estamos trabajando para corregir un error
next_steps:
items_html:
- Volver a intentarlo ahora o
- Salir de %{app_name} y volver a intentarlo más tarde
preamble: 'Usted puede:'
- try_again_button: Inténtalo de nuevo
+ try_again_button: Vuelva a intentarlo
welcome:
no_js_header: Debe habilitar JavaScript para verificar su identidad.
no_js_intro: '%{sp_name} requiere que usted verifique su identidad. Debe
diff --git a/config/locales/idv/fr.yml b/config/locales/idv/fr.yml
index 73314570c74..b3cb9a7bfe3 100644
--- a/config/locales/idv/fr.yml
+++ b/config/locales/idv/fr.yml
@@ -2,19 +2,19 @@
fr:
idv:
accessible_labels:
- masked_ssn: Texte sécurisé, commençant par %{first_number} et finissant par
+ masked_ssn: SMS sécurisé, commençant par %{first_number} et finissant par
%{last_number}
buttons:
- change_address_label: Mettre à jour votre adresse actuelle
+ change_address_label: Mettre à jour votre adresse
change_label: Mettre à jour
- change_ssn_label: Mettre à jour votre numéro de Sécurité Sociale
- change_state_id_label: Mettre à jour les informations figurant sur votre document d’identité
- continue_plain: Continuer
+ change_ssn_label: Mettre à jour votre numéro de sécurité sociale
+ change_state_id_label: Mettre à jour votre pièce d’identité
+ continue_plain: Suite
mail:
send: Demander une lettre
cancel:
actions:
- account_page: Accéder à la page de votre compte
+ account_page: Aller à la page de votre compte
exit: Quitter %{app_name}
keep_going: Non, continuer
start_over: Recommencer
@@ -32,37 +32,39 @@ fr:
- Vous aurez toujours un compte %{app_name}. Vous pouvez gérer ou
supprimer votre compte sur %{account_page_text}.
gpo:
- continue: Recommencez et vérifiez votre identité depuis le début.
- start_over: Si vous supprimez vos informations et recommencez
+ continue: Continuez pour recommencer et confirmer votre identité depuis le
+ début.
+ start_over: 'Si vous effacez vos informations et recommencez :'
start_over_new_address: Pour envoyer votre lettre à une autre adresse, vous
- devrez recommencer et vérifier votre identité à la nouvelle adresse.
+ devrez recommencer et confirmer votre identité à la nouvelle
+ adresse.
warnings:
- Le code de vérification dans votre lettre ne fonctionnera plus
- Vous recommencerez la vérification de votre identité depuis le
début
hybrid: Si vous annulez maintenant, vous serez invité à retourner sur votre
- ordinateur pour continuer à vérifier votre identité.
+ ordinateur pour continuer à confirmer votre identité.
start_over: Si vous recommencez, vous reprendrez ce processus depuis le début.
headings:
confirmation:
hybrid: Vous avez annulé le téléchargement de vos photos d’identité sur ce
téléphone
exit:
- with_sp: Quittez %{app_name} et retournez à %{sp_name}
- without_sp: Quittez la vérification d’identité et accédez à la page de votre
+ with_sp: Quitter %{app_name} et revenir à %{sp_name}
+ without_sp: Quitter la vérification d’identité et accéder à la page de votre
compte
prompt:
- hybrid: Êtes-vous sûr de vouloir annuler le téléchargement de vos photos
- d’identité sur ce téléphone?
- standard: Annuler la vérification de votre identité?
- start_over: Recommencez la vérification de votre identité?
+ hybrid: Êtes-vous sûr de vouloir annuler le téléchargement des photos de votre
+ pièce d’identité sur ce téléphone ?
+ standard: Annuler la vérification de votre identité ?
+ start_over: Recommencer la vérification de votre identité ?
start_over: Recommencez la vérification de votre identité
errors:
- incorrect_password: Le mot de passe que vous avez inscrit est incorrect.
+ incorrect_password: Le mot de passe que vous avez saisi est incorrect.
pattern_mismatch:
- ssn: 'Entrez un numéro de sécurité sociale à neuf chiffres'
- zipcode: Entrez un code postal à 5 ou 9 chiffres
- zipcode_five: Entrez un code postal à 5 chiffres
+ ssn: Saisissez un numéro de sécurité sociale à neuf chiffres
+ zipcode: Saisissez un code postal à 5 ou 9 chiffres
+ zipcode_five: Saisissez un code postal à 5 chiffres
failure:
attempts_html:
one: Pour des raisons de sécurité, il vous reste une tentative
@@ -71,45 +73,44 @@ fr:
tentatives pour ajouter votre pièce d’identité en ligne.
button:
try_online: Réessayer en ligne
- warning: Essayez à nouveau
+ warning: Réessayer
exceptions:
in_person_outage_error_message:
post_cta:
body: En attendant, vous pouvez toujours commencer la procédure de vérification
- en personne sur %{app_name} et vous pouvez visiter un bureau de
+ en personne sur %{app_name} avant de vous rendre dans un bureau de
poste. Si vous avez un besoin urgent d’accès aux services,
- veuillez contacter directement votre agence.
- title: Nous travaillons sur un problème technique. Il se peut que les résultats
- de votre vérification d’identité ne vous soient pas envoyés par
- courrier électronique avant le %{date}.
+ veuillez contacter directement l’organisme concerné.
+ title: Nous travaillons à la résolution d’un problème technique. Il se peut que
+ les résultats de votre vérification d’identité ne vous soient pas
+ envoyés par e-mail avant le %{date}.
ready_to_verify:
- body: Vous pouvez toujours vous rendre dans un bureau de poste pour finalisation
- de la vérification de votre identité. Si vous avez un besoin
- urgent d’accès aux services, veuillez contacter directement votre
- agence.
+ body: Vous pouvez toujours vous rendre dans un bureau de poste pour achever la
+ vérification de votre identité. Si vous avez un besoin urgent
+ d’accès aux services, veuillez contacter directement l’organisme
+ concerné.
contact_html: Contactez l’assistance
- %{app_name} si vous n’avez pas reçu de courrier électronique
- contenant les résultats de votre vérification avant le %{date}.
- title: Nous travaillons sur un problème technique. Il se peut que les résultats
- de votre vérification d’identité ne vous soient pas envoyés par
- courrier électronique avant le %{date}.
+ %{app_name} si vous n’avez pas reçu d’e-mail contenant les
+ résultats de votre vérification d’ici le %{date}.
+ title: Nous travaillons à la résolution d’un problème technique. Il se peut que
+ les résultats de votre vérification d’identité ne vous soient pas
+ envoyés par e-mail avant le %{date}.
internal_error: Une erreur interne s’est produite lors du traitement de votre
demande. Veuillez réessayer.
- link: contactez-nous
- post_office_search_error: Nous connaissons des difficultés techniques en ce
- moment. Essayez de chercher à nouveau un bureau de poste. Si le
- problème persiste, revenez plus tard.
- text_html: Veuillez réessayer. Si vous continuez à recevoir ces erreurs,
- %{link_html}
+ link: veuillez nous contacter
+ post_office_search_error: Nous rencontrons actuellement des difficultés
+ techniques. Réessayez de chercher un bureau de poste. Si le problème
+ persiste, revenez plus tard.
+ text_html: Veuillez réessayer. Si ces erreurs persistent, %{link_html}
exit:
- with_sp: Quittez %{app_name} et retournez à %{sp_name}
- without_sp: Quittez la vérification d’identité et accédez à la page de votre compte
+ with_sp: Quitter %{app_name} et revenir à %{sp_name}
+ without_sp: Quitter la vérification de l’identité et aller à la page de votre
+ compte
gpo:
rate_limited:
- heading: Réessayez plus tard
+ heading: Réessayez ultérieurement
phone:
- heading: Nous n’avons pas pu faire correspondre ce numéro de téléphone à
- d’autres enregistrements
+ heading: Nous n’avons pas pu associer ce numéro de téléphone à d’autres données
jobfail: Un problème s’est produit et nous ne pouvons pas traiter votre demande
pour le moment. Veuillez réessayer.
rate_limited:
@@ -117,10 +118,10 @@ fr:
vérification de votre numéro de téléphone en ligne.
gpo:
button: Vérifier par courrier
- heading: Nous n’avons pas pu vérifier votre identité par téléphone
- option_try_again_later_html: 'Annuler et recommencer après %{time_left}'
- option_verify_by_mail_html: Vérifier par courrier, qui nécessite 5 à 10 jours.
- options_header: 'Vous Pouvez :'
+ heading: Nous n’avons pas pu confirmer votre identité par téléphone
+ option_try_again_later_html: Annuler et recommencer après %{time_left}
+ option_verify_by_mail_html: Vérifier par courrier, ce qui prend 5 à 10 jours.
+ options_header: 'Vous pouvez :'
timeout: Notre demande de vérification de vos renseignements a expiré. Veuillez
réessayer.
warning:
@@ -135,19 +136,19 @@ fr:
heading: Vérifier par courrier
how_long_it_takes_html: Cela prend 5 à 10 jours.
heading: Nous n’avons pas pu vous associer à ce numéro
- learn_more_link: 'Apprenez-en plus sur quel numéro de téléphone utiliser'
- next_steps_html: 'Essayez un autre numéro que vous utilisez
+ learn_more_link: En savoir plus sur quel numéro de téléphone utiliser
+ next_steps_html: Essayez un autre numéro que vous utilisez
souvent et depuis longtemps. Il peut s’agir d’un numéro
- professionnel ou personnel.'
- try_again_button: 'Essayez un autre numéro'
- you_entered: 'Tu as soumis:'
+ professionnel ou personnel.
+ try_again_button: Essayez un autre numéro
+ you_entered: 'Vous avez saisi :'
sessions:
exception: Une erreur interne s’est produite lors du traitement de votre demande.
- fail_html: 'Pour votre sécurité, nous limitons le nombre de fois où vous pouvez
- tenter de vérifier des informations personnelles en ligne.
- Réessayer dans %{timeout}.'
+ fail_html: Pour votre sécurité, nous limitons le nombre de fois où vous pouvez
+ tenter de vérifier des renseignements personnels en ligne.
+ Réessayez dans %{timeout}.
heading: Nous n’avons pas trouvé de dossiers correspondant à vos informations
- personnelles téléphoniques.
+ personnelles
warning: Veuillez vérifier les informations que vous avez saisies et réessayer.
Les erreurs les plus courantes sont un numéro de sécurité sociale ou
un code postal incorrect.
@@ -157,14 +158,14 @@ fr:
identité.
fail_html: Appelez le %{contact_number} et indiquez le
code d’erreur %{support_code}.
- heading: S’il vous plaît, appelez-nous
+ heading: Veuillez nous appeler
timeout: Le temps d’attente pour le traitement de votre demande est plus long
- que d’habitude Veuillez réessayer.
+ que d’habitude. Veuillez réessayer.
verify:
exit: Quitter %{app_name}
fail_link_html: Obtenez de l’aide auprès de %{sp_name}
fail_text: pour accéder aux services.
- heading: Nous n’avons pas pu vérifier votre identité
+ heading: Nous n’avons pas pu confirmer votre identité
forgot_password:
link_text: Mot de passe oublié?
modal_header: Êtes-vous sûr de ne pas pouvoir vous souvenir de votre mot de passe?
@@ -181,8 +182,8 @@ fr:
city: Ville
dob: Date de naissance
first_name: Prénom
- id_number: Numéro d’identification
- issuing_state: État émetteur
+ id_number: Numéro de la pièce d’identité
+ issuing_state: État d’émission
last_name: Nom de famille
password: Mot de passe
ssn: Numéro de sécurité sociale
@@ -190,77 +191,75 @@ fr:
state: État
zipcode: Code postal
gpo:
- alert_info: 'Nous avons envoyé une lettre avec votre code de vérification à:'
+ alert_info: 'Nous avons envoyé une lettre avec votre code de vérification à :'
alert_rate_limit_warning_html: Vous ne pouvez pas demander d’autres lettres pour
- le moment. Votre précédente demande de lettre a été effectuée le
+ le moment. Votre demande de lettre précédente a été effectuée le
%{date_letter_was_sent}.
- clear_and_start_over: Supprimez vos données et recommencez
+ clear_and_start_over: Effacez vos renseignements et recommencez
did_not_receive_letter:
form:
- instructions: Si vous avez reçu votre lettre, veuillez entrer le code à 10
- caractères figurant sur la lettre que vous avez reçue.
+ instructions: Si vous avez disposez de votre lettre, veuillez entrer le code à
+ 10 caractères qu’elle contient.
intro:
- be_patient_html: 'Veuillez noter que les lettres mettent jusqu’à 10
- jours pour arriver. Nous vous remercions de votre
- patience.'
- request_new_letter_link: demander une nouvelle
+ be_patient_html: Veuillez noter que les lettres mettent jusqu’à 10
+ jours pour arriver. Nous vous remercions de votre patience.
+ request_new_letter_link: demander une nouvelle lettre
request_new_letter_prompt_html: Si votre lettre n’est pas encore arrivée, vous
- pouvez en %{request_new_letter_link}.
- title: N’avez-vous pas reçu votre lettre?
+ pouvez %{request_new_letter_link}.
+ title: Vous n’avez pas reçu votre lettre ?
form:
- instructions: Entrez le code à 10 caractères figurant sur la lettre que vous
- avez reçue.
+ instructions: Saisissez le code à 10 caractères que contient la lettre.
otp_label: Code de vérification
submit: Confirmer le compte
title: Confirmez votre compte
- intro_html: 'Si vous avez reçu votre lettre, veuillez entrer votre code de
- vérification ci-dessous.
Si votre lettre n’est pas encore
- arrivée, veuillez être patient car les lettres mettent jusqu’à
- 10 jours pour arriver. Nous vous remercions de votre
+ intro_html: '
Si vous avez reçu votre lettre, veuillez saisir votre code de
+ vérification ci-dessous.
Les lettres mettent jusqu’à 10
+ jours pour arriver. Par conséquent, si votre lettre ne vous est
+ pas encore parvenue, veuillez patienter. Nous vous remercions de votre
patience.
'
request_another_letter:
- button: Faire une nouvelle demande
- instructions_html: Vous pouvez demander à faire une nouvelle demande si vous
- avez des problèmes avec votre lettre actuelle ou si elle n’est pas
- parvenue à destination. Les lettres mettent entre 5 et 10
- jours pour arriver.
+ button: Demander une autre lettre
+ instructions_html: Vous pouvez demander une nouvelle lettre si vous avez des
+ problèmes avec votre lettre actuelle ou si elle ne vous est jamais
+ parvenue. Les lettres mettent entre 5 et 10 jours
+ pour arriver.
learn_more_link: En savoir plus sur la vérification de votre adresse par courrier
- title: Voulez-vous faire une nouvelle demande?
+ title: Vous voulez demander une autre lettre ?
return_to_profile: Retourner à votre profil
- title: Content de vous revoir
- wrong_address: Pas la bonne adresse?
+ title: Bienvenue de nouveau
+ wrong_address: Pas la bonne adresse ?
images:
- come_back_later: Lettre avec un crochet
+ come_back_later: Lettre avec une coche
messages:
- activated_html: Votre identité a été vérifiée. Si vous souhaitez modifier votre
- information vérifiée, veuillez %{link_html}.
- activated_link: communiquer avec nous
- clear_and_start_over: Supprimer mes données et recommencer
- come_back_later_html: Les lettres mettent 5 à 10 jours pour
- arriver par le courrier de première classe d’USPS.
Une fois votre
- lettre arrivée, connectez-vous à %{app_name} et entrez votre code de
- vérification lorsque vous y êtes invité.
+ activated_html: Votre identité a été vérifiée. Si vous souhaitez modifier les
+ informations qui ont été vérifiées, veuillez %{link_html}.
+ activated_link: nous contacter
+ clear_and_start_over: Effacer mes renseignements et recommencer
+ come_back_later_html: 'Les lettres mettent 5 à 10 jours pour
+ arriver par courrier prioritaire via USPS.
Une fois votre lettre
+ arrivée, connectez-vous à %{app_name} et saisissez votre code de
+ vérification lorsque vous y êtes invité.
'
come_back_later_no_sp_html: Vous pouvez revenir à votre compte
%{app_name} pour le moment.
- come_back_later_password_html: N’oubliez pas votre mot de
+ come_back_later_password_html: 'N’oubliez pas votre mot de
passe.
Si vous réinitialisez votre mot de passe, le code
- de vérification figurant dans votre lettre ne correspondra plus et vous
- serez obligé de vérifier à nouveau votre identité.
- come_back_later_sp_html: Vous pouvez retourner à l’agence %{sp} pour le moment.
+ de vérification figurant dans votre lettre ne fonctionnera plus et vous
+ serez obligé de vérifier à nouveau votre identité.'
+ come_back_later_sp_html: Vous pouvez retourner à %{sp} pour le moment.
confirm: Nous avons sécurisé vos informations vérifiées
enter_password:
- by_mail_password_reminder_html: Mémorisez votre mot de passe.
+ by_mail_password_reminder_html: 'Mémorisez votre mot de passe.
Le code de vérification contenu dans votre lettre ne fonctionnera pas
- si vous réinitialisez votre mot de passe par la suite.
- message: '%{app_name} crypte vos informations avec votre mot de passe. Cela
+ si vous réinitialisez votre mot de passe par la suite.'
+ message: '%{app_name} chiffre vos informations avec votre mot de passe. Cela
signifie que vos informations sont sécurisées et que vous seul pourrez
y accéder ou les modifier.'
phone_verified: Nous avons vérifié votre numéro de téléphone
gpo:
address_on_file: 'Nous enverrons la lettre à l’adresse que vous avez vérifiée
- précédemment:'
+ précédemment :'
another_letter_on_the_way: Nous vous envoyons une autre lettre
- info_alert: Vous devrez attendre la livraison de votre lettre pour compléter la
+ info_alert: Vous devrez attendre de recevoir votre lettre pour achever la
vérification de votre identité.
learn_more_verify_by_mail: En savoir plus sur la vérification de votre adresse par courrier
letter_on_the_way: Nous vous envoyons une lettre
@@ -272,9 +271,9 @@ fr:
otp_delivery_method_description: Si vous avez saisi une ligne fixe ci-dessus,
veuillez sélectionner « Appel téléphonique » ci-dessous.
phone:
- alert_html: 'Entrez un numéro de téléphone qui est :'
- description: Nous vérifierons ce numéro dans nos archives et vous enverrons un
- code à usage unique. Ceci est pour aider à vérifier votre identité.
+ alert_html: 'Saisissez un numéro de téléphone qui est :'
+ description: Nous vérifierons ce numéro dans nos données et vous enverrons un
+ code à usage unique. L’objectif est d’aider à vérifier votre identité.
failed_number:
alert_text: Nous n’avons pas pu vous associer à ce numéro.
gpo_alert_html: Essayez un autre numéro ou %{link_html}.
@@ -284,59 +283,57 @@ fr:
- Basé aux Etats-Unis (y compris les territoires américains)
- Votre numéro principal (celui que vous utilisez le plus souvent)
return_to_profile: '‹ Revenir à votre profil %{app_name}'
- select_verification_with_sp: Afin de vous protéger des fraudes d’identité, vous
- ne pouvez pas utiliser votre compte au %{sp_name} tant que vous ne
- l’aurez pas activé en entrant votre code à usage unique.
- select_verification_without_sp: Afin de protéger votre compte des fraudes liées
- à l’identité, votre profil ne sera pas activé tant que vous n’aurez pas
- entré votre code à usage unique.
+ select_verification_with_sp: Afin de vous protéger contre l’usurpation
+ d’identité, nous vous contacterons pour confirmer que ce compte
+ %{sp_name} est légitime.
+ select_verification_without_sp: Afin de vous protéger contre l’usurpation
+ d’identité, nous vous contacterons pour confirmer que ce compte est
+ légitime.
sessions:
- enter_password_message: Lorsque vous entrez à nouveau votre mot de passe,
- %{app_name} crypte vos données pour vous assurer que personne ne peut
- y accéder.
- no_pii: SITE DE TEST - N’utilisez pas de véritables données personnelles (il
- s’agit d’une démonstration seulement) - SITE DE TEST
+ enter_password_message: Lorsque vous ressaisirez votre mot de passe, %{app_name}
+ protégera les informations que vous nous aurez données pour que vous
+ seul puissiez y accéder.
+ no_pii: SITE DE TEST - N’utilisez pas de véritables informations personnelles (à
+ des fins de démonstration uniquement) - SITE DE TEST
verify_info: Nous lisons vos informations à partir de votre pièce d’identité.
- Passez-les en revue et mettez-les à jour avant de les soumettre pour
+ Passez-les en revue et mettez-les à jour avant de les envoyer pour
vérification.
- verifying: Vérification…
+ verifying: Vérification en cours…
titles:
activated: Votre identité a déjà été vérifiée
come_back_later: Votre lettre est en route
- enter_password: Réviser et soumettre
+ enter_password: Révisez et validez
mail:
verify: Vérifiez votre adresse
- otp_delivery_method: Comment envoyer un code?
+ otp_delivery_method: Comment devrions-nous envoyer un code ?
session:
- enter_password: 'Saisissez à nouveau votre mot de passe %{app_name}'
- enter_password_letter: 'Saisissez à nouveau votre mot de passe %{app_name} pour
- envoyer votre lettre'
+ enter_password: Ressaisissez votre mot de passe %{app_name}
+ enter_password_letter: Ressaisissez votre mot de passe %{app_name} pour envoyer votre lettre
unavailable: Nous travaillons à la résolution d’une erreur
troubleshooting:
headings:
- need_assistance: 'Avez-vous besoin d’une assistance immédiate? Voici comment
- obtenir de l’aide:'
+ need_assistance: 'Vous avez besoin d’une assistance immédiate ? Voici comment
+ obtenir de l’aide :'
options:
contact_support: Contacter le service d’assistance de %{app_name}
- doc_capture_tips: Conseils pour prendre des photos claires de votre pièce d’identité
- get_help_at_sp: Demandez de l’aide à %{sp_name}
+ doc_capture_tips: Conseils pour prendre des photos nettes de votre pièce d’identité
+ get_help_at_sp: Obtenir de l’aide sur %{sp_name}
learn_more_verify_by_mail: En savoir plus sur la vérification de votre adresse par courrier
- learn_more_verify_by_phone: Apprenez-en plus sur quel numéro de téléphone utiliser
+ learn_more_verify_by_phone: En savoir plus sur quel numéro de téléphone utiliser
learn_more_verify_by_phone_in_person: En savoir plus sur la vérification de votre numéro de téléphone
learn_more_verify_in_person: En savoir plus sur la vérification en personne
supported_documents: En savoir plus sur les pièces d’identité acceptées
- verify_by_mail: Vérifiez plutôt votre adresse par courrier
+ verify_by_mail: Vérifier plutôt votre adresse par courrier
unavailable:
- exit_button: 'Quitter %{app_name}'
+ exit_button: Quitter %{app_name}
idv_explanation:
- with_sp_html: '%{sp} doit s’assurer que c’est bien vous — et
- non quelqu’un qui se fait passer pour vous.'
- without_sp: 'L’agence à laquelle vous essayez d’accéder doit s’assurer qu’il
- s’agit bien de vous, et non de quelqu’un qui se fait passer pour
- vous.'
+ with_sp_html: '%{sp} doit s’assurer qu’il s’agit bien de vous,
+ et non de quelqu’un qui se fait passer pour vous.'
+ without_sp: L’organisme auquel vous essayez d’accéder doit s’assurer qu’il
+ s’agit bien de vous, et non de quelqu’un qui se fait passer pour vous.
next_steps_html: '%{status_page_link_html} ou quittez le site %{app_name} et
réessayez plus tard.'
- status_page_link: 'Obtenez des mises à jour sur notre page de statut'
+ status_page_link: Obtenir les dernières informations sur notre page d’état des systèmes.
technical_difficulties: Malheureusement, nous rencontrons des difficultés
techniques et ne pouvons pas vérifier votre identité pour le moment.
warning:
@@ -349,14 +346,17 @@ fr:
personnelles
state_id:
cancel_button: Quitter %{app_name}
- explanation: |
- Malheureusement, nous rencontrons des difficultés techniques avec les pièces d’identité de votre État et ne sommes pas en mesure de vérifier vos informations en ce moment.
+ explanation: 'Malheureusement, nous rencontrons des difficultés techniques avec
+ les pièces d’identité de votre État et ne sommes pas en mesure de
+ vérifier vos informations pour le moment.
+
+ '
heading: Nous travaillons à la résolution d’une erreur
next_steps:
items_html:
- Réessayer maintenant ou
- Quitter %{app_name} et réessayer plus tard
- preamble: 'Vous pouvez:'
+ preamble: 'Vous pouvez :'
try_again_button: Réessayer
welcome:
no_js_header: Vous devez activer JavaScript pour vérifier votre identité.
diff --git a/config/locales/image_description/es.yml b/config/locales/image_description/es.yml
index bc6fa84ec34..2dba1fdaea8 100644
--- a/config/locales/image_description/es.yml
+++ b/config/locales/image_description/es.yml
@@ -3,15 +3,15 @@ es:
image_description:
camera_mobile_phone: Cámara del teléfono móvil que parpadea
delete: Bote de basura rojo
- error: x roja de error
- error_lock: candado rojo de error
+ error: X roja de error
+ error_lock: Candado rojo de error
info_pin_map: Imagen de un marcador de mapa
- info_question: signo de interrogación azul
+ info_question: Signo de interrogación azul
laptop: Computadora portátil
- laptop_and_phone: computadora portátil y celular
+ laptop_and_phone: Computadora portátil y teléfono
personal_key: Clave personal
phone_icon: Imagen de un teléfono
- post_office: Oficina de Correos
- totp_qrcode: Código QR para la aplicación de autenticación
- us_flag: Bandera de estados unidos
- warning: Letrero de precaución amarillo
+ post_office: Oficina de correos
+ totp_qrcode: Código QR para aplicación de autenticación
+ us_flag: Bandera de los EE. UU.
+ warning: Señal amarilla de precaución
diff --git a/config/locales/image_description/fr.yml b/config/locales/image_description/fr.yml
index cfbb10ebe9c..72d14efbbb3 100644
--- a/config/locales/image_description/fr.yml
+++ b/config/locales/image_description/fr.yml
@@ -1,17 +1,17 @@
---
fr:
image_description:
- camera_mobile_phone: Caméra flash d’un téléphone portable
+ camera_mobile_phone: Flash de l’appareil photo d’un téléphone portable
delete: Poubelle rouge
- error: erreur rouge x
- error_lock: verrouillage rouge des erreurs
- info_pin_map: Image d’une épingle à carte
- info_question: point d’interrogation bleu
+ error: Erreur X rouge
+ error_lock: Erreur cadenas rouge
+ info_pin_map: Image d’une épingle sur une carte
+ info_question: Point d’interrogation bleu
laptop: Ordinateur portable
- laptop_and_phone: ordinateur et téléphone portable
+ laptop_and_phone: Ordinateur et téléphone
personal_key: Clé personnelle
phone_icon: Image d’un téléphone
- post_office: Bureau de Poste
- totp_qrcode: Code QR pour l’application d’authentification
- us_flag: Drapeau américain
+ post_office: Bureau de poste
+ totp_qrcode: Code QR pour l’appli d’authentification
+ us_flag: Drapeau des États-Unis
warning: Panneau d’avertissement jaune
diff --git a/config/locales/in_person_proofing/es.yml b/config/locales/in_person_proofing/es.yml
index 0080118de18..34b14fa67d1 100644
--- a/config/locales/in_person_proofing/es.yml
+++ b/config/locales/in_person_proofing/es.yml
@@ -3,103 +3,100 @@ es:
in_person_proofing:
body:
barcode:
- cancel_link_text: Cancelar su código de barras
- close_window: Ya puede cerrar esta ventana
- deadline: Debe dirigirse a cualquier oficina de correos asociada antes del
+ cancel_link_text: Cancele su código de barras
+ close_window: Ya puede cerrar esta ventana.
+ deadline: Debe acudir a cualquier oficina de correos participante antes del
%{deadline}
- deadline_restart: Si supera la fecha límite, su información no se guardará y
- tendrá que reiniciar el proceso.
- email_sent: Enviamos toda esta información al correo electrónico que utilizó
- para iniciar sesión.
- learn_more: Entérese más sobre qué debe traer.
- location_details: Detalles de la ubicación
+ deadline_restart: Si vence el plazo, su información no se guardará y tendrá que
+ reiniciar el proceso.
+ email_sent: Enviamos esta información al correo electrónico que usó para iniciar
+ sesión.
+ learn_more: Obtenga más información sobre lo que debe llevar
+ location_details: Detalles del lugar
questions: '¿Tiene alguna pregunta?'
retail_hours: Horario de atención al público
retail_hours_closed: Cerrado
return_to_partner_html: Ahora puede %{link_html} para completar los pasos
- siguientes a los que tenga acceso hasta que se verifique su identidad.
- return_to_partner_link: cerrar sesión y regresar a %{sp_name}
+ siguientes a los que tenga acceso hasta que se haya verificado su
+ identidad.
+ return_to_partner_link: cerrar sesión y volver a %{sp_name}
what_to_expect: Qué esperar en la oficina de correos
cta:
- button: Inténtelo en persona
- prompt_detail: Es posible que pueda verificar su identidad en una oficina postal
- participante cercana.
+ button: Intentar en persona
+ prompt_detail: Es posible que pueda verificar su identidad en una oficina de
+ correos participante cercana.
expect:
heading: Qué esperar después de la visita
- info: Le enviaremos un correo electrónico para informarle si su verificación de
- identidad se realizó con éxito o no en las siguientes 24 horas después
- de su visita a la oficina de correos.
+ info: En las 24 horas siguientes a su visita a la oficina de correos, recibirá
+ un correo electrónico para informarle si se logró o no su verificación
+ de identidad.
location:
distance:
- one: '%{count} milla de distancia'
- other: '%{count} millas de distancia'
- heading: Información postal
- info: No necesita cita previa para verificar su identidad. Puede dirigirse a
- cualquier oficina de correos asociada.
+ one: A %{count} milla de distancia
+ other: A %{count} millas de distancia
+ heading: Información de la oficina de correos
+ info: No necesita hacer una cita para verificar su identidad. Puede acudir a
+ cualquier oficina de correos participante.
inline_error: Ingrese una dirección válida que incluya ciudad, estado y código postal
location_button: Seleccionar
po_search:
address_label: Dirección
address_search_hint: 'Ejemplo: 1234 N Example St., Allentown, PA 12345'
- address_search_label: Introduzca una dirección para encontrar una Oficina de
- Correos cercana a usted.
+ address_search_label: Introduzca una dirección para buscar una oficina de correos cercana.
city_label: Ciudad
is_searching_message: Buscando oficinas de correos…
- none_found: Lo sentimos, no hay Oficinas de Correos participantes en un radio de
- 50 millas de la %{address}
- none_found_tip: Puede buscar utilizando una dirección diferente, o añadir fotos
- de su documento de identidad para intentar verificar su identidad en
- línea de nuevo.
+ none_found: Lo sentimos, no hay oficinas de correos participantes a menos de
+ 50 millas de %{address}.
+ none_found_tip: Puede buscar usando una dirección diferente, o agregue fotos de
+ su identificación para intentar verificar su identidad en línea de
+ nuevo.
po_search_about: Puede verificar su identidad en persona en una oficina de
- correos local de los Estados Unidos.
+ correos participante de los Estados Unidos.
results_description:
- one: Hay 1 oficina de correos participante en un radio de 50 millas de la
+ one: Hay una oficina de correos participante a menos de 50 millas de %{address}.
+ other: Hay %{count} oficinas de correos participantes a menos de 50 millas de
%{address}.
- other: Hay %{count} de oficinas de correos participantes en un radio de 50
- millas de la %{address}.
- results_instructions: Seleccione una ubicación de la oficina de correos a
- continuación, o busque de nuevo utilizando una dirección diferente.
+ results_instructions: Seleccione una oficina de correos a continuación, o busque
+ de nuevo usando una dirección diferente.
search_button: Buscar
state_label: Estado
zipcode_label: Código postal
retail_hours_heading: Horario de atención al público
- retail_hours_sat: 'Sáb:'
- retail_hours_sun: 'Dom:'
- retail_hours_weekday: 'De Lunes a Viernes:'
+ retail_hours_sat: 'Sábado:'
+ retail_hours_sun: 'Domingo:'
+ retail_hours_weekday: 'De lunes a viernes:'
selection: 'Esta es la oficina que seleccionó:'
prepare:
privacy_disclaimer: '%{app_name} es un sitio web seguro del gobierno. Nosotros y
- el Servicio Postal de los Estados Unidos utilizamos sus datos para
- verificar su identidad.'
+ el Servicio Postal de los EE. UU. utilizamos sus datos para verificar
+ su identidad.'
privacy_disclaimer_link: Obtenga más información sobre la privacidad y la seguridad.
- privacy_disclaimer_questions: '¿Preguntas?'
- verify_step_about: 'Complete los siguientes pasos para generar el código de
- barras que llevará a la oficina de correos:'
- verify_step_enter_phone: Introduzca su número de teléfono principal o el que use
+ privacy_disclaimer_questions: '¿Tiene alguna pregunta?'
+ verify_step_about: 'Siga los siguientes pasos para generar el código de barras
+ que llevará a la oficina de correos:'
+ verify_step_enter_phone: Ingrese su número de teléfono principal o el que use
con más frecuencia.
verify_step_enter_pii: Ingrese su nombre, fecha de nacimiento, número de
- identificación emitido por el estado, dirección y número de la
- Seguridad Social.
- verify_step_post_office: Encuentre una oficina de correos participantes cercana a usted.
+ identificación emitida por el estado, dirección y número de Seguro
+ Social.
+ verify_step_post_office: Busque una oficina de correos participantes cercana.
state_id:
alert_message: 'Su identificación emitida por el estado no debe estar vencida.
- Se aceptan las siguientes formas de identificación:'
+ Se aceptan estas formas de identificación:'
id_types:
- Licencia para conducir estatal
- Identificación estatal que no sea la licencia para conducir
info_html: Ingrese la información exactamente como aparece en su
- documento de identidad emitido por el estado. Utilizaremos
- esta información para confirmar que coincide con su documento en
+ identificación emitida por el estado. Usaremos esta
+ información para confirmar que coincida con su identificación en
persona.
- learn_more_link: Obtenga más información sobre los documentos de identificación
- aceptados.
- questions: '¿Alguna pregunta?'
+ learn_more_link: Obtenga más información sobre las formas de identificación aceptadas.
+ questions: '¿Tiene alguna pregunta?'
form:
address:
errors:
- unsupported_chars: 'Los siguientes caracteres no pueden ser leídos por nuestro
- sistema: %{char_list}. Inténtelo nuevamente usando sustitutos para
- estos caracteres.'
+ unsupported_chars: 'Nuestro sistema no puede leer estos caracteres:
+ %{char_list}. Inténtelo de nuevo usando caracteres sustitutos.'
state_prompt: '- Seleccione -'
state_id:
address1: Línea de dirección 1
@@ -114,64 +111,65 @@ es:
dob: Fecha de nacimiento
dob_hint: 'Ejemplo: 4 28 1986'
errors:
- unsupported_chars: 'Los siguientes caracteres no pueden ser leídos por nuestro
- sistema: %{char_list}. Inténtelo nuevamente usando los caracteres de
- su documento de identidad.'
+ unsupported_chars: 'Nuestro sistema no puede leer estos caracteres:
+ %{char_list}. Inténtelo de nuevo usando los caracteres de su
+ identificación.'
first_name: Nombre
- identity_doc_address_state: Estado emisor
+ identity_doc_address_state: Estado
identity_doc_address_state_prompt: '- Seleccione -'
last_name: Apellido
memorable_date:
errors:
date_of_birth:
- missing_month_day_year: Introduce una fecha de nacimiento
- range_min_age: Debe tener más de 13 años para usar %{app_name}
- range_overflow: Ingrese una fecha que esté en el pasado
- same_address_as_id: ¿Vive actualmente en la dirección que figura en su documento
- estatal de identidad?
+ missing_month_day_year: Ingrese una fecha de nacimiento
+ range_min_age: Debe ser mayor de 13 años para usar %{app_name}
+ range_overflow: Ingrese una fecha ya transcurrida
+ same_address_as_id: '¿Vive actualmente en la dirección que figura en su
+ identificación emitida por el estado?'
same_address_as_id_no: No, vivo en otra dirección
- same_address_as_id_yes: Sí, vivo en la misma dirección
+ same_address_as_id_yes: Sí, vivo en la misma dirección que figura en mi
+ identificación emitida por el estado
state_id_jurisdiction: Estado emisor
state_id_jurisdiction_hint: Este es el estado que emitió su identificación
state_id_jurisdiction_prompt: '- Seleccione -'
- state_id_number: Número de identidad
- state_id_number_florida_hint_html: 'Este es el número que figura en su ID con
- una letra y 12 números. Ejemplo: D123-456-78-901-2'
- state_id_number_hint: 'Puede incluir letras, números y los siguientes símbolos:'
- state_id_number_hint_asterisks: 'asteriscos'
+ state_id_number: Número de identificación
+ state_id_number_florida_hint_html: Este es el número que figura en su ID con una
+ letra y 12 números. Ejemplo: D123-456-78-901-2
+ state_id_number_hint: 'Puede incluir letras, números y los siguientes caracteres:'
+ state_id_number_hint_asterisks: asteriscos
state_id_number_hint_dashes: guiones
- state_id_number_hint_forward_slashes: 'barras diagonal'
- state_id_number_hint_spaces: 'espacios'
- state_id_number_texas_hint: Este es el número de 8 dígitos de su ID. Introduzca
- sólo números en este campo.
+ state_id_number_hint_forward_slashes: barras diagonales
+ state_id_number_hint_spaces: espacios
+ state_id_number_texas_hint: Este es el número de 8 dígitos de su identificación.
+ Ingrese únicamente números en este campo.
zipcode: Código postal
headings:
- address: Ingresa tu domicilio actual
- barcode: Muestre este código de barras y su documento nacional de identidad en
- una oficina de correos para terminar de verificar su identidad
- cta: Intente verificar su ID en persona
- id_address: Domicilio que consta en su identificación
+ address: Ingrese su domicilio actual
+ barcode: Muestre este código de barras y su identificación emitida por el estado
+ en una oficina de correos para terminar de verificar su identidad.
+ cta: Intente verificar su identidad en persona
+ id_address: Domicilio que figura en su identificación
po_search:
- location: Encuentre una oficina de correos participante
+ location: Busque una oficina de correos participante
prepare: Verifique su identidad en persona
state_id_milestone_2: Ingrese la información de su identificación emitida por el estado
- switch_back: Vuelva a su computadora para prepararse para verificar su identidad
- en persona
- update_address: Actualizar su dirección actual
- update_state_id: Actualizar la información de su cédula de identidad
+ switch_back: Vuelva a su computadora para preparar la verificación de su
+ identidad en persona
+ update_address: Actualice su dirección actual
+ update_state_id: Actualice la información de su identificación
process:
barcode:
caption_label: Código de registro
heading: Muestre su código de barras de %{app_name}
- info: El empleado deberá escanear el código de barras que aparece en la parte
+ info: El empleado debe escanear el código de barras que aparece en la parte
superior de esta página. Puede imprimir esta página o mostrarla en su
dispositivo móvil.
state_id:
heading: Muestre su licencia de conducir estatal o su tarjeta de identificación
- estatal de no conductor
- info: No debe estar caducada. Actualmente no aceptamos otras formas de
- identificación, como pasaportes e identificaciones militares.
+ estatal que no sea una licencia de conducir
+ info: No debe estar vencida. Actualmente no aceptamos otras formas de
+ identificación, como pasaportes o identificaciones militares.
what_to_do:
heading: Colóquese en cualquier fila
- info: Dígale al empleado de la oficina de correos que está aquí para verificar
- su identidad con %{app_name}.
+ info: Diga al empleado de la oficina de correos que desea verificar su identidad
+ con %{app_name}.
diff --git a/config/locales/in_person_proofing/fr.yml b/config/locales/in_person_proofing/fr.yml
index 9412482e422..e1e081af887 100644
--- a/config/locales/in_person_proofing/fr.yml
+++ b/config/locales/in_person_proofing/fr.yml
@@ -3,177 +3,178 @@ fr:
in_person_proofing:
body:
barcode:
- cancel_link_text: Annulez votre code-barres
+ cancel_link_text: Annuler votre code-barres
close_window: Vous pouvez maintenant fermer cette fenêtre
deadline: Vous devez vous rendre dans un bureau de poste participant avant le
%{deadline}
- deadline_restart: Si vous partez après la date limite, vos informations ne
+ deadline_restart: Si vous y allez après cette date limite, vos informations ne
seront pas sauvegardées et vous devrez recommencer le processus.
- email_sent: Nous avons envoyé ces informations à l’adresse électronique que vous
- avez utilisée pour vous connecter.
+ email_sent: Nous avons envoyé ces informations à l’adresse e-mail que vous avez
+ utilisée pour vous connecter.
learn_more: En savoir davantage sur ce qu’il faut apporter.
location_details: Détails de l’emplacement
- questions: Des questions?
+ questions: Des questions ?
retail_hours: Heures d’ouverture
retail_hours_closed: Fermé
- return_to_partner_html: Vous pouvez %{link_html} afin d’effectuer toutes les
- étapes suivantes auxquelles vous pouvez accéder jusqu’à ce que votre
- identité ait été confitmée.
- return_to_partner_link: maintenant vous déconnecter et retourner à %{sp_name}
+ return_to_partner_html: Vous pouvez maintenant %{link_html} afin d’effectuer
+ toutes les étapes suivantes auxquelles vous pouvez accéder jusqu’à ce
+ que votre identité ait été vérifiée.
+ return_to_partner_link: vous déconnecter et retourner à %{sp_name}
what_to_expect: À quoi s’attendre au bureau de poste
cta:
button: Essayer en personne
- prompt_detail: Vous pourrez peut-être vérifier votre identité dans un bureau de
+ prompt_detail: Vous pourrez peut-être confirmer votre identité dans un bureau de
poste participant près de chez vous.
expect:
heading: Que faire après votre visite
- info: Dans les 24 heures suivant votre visite au bureau de poste, nous vous
- enverrons un courrier électronique pour vous indiquer si votre
- vérification d’identité a réussi ou échoué.
+ info: Nous vous enverrons un e-mail pour vous informer de la réussite ou de
+ l’échec de la vérification de votre identité dans les 24 heures
+ suivant votre visite au bureau de poste.
location:
distance:
- one: 'à %{count} mile'
- other: 'à %{count} miles'
+ one: à %{count} mile
+ other: à %{count} miles
heading: Informations sur les bureaux de poste
info: Aucun rendez-vous n’est nécessaire pour vérifier votre identité. Vous
pouvez vous rendre dans n’importe quel bureau de poste participant.
- inline_error: Saisissez une adresse valide avec la ville, l’état et le code postal
+ inline_error: Saisissez une adresse valide avec la ville, l’État et le code postal
location_button: Sélectionner
po_search:
address_label: Adresse
- address_search_hint: 'Exemple: 1234 N Example St., Allentown, PA 12345'
- address_search_label: Entrez une adresse pour trouver un bureau de poste près de chez vous.
+ address_search_hint: 'Exemple : 1234 N Example St., Allentown, PA 12345'
+ address_search_label: Saisissez une adresse pour trouver un bureau de poste près
+ de chez vous.
city_label: Ville
- is_searching_message: Recherche des emplacements de bureau de poste…
+ is_searching_message: Recherche des bureaux de poste en cours…
none_found: Désolé, il n’y a pas de bureaux de poste participants dans un rayon
- de 50 miles de la ville %{address}
+ de 50 miles de %{address}
none_found_tip: Vous pouvez effectuer une recherche en utilisant une autre
adresse, ou ajouter des photos de votre pièce d’identité pour
- essayer de vérifier à nouveau votre identité en ligne.
- po_search_about: Vous pouvez vérifier votre identité en personne dans un bureau
+ essayer de confirmer à nouveau votre identité en ligne.
+ po_search_about: Vous pouvez confirmer votre identité en personne dans un bureau
de poste américain local participant.
results_description:
- one: Il y a 1 bureau de poste participant dans un rayon de 50 miles autour de
+ one: Il y a 1 bureau de poste participant dans un rayon de 50 miles de
%{address}.
- other: Il y a %{count} de bureaux de poste participants dans un rayon de 50
- miles autour de %{address}.
- results_instructions: Sélectionnez un emplacement de bureau de poste ci-dessous,
- ou effectuez une nouvelle recherche en utilisant une autre adresse.
+ other: Il y a %{count} bureaux de poste participants dans un rayon de 50 miles
+ de %{address}.
+ results_instructions: Sélectionnez un bureau de poste ci-dessous ou effectuez
+ une nouvelle recherche en utilisant une autre adresse.
search_button: Rechercher
state_label: État
zipcode_label: Code postal
- retail_hours_heading: Heures de vente au détail
- retail_hours_sat: 'Sam:'
- retail_hours_sun: 'Dim:'
- retail_hours_weekday: 'Lundi à Vendredi:'
- selection: 'Il s’agit du bureau que vous avez sélectionné:'
+ retail_hours_heading: Heures d’ouverture
+ retail_hours_sat: 'Sam :'
+ retail_hours_sun: 'Dim :'
+ retail_hours_weekday: 'Du lundi au vendredi :'
+ selection: 'Voici le bureau que vous avez sélectionné :'
prepare:
- privacy_disclaimer: '%{app_name} est un site gouvernemental sécurisé. Nous et le
- service postal américain utilisons vos données pour vérifier votre
- identité.'
+ privacy_disclaimer: '%{app_name} est un site Web sécurisé de l’administration.
+ La Poste des États-Unis et nous utilisons vos données pour confirmer
+ votre identité.'
privacy_disclaimer_link: En savoir plus sur la confidentialité et la sécurité.
- privacy_disclaimer_questions: Vous avez des questions?
+ privacy_disclaimer_questions: Des questions ?
verify_step_about: 'Suivez les étapes ci-dessous pour générer le code-barres que
- vous emporterez avec vous au bureau de poste:'
- verify_step_enter_phone: Entrez votre numéro de téléphone principal ou celui que
- vous utilisez le plus souvent.
- verify_step_enter_pii: Saisissez votre nom, votre date de naissance, votre
- document d’identité délivré par l’État, votre adresse et votre numéro
- de sécurité sociale.
- verify_step_post_office: Trouver un bureau de poste participant.
+ vous emporterez avec vous au bureau de poste :'
+ verify_step_enter_phone: Saisissez votre numéro de téléphone principal ou celui
+ que vous utilisez le plus souvent.
+ verify_step_enter_pii: Saisissez votre nom, votre date de naissance, le numéro
+ de votre pièce d’identité délivrée par l’État, votre adresse et votre
+ numéro de sécurité sociale.
+ verify_step_post_office: Trouver un bureau de poste participant près de chez vous.
state_id:
- alert_message: 'Votre carte d’identité délivrée par l’État ne doit pas être
- périmée. Les pièces d’identité acceptées sont:'
+ alert_message: 'Votre pièce d’identité délivrée par un État ne doit pas être
+ périmée. Les pièces d’identité acceptées sont les suivantes :'
id_types:
- Permis de conduire national
- Carte d’identité nationale de non-conducteur
info_html: Saisissez les informations exactement comme elles figurent
- sur votre document d’identité nationale. Nous utiliserons ces
- informations pour confirmer qu’elles correspondent à votre pièce
- d’identité en personne.
- learn_more_link: En savoir plus sur les formes de pièces d’identité acceptées.
- questions: Avez-vous des questions?
+ sur votre pièce d’identité. Nous utiliserons ces informations
+ pour confirmer qu’elles correspondent à votre pièce d’identité en
+ personne.
+ learn_more_link: En savoir plus sur les pièces d’identité acceptées.
+ questions: Des questions ?
form:
address:
errors:
unsupported_chars: 'Notre système ne parvient pas à lire les caractères suivants
- : %{char_list}. Veuillez réessayer en utilisant d’autres caractères
- alternatifs.'
+ : %{char_list}. Veuillez réessayer en utilisant d’autres
+ caractères.'
state_prompt: '- Sélectionnez -'
state_id:
address1: Adresse ligne 1
- address1_hint: 'Exemple: 150 Calle A Apt 3'
+ address1_hint: 'Exemple : 150 Calle A Apt 3'
address2: Adresse ligne 2
- address2_hint: 'Exemple: URB Las Gladiolas ou COND Miraflor'
+ address2_hint: 'Exemple : URB Las Gladiolas ou COND Miraflor'
city: Ville
date_hint:
- day: 'Exemple: 28'
- month: 'Exemple: 4'
- year: 'Exemple: 1986'
+ day: 'Exemple : 28'
+ month: 'Exemple : 4'
+ year: 'Exemple : 1986'
dob: Date de naissance
- dob_hint: 'Exemple: 4 28 1986'
+ dob_hint: 'Exemple : 4 28 1986'
errors:
unsupported_chars: 'Notre système ne parvient pas à lire les caractères suivants
: %{char_list}. Veuillez réessayer en utilisant les caractères de
- votre carte d’identité.'
+ votre pièce d’identité.'
first_name: Prénom
- identity_doc_address_state: État émetteur
+ identity_doc_address_state: État
identity_doc_address_state_prompt: '- Sélectionnez -'
last_name: Nom de famille
memorable_date:
errors:
date_of_birth:
- missing_month_day_year: Entrez une date de naissance
+ missing_month_day_year: Saisissez une date de naissance
range_min_age: Vous devez avoir plus de 13 ans pour utiliser %{app_name}
- range_overflow: Entrez une date qui est dans le passé
+ range_overflow: Saisissez une date dans le passé
same_address_as_id: Vivez-vous actuellement à l’adresse indiquée sur votre pièce
- d’identité émise par l’État?
+ d’identité émise par l’État ?
same_address_as_id_no: Non, j’habite à une adresse différente
same_address_as_id_yes: Oui, j’habite à l’adresse indiquée sur ma pièce
d’identité émise par l’État
- state_id_jurisdiction: État émetteur
+ state_id_jurisdiction: État d’émission
state_id_jurisdiction_hint: Il s’agit de l’État qui a émis votre pièce d’identité
state_id_jurisdiction_prompt: '- Sélectionnez -'
- state_id_number: Numéro d’identification
- state_id_number_florida_hint_html: 'Il s’agit du numéro de votre carte
- d’identité comportant une lettre et 12 chiffres.
- Exemple: D123-456-78-901-2'
- state_id_number_hint: 'Il peut s’agir de lettres, de chiffres et des symboles suivants:'
- state_id_number_hint_asterisks: 'des astérisques'
- state_id_number_hint_dashes: 'des tirets'
- state_id_number_hint_forward_slashes: 'des barres obliques'
- state_id_number_hint_spaces: 'des espaces'
+ state_id_number: Numéro de la pièce d’identité
+ state_id_number_florida_hint_html: Il s’agit du numéro de votre carte d’identité
+ comportant une lettre et 12 chiffres.
+ Exemple: D123-456-78-901-2
+ state_id_number_hint: 'Il peut comprendre des lettres, des chiffres et les
+ symboles suivants :'
+ state_id_number_hint_asterisks: des astérisques
+ state_id_number_hint_dashes: des tirets
+ state_id_number_hint_forward_slashes: des barres obliques avant
+ state_id_number_hint_spaces: des espaces
state_id_number_texas_hint: Il s’agit du numéro à huit chiffres figurant sur
- votre carte d’identité. Entrez uniquement des chiffres dans ce champ.
+ votre pièce d’identité. Dans ce champ, ne saisissez que des chiffres.
zipcode: Code postal
headings:
- address: Indiquez votre adresse résidentielle actuelle
+ address: Saisissez votre adresse résidentielle actuelle
barcode: Présentez ce code-barres et votre pièce d’identité délivrée par l’État
à un bureau de poste pour terminer la vérification de votre identité
- cta: Essayez de vérifier votre identité en personne
+ cta: Essayez de confirmer votre identité en personne
id_address: Adresse sur votre pièce d’identité
po_search:
- location: Trouver un bureau de poste participant
+ location: Trouvez un bureau de poste participant
prepare: Confirmez votre identité en personne
- state_id_milestone_2: Saisissez les informations figurant sur votre carte
+ state_id_milestone_2: Saisissez les informations figurant sur votre pièce
d’identité délivrée par l’État
- switch_back: Retournez sur votre ordinateur pour vous préparer à vérifier votre
+ switch_back: Revenez à votre ordinateur pour vous préparer à confirmer votre
identité en personne
- update_address: Mettre à jour votre adresse actuelle
- update_state_id: Mettre à jour les informations figurant sur votre document d’identité
+ update_address: Mettez à jour votre adresse actuelle
+ update_state_id: Mettez à jour les informations figurant sur votre document d’identité
process:
barcode:
caption_label: Code d’inscription
heading: Montrez votre code-barres %{app_name}
- info: Le vendeur doit scanner votre code-barres en haut de cette page. Vous
+ info: Le préposé doit scanner votre code-barres en haut de cette page. Vous
pouvez imprimer cette page ou la montrer sur votre appareil mobile.
state_id:
- heading: Présentez votre permis de conduire de l’État ou votre carte d’identité
- de non-conducteur de l’État
- info: Ce document ne doit pas avoir expiré. Nous n’acceptons actuellement aucune
- autre forme d’identification, comme les passeports et les cartes
- d’identité militaires.
+ heading: Présentez votre permis de conduire ou votre carte d’identité de l’État
+ info: Ce document ne doit pas être périmé. Nous n’acceptons actuellement aucune
+ autre pièce d’identité, comme les passeports et les cartes d’identité
+ militaires.
what_to_do:
heading: Faites la queue
- info: Dites à l’employé du bureau de poste que vous êtes ici pour vérifier votre
- identité avec %{app_name}.
+ info: Dites au préposé du bureau de poste que vous êtes là pour confirmer votre
+ identité auprès de %{app_name}.
diff --git a/config/locales/instructions/es.yml b/config/locales/instructions/es.yml
index 37a4532fb86..c1d6aea3efb 100644
--- a/config/locales/instructions/es.yml
+++ b/config/locales/instructions/es.yml
@@ -4,102 +4,100 @@ es:
account:
reactivate:
begin: Empecemos.
- explanation: 'Cuando creó su cuenta le dimos una lista de palabras y le pedimos
- que las guardara en un lugar seguro. Se parecía a esto:'
- intro: Tomamos medidas adicionales para mantener su información personal segura
- y privada, por lo que restablecer su contraseña requiere un pequeño
- esfuerzo adicional.
+ explanation: 'Cuando creó su cuenta, le dimos una lista de palabras y le pedimos
+ que las guardara en un lugar seguro. Era similar a esto:'
+ intro: Adoptamos medidas adicionales para mantener su información personal
+ segura y privada, por lo que restablecer su contraseña requiere un
+ poco más de trabajo.
modal:
- copy: Si no tiene su clave personal, verifique su identidad nuevamente.
- heading: '¿No tienes tu clave personal?'
+ copy: Si no tiene su clave personal, tendrá que volver a verificar su identidad.
+ heading: '¿No tiene su clave personal?'
with_key: '¿Tiene su clave personal?'
forgot_password:
- close_window: Puede cerrar esta ventana del navegador después que haya
+ close_window: Puede cerrar esta ventana del navegador después de haber
restablecido su contraseña.
- go_back_to_mobile_app: Para continuar, por favor regrese a la %{friendly_name}
- app e inicie una sesión.
+ go_back_to_mobile_app: Para continuar, vuelva a la aplicación %{friendly_name} e inicie sesión.
mfa:
authenticator:
- confirm_code_html: Ingrese el código de su app de autenticación. Si tiene varias
- cuentas configuradas en su app, ingrese el código correspondiente a
- %{app_name_html}.
+ confirm_code_html: Ingrese el código de su aplicación de autenticación. Si tiene
+ varias cuentas configuradas en su aplicación, ingrese el código
+ correspondiente a %{app_name_html}.
manual_entry: O ingrese este código manualmente en su aplicación de autenticación
piv_cac:
account_not_found_html: '%{sign_in} con su dirección de
- correo electrónico y contraseña. Luego agregue su PIV/CAC a su
- cuenta.
¿No tiene una cuenta %{app_name}?
- %{create_account}
'
- add_from_sign_in_html: ' Instrucciones: inserte su PIV o CAC
- en “AGREGAR PIV / CAC” . Tendrá que elegir
- un certificado (el correcto probablemente tenga su nombre) e
- ingrese su PIN (su PIN se creó cuando configuró su
- PIV / CAC )'
- already_associated_html: Elige un certificado de una PIV/CAC distinta o ponte en
- contacto con el administrador para confirmar que tu PIV/CAC está al
- día. Si cree que se trata de un error, %{try_again_html}.
- back_to_sign_in: Regrese para iniciar sesión
- confirm_piv_cac: Presenta la PIV/CAC que asociaste con tu cuenta.
- did_not_work_html: '%{please_try_again_html}. Comuníquese con el encargado de su
- organismo si persiste este problema.'
- http_failure: El servidor tardó demasiado en responder. Inténtalo de nuevo.
- no_certificate_html: Asegúrese de su PIV/CAC esté conectada e %{try_again_html}.
- Comuníquese con el encargado de su organismo si persiste este
- problema.
+ correo electrónico y su contraseña. Luego, agregue su tarjeta PIV o
+ CAC a su cuenta. ¿No tiene una cuenta de
+ %{app_name}? %{create_account}
'
+ add_from_sign_in_html: ' Instrucciones: Inserte su tarjeta PIV
+ o CAC en “AGREGAR TARJETA PIV O CAC” . Tendrá que
+ elegir un certificado (es probable que el correcto
+ tenga su nombre) e ingrese su PIN (su PIN se creó
+ cuando configuró su tarjeta PIV o CAC).'
+ already_associated_html: Elija un certificado de una tarjeta PIV o CAC diferente
+ y contacte con el administrador para confirmar que su tarjeta PIV o
+ CAC está al día. Si cree que se trata de un error, %{try_again_html}.
+ back_to_sign_in: Vuelva a iniciar sesión
+ confirm_piv_cac: Presente la tarjeta PIV o CAC que asoció con su cuenta.
+ did_not_work_html: '%{please_try_again_html}. Contacte con el administrador de
+ su agencia si persiste este problema.'
+ http_failure: El servidor tardó demasiado en responder. Vuelva a intentarlo.
+ no_certificate_html: Asegúrese de que su tarjeta PIV o CAC esté conectada y
+ %{try_again_html}. Contacte con el administrador de su agencia si
+ persiste este problema.
not_auth_cert_html: El certificado que seleccionó no es válido para esta cuenta.
- %{please_try_again_html} con un certificado diferente. Comuníquese con
- el encargado de su organismo si persiste este problema.
- please_try_again: Vuelva a intentarlo
- sign_in_html: Asegúrese de que tenga una cuenta %{app_name} y
- haya configurado PIV/CAC como método de autenticación
- de dos factores.
- step_1: Darle un apodo
- step_1_info: Si agrega más de un PIV / CAC, sabrá cuál es cuál.
- step_2: Inserte su PIV/CAC en su lector de tarjetas
- step_3: Agregue su PIV/CAC
- step_3_info_html: Tendrá que elegir un certificado (el
- correcto probablemente tenga su nombre) e ingrese su PIN
- (su PIN se creó cuando configuró su PIV/CAC)
- try_again: inténtelo de nuevo
+ %{please_try_again_html} con un certificado diferente. Contacte con el
+ administrador de su agencia si persiste este problema.
+ please_try_again: vuelva a intentarlo
+ sign_in_html: Asegúrese de que tiene una cuenta de %{app_name}
+ y de que configuró una tarjeta PIV o CAC como método
+ de autenticación de dos factores.
+ step_1: Asígnele un alias.
+ step_1_info: Si agrega más de una tarjeta PIV o CAC, podrá distinguirlas.
+ step_2: Inserte su tarjeta PIV o CAC en su lector de tarjetas.
+ step_3: Agregue su tarjeta PIV o CAC.
+ step_3_info_html: Tendrá que elegir un certificado (es
+ probable que el correcto tenga su nombre) e ingrese su PIN
+ (su PIN se creó cuando configuró su tarjeta PIV o CAC)
+ try_again: vuelva a intentarlo
sms:
- number_message_html: Enviamos un mensaje de texto (SMS) con un código único al
- %{number_html}. Este código caducará en %{expiration} minutos.
+ number_message_html: Enviamos un mensaje de texto (SMS) con un código de un solo
+ uso al %{number_html}. Este código vence en %{expiration} minutos.
voice:
- number_message_html: Realizamos una llamada con un código de un solo uso al
- %{number_html}. Este código expirará en %{expiration} minutos.
+ number_message_html: Hicimos una llamada con un código de un solo uso al
+ %{number_html}. Este código vence en %{expiration} minutos.
webauthn:
confirm_webauthn: Presente la clave de seguridad que asoció con su cuenta.
- confirm_webauthn_platform_html: Puede autenticarse de la misma forma que
- desbloquea el dispositivo, ya sea con su rostro o huella dactilar, una
- contraseña u otro método.
Si ha utilizado un administrador de
+ confirm_webauthn_platform_html: '
Puede autenticarse de la misma forma que
+ desbloquea el dispositivo, sea con su rostro o huella dactilar,
+ contraseña u otro método.
Si usó un administrador de
contraseñas para configurar el desbloqueo facial o táctil, puede
autenticarse desde cualquier dispositivo que utilice ese administrador
- de contraseñas. De lo contrario, utilice el mismo dispositivo en el
- que configuró el desbloqueo facial o táctil.
+ de contraseñas. De lo contrario, use el mismo dispositivo con el que
+ configuró el desbloqueo facial o táctil.'
webauthn_platform:
- learn_more_help: Conozca más sobre el desbloqueo facial o táctil
+ learn_more_help: Obtenga más información sobre el desbloqueo facial o táctil
wrong_number: '¿Ingresó el número de teléfono equivocado?'
password:
- forgot: '¿No sabe su contraseña? Restablézcala después de confirmar su email.'
- help_text: Evite reutilizar las contraseñas de sus otras cuentas, como las
- bancarias, las de correo electrónico y las de redes sociales. No incluya
- palabras de su dirección de correo electrónico.
- help_text_header: Consejos de seguridad de contraseña
+ forgot: '¿No sabe su contraseña? Restablézcala después de confirmar su dirección
+ de correo electrónico.'
+ help_text: Evite usar las mismas contraseñas de sus otras cuentas, como las de
+ su banco, correo electrónico y redes sociales. No incluya palabras de su
+ dirección de correo electrónico.
+ help_text_header: Consejos para la seguridad de las contraseñas
info:
- lead_html: Su contraseña deberá tener %{min_length} caracteres
- o más. No use expresiones comunes ni caracteres repetidos, como “abc”
- o “111″.
+ lead_html: Su contraseña debe tener %{min_length} caracteres o
+ más. No use frases comunes ni caracteres repetidos, como abc o 111.
password_key: Si verificó su identidad con esta cuenta, necesita su clave
- personal de 16 caracteres para restablecer su contraseña. Si no cuenta
- con ella, de todos modos puede restablecer su contraseña y luego volver
- a verificar su identidad.
+ personal de 16 caracteres para restablecer su contraseña. Si no tiene su
+ clave, puede aún restablecer su contraseña y luego volver a verificar su
+ identidad.
strength:
0: Muy débil
1: Débil
2: Promedio
3: Buena
- 4: 'Muy buena'
- intro: 'Seguridad de la contraseña:'
- sp_handoff_bounced: Su inicio de sesión fue exitoso, pero %{sp_name} lo envió de
- regreso a %{app_name}. Póngase en contacto con %{sp_link} para obtener
- ayuda.
+ 4: Muy buena
+ intro: 'Seguridad de la contraseña: '
+ sp_handoff_bounced: Logró iniciar sesión, pero %{sp_name} lo envió de nuevo a
+ %{app_name}. Contacte con %{sp_link} para obtener ayuda.
sp_handoff_bounced_with_no_sp: su proveedor de servicios
diff --git a/config/locales/instructions/fr.yml b/config/locales/instructions/fr.yml
index ec2e74cfe48..cf8cb8e0734 100644
--- a/config/locales/instructions/fr.yml
+++ b/config/locales/instructions/fr.yml
@@ -3,107 +3,103 @@ fr:
instructions:
account:
reactivate:
- begin: Démarrons.
+ begin: Commençons.
explanation: 'Lorsque vous avez créé votre compte, nous vous avons donné une
liste de mots et vous avons demandé de les placer en lieu sûr. La
- liste était similaire à ceci:'
- intro: Nous en faisons un peu plus pour garder votre information sécurisée et
- confidentielle, alors réinitialiser votre mot de passe demande un peu
- plus d’effort.
+ liste ressemblait à ceci :'
+ intro: Comme nous prenons des mesures supplémentaires pour maintenir vos
+ informations sécurisées et confidentielles, la réinitialisation de
+ votre mot de passe est un peu plus fastidieuse.
modal:
- copy: Si vous n’avez pas votre clé personnelle, vous devrez vérifier votre
- identité de nouveau.
- heading: Ne disposez-vous pas de votre clé personnelle ?
- with_key: Vous n’avez pas votre clé personnelle?
+ copy: Si vous ne disposez pas de votre clé personnelle, vous devrez reconfirmer
+ votre identité.
+ heading: Vous ne disposez pas de votre clé personnelle ?
+ with_key: Vous disposez de votre clé personnelle ?
forgot_password:
close_window: Vous pourrez fermer cette fenêtre de navigateur lorsque vous aurez
réinitialisé votre mot de passe.
- go_back_to_mobile_app: Pour continuer, veuillez retourner à l’application
+ go_back_to_mobile_app: Pour continuer, veuillez retourner à l’appli
%{friendly_name} et vous connecter.
mfa:
authenticator:
- confirm_code_html: Entrez le code à partir de votre application
- d’authentification. Si vous avez plusieurs comptes configurés dans
- votre application, entrez le code correspondant à %{app_name_html}.
- manual_entry: Ou entrez ce code manuellement dans votre application
- d’authentification
+ confirm_code_html: Saisissez le code à partir de votre appli d’authentification.
+ Si vous avez plusieurs comptes configurés dans votre appli, saisissez
+ le code correspondant à %{app_name_html}.
+ manual_entry: Ou saisissez ce code manuellement dans votre appli d’authentification
piv_cac:
- account_not_found_html: '%{sign_in} votre adresse email et
- votre mot de passe. Ajoutez ensuite votre PIV/CAC à votre compte.
- Vous n’avez pas de compte %{app_name}?
- %{create_account}
'
- add_from_sign_in_html: ' Instructions: insérez votre PIV ou
- votre CAC dans “AJOUTER PIV / CAC” . Vous devez
- choisir un certificat (le bon en a probablement
- votre nom) et saisir votre code confidentiel (votre
- code confidentiel a été créé lors de la configuration de votre PIV /
- CAC). ).'
+ account_not_found_html: '%{sign_in} avec votre adresse
+ e-mail et votre mot de passe. Ensuite, ajoutez votre carte PIV/CAC à
+ votre compte.
Vous n’avez pas de compte
+ %{app_name}? %{create_account}
'
+ add_from_sign_in_html: ' Instructions : Insérez votre carte
+ PIV ou CAC dans AJOUTER PIV/CAC. Vous devrez
+ choisir un certificat (le bon a probablement le nom
+ que vous lui avez donné) et saisir votre NIP (votre
+ NIP a été créé lors de la configuration de votre carte PIV/CAC).'
already_associated_html: Veuillez choisir un certificat associé à une autre
- carte PIV/CAC ou contactez votre administrateur afin de vérifier que
- votre carte PIV/CAC est bien à jour. Si vous pensez que c’est une
- erreur, %{try_again_html}.
- back_to_sign_in: Retourner à vous connecter
+ carte PIV/CAC ; contactez votre administrateur afin de vérifier que
+ votre carte PIV/CAC est bien à jour. Si vous pensez qu’il s’agit d’une
+ erreur, veuillez %{try_again_html}.
+ back_to_sign_in: Retourner vous connecter
confirm_piv_cac: Veuillez présenter la carte PIV/CAC que vous avez associée à
votre compte.
did_not_work_html: Veuillez %{please_try_again_html}. Si ce problème persiste,
- contactez l’administrateur de votre agence.
+ contactez l’administrateur de votre organisme.
http_failure: Le serveur a mis trop de temps à répondre. Veuillez réessayer.
- no_certificate_html: Veuillez vous assurer que votre PIV/CAC est connecté et
- %{try_again_html}. Si ce problème persiste, contactez l’administrateur
- de votre agence.
+ no_certificate_html: Veuillez vous assurer que votre carte PIV/CAC est connectée
+ et %{try_again_html}. Si ce problème persiste, contactez
+ l’administrateur de votre organisme.
not_auth_cert_html: Le certificat que vous avez sélectionné n’est pas valide
pour ce compte. Veuillez %{please_try_again_html} avec un autre
certificat. Si ce problème persiste, contactez l’administrateur de
- votre agence.
+ votre organisme.
please_try_again: réessayer
sign_in_html: Assurez-vous que vous disposez d’un compte
- %{app_name} et que vous avez configuré
+ %{app_name} et que vous avez configuré votre carte
PIV/CAC en tant que méthode d’authentification à deux
facteurs.
step_1: Donnez-lui un surnom
- step_1_info: Si vous ajoutez plus d’un PIV / CAC, vous saurez lequel.
+ step_1_info: Si vous ajoutez plus d’une carte PIV/CAC, vous saurez laquelle.
step_2: Insérez votre PIV/CAC dans votre lecteur de carte
- step_3: Ajoutez votre PIV/CAC
- step_3_info_html: Vous devrez choisir un certificat (celui de
- droite contient probablement votre nom) et entrer votre code
- PIN (votre code PIN a été créé lors de la configuration de
- votre PIV / CAC ).
+ step_3: Ajoutez votre carte PIV/CAC
+ step_3_info_html: Vous devrez choisir un certificat (le bon a
+ probablement votre nom) et saisir votre NIP (votre
+ NIP a été créé lors de la configuration de votre carte PIV/CAC).
try_again: réessayer
sms:
- number_message_html: Nous avons envoyé un texte (SMS) avec un code à usage
+ number_message_html: Nous avons envoyé un SMS (texto) avec un code à usage
unique au %{number_html}. Ce code expirera dans %{expiration} minutes.
voice:
- number_message_html: Nous avons envoyé un code à usage unique par appel au
+ number_message_html: Nous avons passé un appel avec un code à usage unique au
%{number_html}. Ce code expirera dans %{expiration} minutes.
webauthn:
confirm_webauthn: Présentez la clé de sécurité associée à votre compte.
- confirm_webauthn_platform_html: Vous pouvez vous authentifier de la même
- manière que vous déverrouillez votre appareil – avec votre visage ou
- votre empreinte digitale, un mot de passe ou une autre méthode.
- Si vous avez utilisé un gestionnaire de mots de passe pour
- configurer le déverrouillage facial ou tactile, vous pouvez vous
+ confirm_webauthn_platform_html: '
Vous pouvez vous authentifier de la même
+ manière que vous déverrouillez votre appareil, que ce soit avec votre
+ visage ou votre empreinte digitale, un mot de passe ou une autre
+ méthode.
Si vous avez utilisé un gestionnaire de mots de passe
+ pour configurer le déverrouillage facial ou tactile, vous pouvez vous
authentifier à partir de n’importe quel appareil utilisant ce
gestionnaire. Sinon, utilisez le même appareil que celui sur lequel
- vous avez configuré le déverrouillage facial ou tactile.
+ vous avez configuré le déverrouillage facial ou tactile.'
webauthn_platform:
learn_more_help: En savoir plus sur le déverrouillage facial ou tactile
- wrong_number: Vous avez entré un mauvais numéro de téléphone?
+ wrong_number: Vous avez saisi un mauvais numéro de téléphone ?
password:
- forgot: Vous ne connaissez pas votre mot de passe? Réinitialisez-le après avoir
- confirmé votre adresse courriel.
+ forgot: Vous ne connaissez pas votre mot de passe ? Réinitialisez-le après avoir
+ confirmé votre adresse e-mail.
help_text: Évitez de réutiliser les mots de passe de vos autres comptes, tels
- que ceux de vos banques, de vos comptes de courriel et de vos réseaux
- sociaux. N’incluez pas les mots de votre adresse de courriel. bancaires,
- les comptes courriel et les comptes de médias sociaux.
- help_text_header: Conseils sur la sécurité du mot de passe
+ que ceux de vos banques, adresses e-mail et comptes de réseaux sociaux.
+ N’incluez pas de mots figurant dans votre adresse e-mail.
+ help_text_header: Conseils de sécurité pour votre mot de passe
info:
- lead_html: Votre mot de passe doit comporter %{min_length}
- caractères ou plus. N’utilisez pas de phrases courantes ou de
- caractères répétés, comme « abc » ou « 111 ».
+ lead_html: Votre mot de passe doit comporter au moins %{min_length}
+ caractères. N’utilisez pas de séquences courantes de
+ caractères ou de caractères répétés, comme « abc » ou « 111 ».
password_key: Vous avez besoin de votre clé personnelle de 16 caractères pour
réinitialiser votre mot de passe si vous avez vérifié votre identité
- avec ce compte. Si vous ne l’avez pas, vous pouvez toujours
- réinitialiser votre mot de passe et ensuite revérifier votre identité.
+ avec ce compte. Si vous ne l’avez pas, vous pouvez quand même
+ réinitialiser votre mot de passe, puis reconfirmer votre identité.
strength:
0: Très faible
1: Faible
diff --git a/config/locales/links/es.yml b/config/locales/links/es.yml
index 320f7eda6ee..e9ae36fa748 100644
--- a/config/locales/links/es.yml
+++ b/config/locales/links/es.yml
@@ -10,18 +10,18 @@ es:
cancel_account_creation: '‹ Cancelar la creación de cuenta'
contact: Contactar
continue_sign_in: Continuar el inicio de sesión
- create_account: Crear cuenta
- exit_login: Salga de %{app_name}
- go_back: Regresa
+ create_account: Crear una cuenta
+ exit_login: Salir de %{app_name}
+ go_back: Volver
help: Ayuda
- new_tab: (abrir nueva pestaña)
+ new_tab: '(abrir nueva pestaña)'
passwords:
forgot: '¿Olvidó su contraseña?'
privacy_policy: Privacidad y seguridad
- resend: Reenviar
- reverify: Verifique su identidad nuevamente.
+ resend: Volver a enviar
+ reverify: Verifique su identidad de nuevo.
sign_in: Iniciar sesión
sign_out: Cerrar sesión
two_factor_authentication:
send_another_code: Enviar otro código
- what_is_totp: '¿Qué es una app de autenticación?'
+ what_is_totp: '¿Qué es una aplicación de autenticación?'
diff --git a/config/locales/links/fr.yml b/config/locales/links/fr.yml
index a0c82a2a0f2..5fe7435c3d6 100644
--- a/config/locales/links/fr.yml
+++ b/config/locales/links/fr.yml
@@ -12,16 +12,16 @@ fr:
continue_sign_in: Continuer la connexion
create_account: Créer un compte
exit_login: Quitter %{app_name}
- go_back: Retourner
+ go_back: Retour
help: Aide
new_tab: '(ouvre un nouvel onglet)'
passwords:
- forgot: Vous avez oublié votre mot de passe?
+ forgot: Mot de passe oublié ?
privacy_policy: Confidentialité et sécurité
resend: Renvoyer
- reverify: Veuillez vérifier votre identité de nouveau.
+ reverify: Veuillez reconfirmer votre identité.
sign_in: Se connecter
- sign_out: Déconnectez-vous
+ sign_out: Se déconnecter
two_factor_authentication:
send_another_code: Envoyer un autre code
- what_is_totp: Qu’est-ce qu’une application d’authentification?
+ what_is_totp: Qu’est-ce qu’une appli d’authentification ?
diff --git a/config/locales/mailer/es.yml b/config/locales/mailer/es.yml
index 4cd4303e966..7040390fd22 100644
--- a/config/locales/mailer/es.yml
+++ b/config/locales/mailer/es.yml
@@ -1,11 +1,11 @@
---
es:
mailer:
- about: Sobre %{app_name}
+ about: Acerca de %{app_name}
email_reuse_notice:
- subject: Este email ya está asociado a una cuenta.
+ subject: Esta dirección de correo electrónico ya está asociada con una cuenta.
help_html: Si necesita ayuda, visite %{link_html}
- logo: '%{app_name} logo'
- no_reply: Por favor, no responda a este mensaje.
- privacy_policy: Póliza de privacidad
- sent_at: Enviado el %{formatted_timestamp}
+ logo: Logotipo de %{app_name}
+ no_reply: No responda a este mensaje.
+ privacy_policy: Política de privacidad
+ sent_at: 'Enviado: %{formatted_timestamp}'
diff --git a/config/locales/mailer/fr.yml b/config/locales/mailer/fr.yml
index 2eab4495c76..6be9f2f37ca 100644
--- a/config/locales/mailer/fr.yml
+++ b/config/locales/mailer/fr.yml
@@ -3,9 +3,9 @@ fr:
mailer:
about: À propos de %{app_name}
email_reuse_notice:
- subject: Cette adresse courriel est déjà associée à un compte.
- help_html: Si vous avez besoin d’aide, visitez le site %{link_html}
- logo: '%{app_name} logo'
+ subject: Cette adresse e-mail est déjà associée à un compte.
+ help_html: Si vous avez besoin d’aide, rendez-vous sur %{link_html}
+ logo: logo %{app_name}
no_reply: Veuillez ne pas répondre à ce message.
privacy_policy: Politique de confidentialité
- sent_at: Envoyé le %{formatted_timestamp}
+ sent_at: Envoyé à %{formatted_timestamp}
diff --git a/config/locales/mfa/es.yml b/config/locales/mfa/es.yml
index 7b760eb9bbc..cc3911864e5 100644
--- a/config/locales/mfa/es.yml
+++ b/config/locales/mfa/es.yml
@@ -1,8 +1,8 @@
---
es:
mfa:
- account_info: Agregar otro método de autenticación evita que se le bloquee el
- acceso a su cuenta si pierde uno de sus métodos.
+ account_info: Agregar otro método de autenticación evita que el acceso a su
+ cuenta quede bloqueado si pierde uno de sus métodos.
add: Agregar otro método
info: Añada una capa adicional de protección a su cuenta de %{app_name} al
seleccionar un método de autenticación multifactor.
@@ -13,4 +13,5 @@ es:
text: Deberá eliminar su cuenta y comenzar de nuevo si pierde su único método de
autenticación.
skip: Omitir por ahora
- webauthn_platform_message: Agregue otro método de autenticación por si pierde el acceso al primero.
+ webauthn_platform_message: Agregue otro método de autenticación en caso de que
+ pierda el acceso al primero.
diff --git a/config/locales/mfa/fr.yml b/config/locales/mfa/fr.yml
index a27213bc26c..b5d6dcb6f5c 100644
--- a/config/locales/mfa/fr.yml
+++ b/config/locales/mfa/fr.yml
@@ -1,17 +1,17 @@
---
fr:
mfa:
- account_info: L’ajout d’une autre méthode d’authentification vous empêche d’être
- bloqué sur votre compte si vous perdez l’une de vos méthodes.
- add: Agregar otro método
+ account_info: L’ajout d’une autre méthode d’authentification vous évite de vous
+ faire bloquer de votre compte si vous perdez l’une de vos méthodes.
+ add: Ajouter une autre méthode
info: Ajoutez une couche de protection supplémentaire à votre compte %{app_name}
en sélectionnant une méthode d’authentification à plusieurs facteurs.
recommendation: Nous vous recommandons de sélectionner au moins deux options
différentes au cas où vous perdriez l’une de vos méthodes.
second_method_warning:
- link: Ajoutez une deuxième méthode d’authentification.
+ link: Ajouter une deuxième méthode d’authentification.
text: Vous devrez supprimer votre compte et recommencer si vous perdez votre
seule méthode d’authentification.
- skip: 'Ignorer pour le moment'
- webauthn_platform_message: Ajoutez une autre méthode d’authentification au cas
+ skip: Sauter pour le moment
+ webauthn_platform_message: Ajouter une autre méthode d’authentification au cas
où vous perdriez l’accès à la première.
diff --git a/config/locales/notices/es.yml b/config/locales/notices/es.yml
index 43c3208b640..77f39991243 100644
--- a/config/locales/notices/es.yml
+++ b/config/locales/notices/es.yml
@@ -1,63 +1,62 @@
---
es:
notices:
- account_reactivation: '¡Estupendo! Tiene su clave personal.'
- authenticated_successfully: Autenticado con éxito.
- backup_codes_configured: Códigos de respaldo fueron agregados a tu cuenta.
- backup_codes_deleted: Tus códigos de respaldo fueron eliminados de tu cuenta.
- dap_participation: Participamos en el programa analítico del Gobierno de Estados
- Unidos. Vea los datos en analytics.usa.gov (en inglés).
+ account_reactivation: Qué bien. Tiene su clave personal.
+ authenticated_successfully: Logró autenticarse.
+ backup_codes_configured: Los códigos de recuperación se agregaron a su cuenta.
+ backup_codes_deleted: Sus códigos de recuperación se eliminaron de su cuenta.
+ dap_participation: Participamos en el programa de análisis del Gobierno de los
+ Estados Unidos. Consulte los datos en analytics.usa.gov (en inglés).
forgot_password:
- first_paragraph_end: con un enlace para restablecer su contraseña. Siga el
- enlace para continuar restableciendo su contraseña.
- first_paragraph_start: Enviamos un email a
- no_email_sent_explanation_start: '¿No recibió un email?'
- resend_email_success: Enviamos otro email para restablecer la contraseña.
- password_changed: Ha cambiado su contraseña.
- phone_confirmed: Un teléfono fue agregado a tu cuenta.
- piv_cac_configured: Una tarjeta PIV/CAC fue agregada a tu cuenta.
+ first_paragraph_end: con un vínculo para restablecer su contraseña. Siga el
+ vínculo para continuar restableciendo su contraseña.
+ first_paragraph_start: Enviamos un correo electrónico a
+ no_email_sent_explanation_start: '¿No recibió un correo electrónico?'
+ resend_email_success: Enviamos otro correo electrónico para restablecer la contraseña.
+ password_changed: Cambió su contraseña.
+ phone_confirmed: Se agregó un teléfono a su cuenta.
+ piv_cac_configured: Se agregó una tarjeta PIV o CAC a su cuenta.
privacy:
- privacy_act_statement: Declaración de la ley de privacidad
- security_and_privacy_practices: Prácticas de seguridad y privacidad
+ privacy_act_statement: Declaración de privacidad
+ security_and_privacy_practices: Prácticas de seguridad y declaración de privacidad
resend_confirmation_email:
- success: Enviamos otro email de confirmación.
- session_cleared: Para su seguridad, borramos lo que ingresó si no pasa a una
- página nueva dentro de %{minutes} minutos.
- session_timedout: Hemos terminado su sesión. Para su seguridad, %{app_name}
- cierra su sesión cuando usted no pasa a una nueva página durante
- %{minutes} minutos.
+ success: Enviamos otro correo electrónico de confirmación.
+ session_cleared: Por su seguridad, borramos lo que usted ingresó si usted no
+ pasa a una página nueva en %{minutes} minutos.
+ session_timedout: Cerramos su sesión. Por su seguridad, %{app_name} cierra su
+ sesión cuando usted no pasa a una página nueva en %{minutes} minutos.
signed_up_and_confirmed:
- first_paragraph_end: con un enlace para confirmar su dirección de correo
- electrónico. Siga el enlace para continuar agregando este correo
+ first_paragraph_end: con un vínculo para confirmar su dirección de correo
+ electrónico. Siga el vínculo para continuar agregando este correo
electrónico a su cuenta.
first_paragraph_start: Enviamos un correo electrónico a
no_email_sent_explanation_start: '¿No recibió un correo electrónico?'
signed_up_but_unconfirmed:
- first_paragraph_end: con un enlace para confirmar su email. Siga el enlace para
- continuar creando su cuenta.
- first_paragraph_start: Enviamos un email a
+ first_paragraph_end: con un vínculo para confirmar su dirección de correo
+ electrónico. Siga el vínculo para continuar creando su cuenta.
+ first_paragraph_start: Enviamos un correo electrónico a
resend_confirmation_email: Reenviar el correo electrónico de confirmación
timeout_warning:
partially_signed_in:
continue: Continuar el inicio de sesión
- live_region_message_html: Tu sesión se cerrará en %{time_left_in_session_html}.
- Selecciona “seguir conectado” para mantener tu sesión activa.
- Seleccione “desconécteme” para cerrar la sesión.
- message_html: Para su seguridad, en %{time_left_in_session_html} cancelaremos su
- acceso.
+ live_region_message_html: Su sesión se cerrará en %{time_left_in_session_html}.
+ Seleccione “Mantener mi sesión iniciada” para seguir conectado.
+ Seleccione “Cerrar mi sesión” para salir.
+ message_html: Por su seguridad, cerraremos su sesión iniciada en
+ %{time_left_in_session_html}.
sign_out: Cancelar el inicio de sesión
signed_in:
- continue: Manténgame conectado
- live_region_message_html: Tu sesión se cerrará en %{time_left_in_session_html}.
- Selecciona “seguir conectado” para mantener tu sesión activa.
- Seleccione “desconécteme” para cerrar la sesión.
- message_html: Para su seguridad, terminaremos su sesión en
- %{time_left_in_session_html} a menos que nos indique lo contrario.
- sign_out: Desconécteme
- totp_configured: Una aplicación de autenticación fue agregada a tu cuenta.
+ continue: Mantener mi sesión iniciada
+ live_region_message_html: Su sesión se cerrará en %{time_left_in_session_html}.
+ Seleccione “Mantener mi sesión iniciada” para seguir conectado.
+ Seleccione “Cerrar mi sesión” para salir.
+ message_html: Por su seguridad, cerraremos su sesión iniciada en
+ %{time_left_in_session_html}, a menos que nos indique lo contrario.
+ sign_out: Cerrar mi sesión
+ totp_configured: Se agregó una aplicación de autenticación a su cuenta.
use_diff_email:
- link: use un email diferente
+ link: use una dirección de correo electrónico diferente
text_html: O %{link_html}
- webauthn_configured: Una llave de seguridad fue agregada a tu cuenta.
+ webauthn_configured: Se agregó una clave de seguridad a su cuenta.
webauthn_platform_configured: Usó el bloqueo de pantalla de su dispositivo para
agregar el desbloqueo facial o táctil a su cuenta.
diff --git a/config/locales/notices/fr.yml b/config/locales/notices/fr.yml
index 28101deff08..95adf6f9fc7 100644
--- a/config/locales/notices/fr.yml
+++ b/config/locales/notices/fr.yml
@@ -1,65 +1,66 @@
---
fr:
notices:
- account_reactivation: Excellent! Vous avez votre clé personnelle.
+ account_reactivation: Parfait ! Vous avez votre clé personnelle.
authenticated_successfully: Authentifié avec succès.
backup_codes_configured: Les codes de sauvegarde ont été ajoutés à votre compte.
backup_codes_deleted: Vos codes de sauvegarde ont été supprimés de votre compte.
- dap_participation: Nous participons au programme d’analytique du gouvernement
- des États-Unis. Consultez les données à analytics.usa.gov.
+ dap_participation: Nous participons au programme analytique de l’administration
+ des États-Unis. Consultez les données sur analytics.usa.gov.
forgot_password:
first_paragraph_end: avec un lien pour réinitialiser votre mot de passe. Suivez
le lien pour continuer à réinitialiser votre mot de passe.
- first_paragraph_start: Nous avons envoyé un courriel à
- no_email_sent_explanation_start: Vous n’avez pas reçu de courriel?
- resend_email_success: Nous avons envoyé un autre courriel de réinitialisation de mot de passe.
+ first_paragraph_start: Nous avons envoyé un e-mail à
+ no_email_sent_explanation_start: Vous n’avez pas reçu d’e-mail ?
+ resend_email_success: Nous avons envoyé un autre e-mail de réinitialisation de mot de passe.
password_changed: Vous avez changé votre mot de passe.
phone_confirmed: Un téléphone a été ajouté à votre compte.
- piv_cac_configured: Une carte PIV / CAC a été ajoutée à votre compte.
+ piv_cac_configured: Une carte PIV/CAC a été ajoutée à votre compte.
privacy:
- privacy_act_statement: Déclaration de confidentialité
- security_and_privacy_practices: Pratiques de sécurité et de confidentialité
+ privacy_act_statement: Déclaration relative à la loi sur la confidentialité
+ security_and_privacy_practices: Déclaration relatives à la loi sur les pratiques
+ de sécurité et la confidentialité
resend_confirmation_email:
- success: Nous avons envoyé un autre courriel de confirmation.
- session_cleared: Pour votre sécurité, nous effacerons l’information que vous
- avez entrée si vous ne vous déplacez pas vers une nouvelle page dans les
- %{minutes} prochaines minutes.
+ success: Nous avons envoyé un autre e-mail de confirmation.
+ session_cleared: Pour votre sécurité, nous effaçons les informations que vous
+ avez saisies si vous ne passez pas à une nouvelle page dans les %{minutes}
+ minutes.
session_timedout: Nous vous avons déconnecté. Pour votre sécurité, %{app_name}
- désactive votre session lorsque vous demeurez sur une page sans vous
- déplacer pendant %{minutes} minutes.
+ désactive votre session si vous n’êtes pas passé à une nouvelle page après
+ %{minutes} minutes.
signed_up_and_confirmed:
- first_paragraph_end: avec un lien pour confirmer votre adresse email. Suivez le
- lien pour continuer à ajouter cet email à votre compte.
- first_paragraph_start: Nous avons envoyé un email à
- no_email_sent_explanation_start: Vous n’avez pas reçu de courrier électronique?
+ first_paragraph_end: avec un lien pour confirmer votre adresse e-mail. Suivez le
+ lien pour continuer à ajouter cet adresse e-mail à votre compte.
+ first_paragraph_start: Nous avons envoyé un e-mail à
+ no_email_sent_explanation_start: Vous n’avez pas reçu d’e-mail ?
signed_up_but_unconfirmed:
- first_paragraph_end: avec un lien pour confirmer votre adresse courriel. Suivez
- le lien pour continuer à créer votre compte.
- first_paragraph_start: Nous avons envoyé un courriel à
+ first_paragraph_end: avec un lien pour confirmer votre adresse e-mail. Suivez le
+ lien pour continuer à créer votre compte.
+ first_paragraph_start: Nous avons envoyé un e-mail à
resend_confirmation_email: Renvoyer le courriel de confirmation
timeout_warning:
partially_signed_in:
continue: Continuer la connexion
live_region_message_html: Vous serez déconnecté dans
- %{time_left_in_session_html}. Sélectionnez « garder ma connexion »
- pour rester connecté. Sélectionnez « déconnectez-moi » pour vous
- déconnecter.
+ %{time_left_in_session_html}. Sélectionnez « Gardez ma connexion
+ active » pour rester connecté. Sélectionnez « Déconnectez-moi » pour
+ vous déconnecter.
message_html: Pour votre sécurité, nous annulerons votre connexion dans
%{time_left_in_session_html}.
sign_out: Annuler la connexion
signed_in:
continue: Gardez ma connexion active
live_region_message_html: Vous serez déconnecté dans
- %{time_left_in_session_html}. Sélectionnez « garder ma connexion »
- pour rester connecté. Sélectionnez « déconnectez-moi » pour vous
- déconnecter.
+ %{time_left_in_session_html}. Sélectionnez « Gardez ma connexion
+ active » pour rester connecté. Sélectionnez « Déconnectez-moi » pour
+ vous déconnecter.
message_html: Pour votre sécurité, nous vous déconnecterons dans
%{time_left_in_session_html}, sauf en cas d’avis contraire de votre
part.
sign_out: Déconnectez-moi
- totp_configured: Une application d’authentification a été ajoutée à votre compte.
+ totp_configured: Une appli d’authentification a été ajoutée à votre compte.
use_diff_email:
- link: utilisez une adresse courriel différente
+ link: utiliser une adresse e-mail différente
text_html: Ou %{link_html}
webauthn_configured: Une clé de sécurité a été ajoutée à votre compte.
webauthn_platform_configured: Vous avez utilisé le verrouillage de l’écran de
diff --git a/config/locales/openid_connect/es.yml b/config/locales/openid_connect/es.yml
index 7aac8a1747c..8ee2914771f 100644
--- a/config/locales/openid_connect/es.yml
+++ b/config/locales/openid_connect/es.yml
@@ -3,49 +3,50 @@ es:
openid_connect:
authorization:
errors:
- bad_client_id: Client_id incorrecto
+ bad_client_id: client_id incorrecto
invalid_verified_within_duration:
one: el valor debe ser al menos %{count} día o más
- other: el valor debe tener al menos %{count} días o más
- invalid_verified_within_format: Formato no reconocido para verified_within
- missing_ial: Falta un nivel de IAL válido
+ other: el valor debe ser al menos %{count} días o más
+ invalid_verified_within_format: Formato no reconocido de verified_within
+ missing_ial: Falta un nivel válido de IAL
no_auth: Los acr_values no están autorizados
- no_valid_acr_values: ial_valores encontrados no aceptables
- no_valid_scope: No se han encontrado valores de magnitud válidos
+ no_valid_acr_values: No se encontraron ial_values aceptables
+ no_valid_scope: No se encontraron valores de ámbito válidos
no_valid_vtr: vots encontrados no aceptables
prompt_invalid: Prompt no es válido
- redirect_uri_invalid: Redirect_uri no es válido
- redirect_uri_no_match: Redirect_uri no coincide con redirect_uri registrado
- unauthorized_scope: Alcance no autorizado
+ redirect_uri_invalid: redirect_uri no es válido
+ redirect_uri_no_match: redirect_uri no coincide con el redirect_uri registrado
+ unauthorized_scope: Ámbito no autorizado
logout:
confirm: Sí, cerrar sesión en %{app_name}
deny: No, ir a la página de mi cuenta
errors:
- client_id_invalid: client_id no fue reconocido
- client_id_missing: falta client_id
- id_token_hint: id_token_hint no fue reconocido
- id_token_hint_present: Esta aplicación está mal configurada y no debería enviar
- id_token_hint. Por favor, envíe client_id en su lugar.
+ client_id_invalid: No se reconoció client_id
+ client_id_missing: Falta client_id
+ id_token_hint: No se reconoció id_token_hint
+ id_token_hint_present: Esta aplicación está mal configurada y no debería estar
+ enviando id_token_hint. En vez de ello, enviar client_id.
no_client_id_or_id_token_hint: Esta aplicación está mal configurada y debe
enviar client_id o id_token_hint.
- heading: '¿Quieres cerrar sesión en %{app_name}?'
- heading_with_sp: '¿Quiere cerrar sesión en %{app_name} y regresar a
+ heading: '¿Desea cerrar sesión en %{app_name}?'
+ heading_with_sp: '¿Desea cerrar sesión en %{app_name} y volver a
%{service_provider_name}?'
token:
errors:
- expired_code: ha expirado
- invalid_aud: Solicitud de audiencia no válida, esperada %{url}
+ expired_code: venció
+ invalid_aud: Reclamación de audiencia no válida, %{url} previsto
invalid_authentication: El cliente debe autenticarse a través de PKCE o
- private_key_jwt, faltando code_challenge o client_assertion
+ private_key_jwt, omitiendo code_challenge o client_assertion
invalid_code: no es válido porque no coincide con ningún usuario. Consulte
nuestra documentación en https://developers.login.gov/oidc/#token
invalid_code_verifier: code_verifier no coincide con code_challenge
- invalid_iat: iat debe ser una marca de tiempo Unix de punto flotante o entero
- que represente un tiempo en el pasado
- invalid_signature: No se pudo validar la aserción contra ninguna clave pública registrada
+ invalid_iat: iat debe ser una marca de tiempo Unix de punto flotante o un entero
+ que represente un momento en el pasado
+ invalid_signature: No se pudo validar la afirmación contra ninguna clave pública
+ registrada
user_info:
errors:
- malformed_authorization: Título de autorización mal formado
- no_authorization: No se ha proporcionado título de autorización
+ malformed_authorization: Encabezado de autorización mal formado
+ no_authorization: No se proporcionó ningún encabezado de autorización
not_found: No se pudo encontrar la autorización para el contenido del
- access_token proporcionado o puede haber caducado
+ access_token proporcionado o puede ser que este haya vencido
diff --git a/config/locales/pages/es.yml b/config/locales/pages/es.yml
index df52ee62b1b..5dd49656526 100644
--- a/config/locales/pages/es.yml
+++ b/config/locales/pages/es.yml
@@ -2,6 +2,5 @@
es:
pages:
page_took_too_long:
- body: Por favor, es posible que desee esperar unos minutos y vuelva a
- intentarlo. (503)
- header: El sistema de información tomó demasiado tiempo procesar su solicitud.
+ body: Es conveniente que espere unos minutos y vuelva a intentarlo. (503)
+ header: El servidor tardó demasiado en procesar su solicitud.
diff --git a/config/locales/pages/fr.yml b/config/locales/pages/fr.yml
index 0446a7a5e64..b95b4429046 100644
--- a/config/locales/pages/fr.yml
+++ b/config/locales/pages/fr.yml
@@ -2,5 +2,6 @@
fr:
pages:
page_took_too_long:
- body: Veuillez réessayer dans quelques minutes. (503)
- header: Le système d’information a pris trop de temps à traiter votre demande.
+ body: Nous vous recommandons de patienter quelques minutes, puis de réessayer.
+ (503)
+ header: Le serveur a mis trop de temps à traiter votre demande.
diff --git a/config/locales/saml_idp/es.yml b/config/locales/saml_idp/es.yml
index a408d15022e..6ad45a81a9b 100644
--- a/config/locales/saml_idp/es.yml
+++ b/config/locales/saml_idp/es.yml
@@ -7,7 +7,7 @@ es:
shared:
saml_post_binding:
heading: Enviar para continuar
- no_js: JavaScript parece estar desactivado en su navegador. Normalmente, este
- paso se realiza automáticamente, pero debido a que tiene JavaScript
- desactivado, haga clic en el botón Enviar para continuar iniciando o
- cerrando la sesión.
+ no_js: JavaScript parece estar desactivado en su navegador. Por lo general, este
+ paso es automático, pero, debido a que tiene JavaScript desactivado,
+ haga clic en el botón Enviar para continuar iniciando sesión o
+ cerrándola.
diff --git a/config/locales/saml_idp/fr.yml b/config/locales/saml_idp/fr.yml
index 7c10525b20d..421a62f1498 100644
--- a/config/locales/saml_idp/fr.yml
+++ b/config/locales/saml_idp/fr.yml
@@ -6,8 +6,8 @@ fr:
title: Erreur
shared:
saml_post_binding:
- heading: Soumettre pour continuer
- no_js: JavaScript semble être désactivé dans votre navigateur. Habituellement,
- cette étape se déroule automatiquement, mais parce que vous avez
- désactivé le JavaScript, veuillez cliquer sur le lien « soumettre »
- pour continuer ou pour vous déconnecter.
+ heading: Valider pour continuer
+ no_js: JavaScript semble être désactivé dans votre navigateur. Normalement,
+ cette étape se produit automatiquement, mais comme vous avez désactivé
+ JavaScript, veuillez cliquer sur le bouton « Valider » pour poursuivre
+ la connexion ou la déconnexion.
diff --git a/config/locales/service_providers/es.yml b/config/locales/service_providers/es.yml
index d474210c1f2..78f73fdc632 100644
--- a/config/locales/service_providers/es.yml
+++ b/config/locales/service_providers/es.yml
@@ -6,9 +6,8 @@ es:
inactive:
button_text: Ver mi cuenta de %{app_name}
heading: '%{sp_name} ya no utiliza %{app_name}'
- instructions: '%{sp_name} ya no utiliza %{app_name} como servicio de acceso a su
- sitio web. Si ya ha creado una cuenta de %{app_name}, todavía está
- activa y se puede usar para acceder a otros sitios web del gobierno
- participante.'
- instructions2: Por favor, visite la agencia para contactarlos y obtener más
- información.
+ instructions: '%{sp_name} ya no utiliza %{app_name} como servicio para iniciar
+ sesión en su sitio web. Si ya creó una cuenta de %{app_name}, todavía
+ está activa y se puede usar para acceder a otros sitios web
+ participantes del gobierno.'
+ instructions2: Visite la agencia para contactarlos y obtener más información.
diff --git a/config/locales/service_providers/fr.yml b/config/locales/service_providers/fr.yml
index 2419b1c9a1a..1763574953c 100644
--- a/config/locales/service_providers/fr.yml
+++ b/config/locales/service_providers/fr.yml
@@ -2,13 +2,13 @@
fr:
service_providers:
errors:
- generic_sp_name: Cette agence
+ generic_sp_name: Cet organisme
inactive:
button_text: Voir mon compte %{app_name}
heading: '%{sp_name} n’utilise plus %{app_name}'
instructions: '%{sp_name} n’utilise plus %{app_name} comme service de connexion
- à son site Web. Si vous avez déjà créé un compte %{app_name}, sachez
- qu’il est toujours actif et qu’il peut être utilisé pour accéder aux
- autres sites Web gouvernementaux participants.'
- instructions2: Veuillez vous rendre sur le site de l’agence afin de les
- contacter pour plus d’informations.
+ pour son site Web. Si vous avez déjà créé un compte %{app_name},
+ sachez qu’il est toujours actif et qu’il peut être utilisé pour
+ accéder aux autres sites Web participants de l’administration.'
+ instructions2: Pour plus d’informations, veuillez vous rendre sur le site de
+ l’organisme concerné pour le contacter.
diff --git a/config/locales/shared/es.yml b/config/locales/shared/es.yml
index 96a767e5a69..7b4aa53d225 100644
--- a/config/locales/shared/es.yml
+++ b/config/locales/shared/es.yml
@@ -2,19 +2,19 @@
es:
shared:
banner:
- fake_site: Un sitio oficial del Gobierno de Estados Unidos
+ fake_site: Un sitio web de demostración del Gobierno de los Estados Unidos
gov_description_html: Un sitio web .gov pertenece a una
- organización oficial del Gobierno de Estados Unidos.
+ organización oficial del Gobierno de los Estados Unidos.
gov_heading: Los sitios web oficiales usan .gov
- how: Así es como usted puede verificarlo
+ how: Así es como usted puede saberlo
landmark_label: Sitio web oficial del Gobierno
lock_description: Un candado cerrado
- official_site: Un sitio oficial del Gobierno de Estados Unidos
+ official_site: Un sitio web oficial del Gobierno de los Estados Unidos
secure_description_html: Un candado ( %{lock_icon} ) o
- https:// significa que usted se conectó de forma segura
- a un sitio web .gov. Comparta información sensible sólo en sitios web
- oficiales y seguros.
- secure_heading: Los sitios web seguros .gov usan HTTPS
+ https:// significa que se conectó de forma segura a un
+ sitio web .gov. Comunique información confidencial solo en los sitios
+ web oficiales protegidos.
+ secure_heading: Los sitios web .gov protegidos usan HTTPS
footer_lite:
- gsa: Administración General de Servicios de EE. UU.
- skip_link: Salte al contenido principal
+ gsa: Administración General de Servicios de los EE. UU.
+ skip_link: Saltar al contenido principal
diff --git a/config/locales/shared/fr.yml b/config/locales/shared/fr.yml
index 53b877ace9d..823718ce7ba 100644
--- a/config/locales/shared/fr.yml
+++ b/config/locales/shared/fr.yml
@@ -2,18 +2,18 @@
fr:
shared:
banner:
- fake_site: Un site de DEMO du gouvernement des États-Unis
- gov_description_html: Un site Web .gov appartient à une
- organisation gouvernementale officielle des États-Unis.
+ fake_site: Un site Web de DÉMONSTRATION des autorités des États-Unis
+ gov_description_html: Un site Web .gov appartient à un
+ organisme officiel des États-Unis.
gov_heading: Les sites Web officiels utilisent .gov
- how: Voici comment vous savez
- landmark_label: Site officiel du gouvernement
+ how: Voici comment le savoir
+ landmark_label: Site Web officiel des autorités
lock_description: Un cadenas fermé
- official_site: Un site web officiel du gouvernement des États-Unis
- secure_description_html: Un verrou ( %{lock_icon} ) ou
- https:// signifie que vous êtes connecté en toute
- sécurité au site Web .gov. Partagez des informations sensibles
- uniquement sur des sites Web officiels et sécurisés.
+ official_site: Un site Web officiel de l’administration des États-Unis
+ secure_description_html: La présence d’un cadenas (
+ %{lock_icon} ) ou de https:// signifie que vous êtes
+ connecté en toute sécurité au site Web .gov. Ne partagez des
+ informations sensibles que sur des sites Web officiels et sécurisés.
secure_heading: Les sites Web sécurisés .gov utilisent HTTPS
footer_lite:
gsa: Administration des services généraux des États-Unis
diff --git a/config/locales/sign_up/es.yml b/config/locales/sign_up/es.yml
index d07e6c2ec21..fa80a76e7be 100644
--- a/config/locales/sign_up/es.yml
+++ b/config/locales/sign_up/es.yml
@@ -3,8 +3,8 @@ es:
sign_up:
agree_and_continue: Aceptar y continuar
cancel:
- success: Su cuenta ha sido eliminada. No guardamos su información.
+ success: Su cuenta fue eliminada. No guardamos su información.
warning_header: 'Si cancela ahora:'
completed:
- smiling_image_alt: Una persona sonriente con una marca de verificación verde de éxito
- terms: He leído y acepto el %{app_name}
+ smiling_image_alt: Una persona sonriente con una marca de verificación verde
+ terms: Leí y acepto %{app_name}
diff --git a/config/locales/sign_up/fr.yml b/config/locales/sign_up/fr.yml
index aea8ec5e488..4c39212fc67 100644
--- a/config/locales/sign_up/fr.yml
+++ b/config/locales/sign_up/fr.yml
@@ -1,10 +1,12 @@
---
fr:
sign_up:
- agree_and_continue: Acceptez et continuez
+ agree_and_continue: Accepter et continuer
cancel:
- success: Le dossier contenant votre information a été effacé
- warning_header: 'Si vous annulez maintenant:'
+ success: Votre compte a été supprimé. Nous n’avons pas sauvegardé vos
+ informations.
+ warning_header: 'Si vous annulez maintenant :'
completed:
- smiling_image_alt: Une personne souriante avec une coche verte indiquant la réussite
- terms: J’ai lu et j’accepte le %{app_name}
+ smiling_image_alt: Une personne souriante avec une coche verte indiquant la
+ réussite de la procédure
+ terms: J’ai lu et j’accepte les %{app_name}
diff --git a/config/locales/simple_form/es.yml b/config/locales/simple_form/es.yml
index 09878717f3c..a8418a64400 100644
--- a/config/locales/simple_form/es.yml
+++ b/config/locales/simple_form/es.yml
@@ -2,10 +2,10 @@
es:
simple_form:
error_notification:
- default_message: 'Por favor revise los siguientes problemas:'
+ default_message: 'Revise los siguientes problemas:'
'no': 'No'
required:
html: ''
mark: ''
- text: Este campo es requerido
+ text: Este campo es obligatorio
'yes': Sí
diff --git a/config/locales/simple_form/fr.yml b/config/locales/simple_form/fr.yml
index 44e6d7b912c..dd19d1f2c43 100644
--- a/config/locales/simple_form/fr.yml
+++ b/config/locales/simple_form/fr.yml
@@ -7,5 +7,5 @@ fr:
required:
html: ''
mark: ''
- text: Ce champ est requis
+ text: Ce champ est obligatoire
'yes': Oui
diff --git a/config/locales/step_indicator/es.yml b/config/locales/step_indicator/es.yml
index 010cbc8c5ee..710e2cd369c 100644
--- a/config/locales/step_indicator/es.yml
+++ b/config/locales/step_indicator/es.yml
@@ -1,18 +1,18 @@
---
es:
step_indicator:
- accessible_label: Progreso por pasos
+ accessible_label: Avance por pasos
flows:
idv:
- find_a_post_office: Encuentre una oficina de correos
- get_a_letter: Reciba una carta por correo
+ find_a_post_office: Busque una oficina de correos
+ get_a_letter: Obtenga una carta por correo
getting_started: Inicio
go_to_the_post_office: Vaya a la oficina de correos
secure_account: Vuelve a ingresar tu contraseña
- verify_id: Verifica tu identificación
- verify_info: Verifique sus datos
+ verify_id: Verifique su identidad
+ verify_info: Verifique su información
verify_phone_or_address: Verifique su número de teléfono
status:
- complete: Completo
- current: Siguiente paso
- not_complete: No se ha completado
+ complete: Completado
+ current: Este paso
+ not_complete: No completado
diff --git a/config/locales/step_indicator/fr.yml b/config/locales/step_indicator/fr.yml
index 3bf1872e5f9..e6c2f743e31 100644
--- a/config/locales/step_indicator/fr.yml
+++ b/config/locales/step_indicator/fr.yml
@@ -10,9 +10,9 @@ fr:
go_to_the_post_office: Se rendre au bureau de poste
secure_account: Saisir à nouveau votre mot de passe
verify_id: Vérifier votre identité
- verify_info: Vérifier votre informations
+ verify_info: Vérifier vos informations
verify_phone_or_address: Vérifier votre numéro de téléphone
status:
- complete: Terminé
+ complete: Étape effectuée
current: Étape en cours
- not_complete: Non terminé
+ not_complete: Étape non effectuée
diff --git a/config/locales/telephony/es.yml b/config/locales/telephony/es.yml
index eb830e07212..dcf8f19afff 100644
--- a/config/locales/telephony/es.yml
+++ b/config/locales/telephony/es.yml
@@ -11,51 +11,53 @@ es:
%{app_name}: La contraseña es %{code}. Esta contraseña puede usarse una vez y se vence en %{expiration} minutos. No la comparta con nadie.
@%{domain} #%{code}
- voice: ¡Hola! Su código único de seis %{format_type} de %{app_name} es %{code},
- Su código único es %{code}, De nuevo, Su código único de es %{code},
- Este código expira en %{expiration} minutos.
+ voice: 'Hola: Su código de un solo uso de seis %{format_type} de %{app_name} es
+ %{code}. Su código de un solo uso es %{code}. De nuevo, su código de un
+ solo uso es %{code}. Este código vence en %{expiration} minutos.'
confirmation_ipp_enrollment_result:
- sms: |-
- %{app_name}: Visitó la oficina de correos el %{proof_date}. Revise su correo electrónico. ¿No fue usted? Llame: %{contact_number}. Ref: %{reference_string}
+ sms: '%{app_name}: Usted acudió a la oficina de correos el %{proof_date}. Revise
+ el resultado en su correo electrónico. ¿No fue usted? Informe
+ inmediatamente de esto: %{contact_number}. Ref: %{reference_string}'
confirmation_otp:
sms: |-
%{app_name}: La contraseña es %{code}. Esta contraseña puede usarse una vez y se vence en %{expiration} minutos. No la comparta con nadie.
@%{domain} #%{code}
- voice: ¡Hola! Su código único de seis %{format_type} de %{app_name} es %{code},
- Su código único es %{code}, De nuevo, Su código único de es %{code},
- Este código expira en %{expiration} minutos.
- doc_auth_link: |-
- %{app_name}: %{link} Está verificando su identidad para acceder a %{sp_or_app_name}. Tome una foto de su identificación para continuar.
+ voice: 'Hola: Su código de un solo uso de seis %{format_type} de %{app_name} es
+ %{code}. Su código de un solo uso es %{code}. De nuevo, su código de un
+ solo uso es %{code}. Este código vence en %{expiration} minutos.'
+ doc_auth_link: '%{app_name}: %{link} Está verificando su identidad para acceder
+ a %{sp_or_app_name}. Tome una foto de su identificación para continuar.'
error:
friendly_message:
- daily_voice_limit_reached: Su código de un solo uso no se ha podido enviar, ya
- que ha superado el número máximo de llamadas en 24 horas a este número
- de teléfono. Puedes solicitar un código por mensaje de texto o
- utilizar un número diferente para recibir una llamada telefónica.
+ daily_voice_limit_reached: No se pudo enviar su código de un solo uso porque
+ superó el número máximo de llamadas en 24 horas a este número de
+ teléfono. Puede solicitar un código por mensaje de texto o usar un
+ número diferente para recibir una llamada telefónica.
duplicate_endpoint: El número de teléfono ingresado no es válido.
- generic: No se pudo enviar su código de verificación.
- invalid_calling_area: No se admiten llamadas a ese número de teléfono. Intenta
- enviar un SMS si tienes un teléfono que permita enviar SMS.
- invalid_phone_number: El número de teléfono ingresado no está en el formato correcto.
- opt_out: El número de teléfono ingresado ha sido excluido de los mensajes de
- texto.
+ generic: No se pudo enviar su código de un solo uso.
+ invalid_calling_area: No se admiten llamadas a ese número de teléfono. Intente
+ enviar un SMS si tiene un teléfono compatible con SMS.
+ invalid_phone_number: El número de teléfono ingresado no es válido.
+ opt_out: Se optó por no recibir mensajes de texto en el número de teléfono
+ ingresado.
permanent_failure: El número de teléfono ingresado no es válido.
rate_limited: Ese número está experimentando un alto volumen de mensajes. Por
favor, inténtelo de nuevo más tarde.
sms_unsupported: El número de teléfono ingresado no admite mensajes de texto.
- Pruebe la opción de llamada telefónica.
+ Intente la opción de llamada telefónica.
temporary_failure: Estamos experimentando dificultades técnicas. Por favor,
inténtelo de nuevo más tarde.
- timeout: El servidor tardó demasiado en responder. Inténtalo de nuevo.
+ timeout: El servidor tardó demasiado en responder. Vuelva a intentarlo.
unknown_failure: Estamos experimentando dificultades técnicas. Por favor,
inténtelo de nuevo más tarde.
- voice_unsupported: Numero de telefono invalido. Verifique que haya ingresado el
+ voice_unsupported: Número de teléfono no válido. Verifique haber ingresado el
código de país o de área correcto.
format_type:
character: carácter
- digit: dígitos
- personal_key_regeneration_notice: Se ha emitido una nueva clave personal para tu
- cuenta %{app_name}. Si no eres tú, restablece tu contraseña.
- personal_key_sign_in_notice: Su clave personal solo se utilizó para iniciar
- sesión en su cuenta %{app_name}. Si no fue así, reinicie su contraseña.
+ digit: dígito
+ personal_key_regeneration_notice: Se emitió una nueva clave personal para su
+ cuenta de %{app_name}. Si no fue usted, restablezca su contraseña.
+ personal_key_sign_in_notice: Su clave personal acaba de se usada para iniciar
+ sesión en su cuenta de %{app_name}. Si no fue usted, restablezca su
+ contraseña.
diff --git a/config/locales/telephony/fr.yml b/config/locales/telephony/fr.yml
index e29117bc63c..41b46b14f3b 100644
--- a/config/locales/telephony/fr.yml
+++ b/config/locales/telephony/fr.yml
@@ -8,57 +8,61 @@ fr:
à votre compte %{app_name} pour le annuler.
authentication_otp:
sms: |-
- %{app_name}: Votre code à usage unique est %{code}. Il est valable pendant %{expiration} minutes. Vous ne devez pas partager ce code avec personne.
+ %{app_name} : Votre code à usage unique est %{code}. Il expire dans %{expiration} minutes. Ne partagez ce code avec personne.
@%{domain} #%{code}
- voice: Bonjour! Votre code à usage unique de six %{format_type} pour %{app_name}
- est %{code}. Votre code à usage unique est %{code}. Une fois de plus,
- votre code à usage unique est %{code}. Ce code expire dans %{expiration}
- minutes.
+ voice: Bonjour ! Votre code à usage unique de six %{format_type} pour
+ %{app_name} est %{code}. Votre code à usage unique est %{code}. De
+ nouveau, votre code à usage unique est %{code}. Ce code expire dans
+ %{expiration} minutes.
confirmation_ipp_enrollment_result:
- sms: |-
- %{app_name}: Vous avez visité le bureau de poste le %{proof_date}. Vérifiez votre e-mail. Ce n'est pas vous? Signalez-le: %{contact_number}. Réf: %{reference_string}
+ sms: "%{app_name} : Vous avez visité le bureau de poste le %{proof_date}.
+ Vérifiez votre e-mail pour obtenir votre résultat. Ce n'est pas vous ?
+ Signalez-le immédiatement : %{contact_number}. Réf. :
+ %{reference_string}"
confirmation_otp:
sms: |-
- %{app_name}: Votre code à usage unique est %{code}. Il est valable pendant %{expiration} minutes. Vous ne devez pas partager ce code avec personne.
+ %{app_name} : Votre code à usage unique est %{code}. Il expire dans %{expiration} minutes. Ne partagez ce code avec personne.
@%{domain} #%{code}
- voice: Bonjour! Votre code à usage unique de six %{format_type} pour %{app_name}
- est %{code}. Votre code à usage unique est %{code}. Une fois de plus,
- votre code à usage unique est %{code}. Ce code expire dans %{expiration}
- doc_auth_link: |-
- %{app_name}: %{link} Vous vérifiez votre identité pour accéder à %{sp_or_app_name}. Prenez une photo de votre pièce d'identité pour continuer.
+ voice: Bonjour ! Votre code à usage unique de six %{format_type} pour
+ %{app_name} est %{code}. Votre code à usage unique est %{code}. De
+ nouveau, votre code à usage unique est %{code}. Ce code expire dans
+ %{expiration} minutes.
+ doc_auth_link: "%{app_name} : %{link} Vous êtes en train de confirmer votre
+ identité pour accéder à %{sp_or_app_name}. Prenez une photo de votre pièce
+ d'identité pour continuer."
error:
friendly_message:
daily_voice_limit_reached: L’envoi de votre code à usage unique a échoué car
vous avez dépassé le nombre maximal d’appels vers ce numéro de
- téléphone en 24 heures. Vous pouvez demander un code par SMS ou
+ téléphone en 24 heures. Vous pouvez demander un code par SMS ou
utiliser un autre numéro pour recevoir un appel téléphonique.
- duplicate_endpoint: Le numéro de téléphone entré n’est pas valide.
- generic: Votre code à usage unique n'a pas été envoyé.
+ duplicate_endpoint: Le numéro de téléphone saisi n’est pas valide.
+ generic: L’envoi de votre code à usage unique a échoué.
invalid_calling_area: Les appels vers ce numéro de téléphone ne sont pas pris en
charge. Veuillez essayer par SMS si vous possédez un téléphone
disposant de cette fonction.
invalid_phone_number: Le numéro de téléphone saisi n’est pas valide.
- opt_out: Le numéro de téléphone entré a désactivé les messages texte.
- permanent_failure: Le numéro de téléphone entré n’est pas valide.
+ opt_out: Le numéro de téléphone saisi a choisi de ne pas recevoir de SMS.
+ permanent_failure: Le numéro de téléphone saisi n’est pas valide.
rate_limited: Ce nombre connaît un volume de messages élevé. Veuillez réessayer
plus tard.
sms_unsupported: Le numéro de téléphone saisi ne prend pas en charge les
- messages textuels. Veuillez essayer l’option d’appel téléphonique.
+ messages texte. Veuillez essayer l’option d’appel téléphonique.
temporary_failure: Nous rencontrons des difficultés techniques. Veuillez
réessayer plus tard.
- timeout: Le serveur a pris trop de temps pour répondre. Veuillez réessayer.
+ timeout: Le serveur a mis trop de temps à répondre. Veuillez réessayer.
unknown_failure: Nous rencontrons des difficultés techniques. Veuillez réessayer
plus tard.
- voice_unsupported: Numéro de téléphone invalide. Vérifiez que vous avez entré le
- bon indicatif international ou régional.
+ voice_unsupported: Numéro de téléphone non valide. Vérifiez que vous avez saisi
+ le bon indicatif pays ou régional.
format_type:
character: caractère
- digit: chiffres
+ digit: chiffre
personal_key_regeneration_notice: Une nouvelle clé personnelle a été émise pour
- votre compte %{app_name}. Si vous ne l'avez pas demandée, réinitialisez
- votre mot de passe.
- personal_key_sign_in_notice: Votre clé personnelle a été utilisée pour vous
- connecter à votre compte %{app_name}. Si ce n'était pas vous, changez
+ votre compte %{app_name}. Si cela ne vient pas de vous, réinitialisez
votre mot de passe.
+ personal_key_sign_in_notice: Votre clé personnelle vient d’être utilisée pour
+ vous connecter à votre compte %{app_name}. Si cela ne vient pas de vous,
+ réinitialisez votre mot de passe.
diff --git a/config/locales/time/es.yml b/config/locales/time/es.yml
index 3790397b2b2..51ae19fc926 100644
--- a/config/locales/time/es.yml
+++ b/config/locales/time/es.yml
@@ -11,8 +11,8 @@ es:
- sábado
- domingo
formats:
- long: '%-d de %B de %Y'
- short: '%A, %-d de %B'
+ long: '%B %-d, %Y'
+ short: '%A, %B %-d'
month_names:
-
- enero
@@ -29,13 +29,13 @@ es:
- diciembre
range: De %{from} a %{to}
time:
- am: AM
+ am: a. m.
formats:
- event_date: '%-d de %B %Y'
- event_time: '%H:%M'
- event_timestamp: '%e de %B de %Y a las %H:%M'
- event_timestamp_js: '%{day} de %{month} de %{year} a las %{hour}:%{minute}'
- event_timestamp_utc: '%e de %B de %Y a las %H:%M UTC'
- event_timestamp_with_zone: '%e de %B de %Y a las %H:%M %Z'
+ event_date: '%B %-d, %Y'
+ event_time: '%-l:%M %p'
+ event_timestamp: '%B %-d, %Y a las %-l:%M %p'
+ event_timestamp_js: '%{month} %{day}, %{year} a las %{hour}:%{minute} %{day_period}'
+ event_timestamp_utc: '%B %-d, %Y a las %-l:%M %p UTC'
+ event_timestamp_with_zone: '%B %-d, %Y a las %-l:%M %p %Z'
sms_date: '%m/%d/%Y'
- pm: PM
+ pm: p. m.
diff --git a/config/locales/time/fr.yml b/config/locales/time/fr.yml
index 0982d39d914..010648508f5 100644
--- a/config/locales/time/fr.yml
+++ b/config/locales/time/fr.yml
@@ -2,7 +2,7 @@
fr:
date:
day_names:
- - # empty item to have correct weekday offset for %A
+ -
- lundi
- mardi
- mercredi
@@ -27,15 +27,15 @@ fr:
- octobre
- novembre
- décembre
- range: Du %{from} au %{to}
+ range: du %{from} au %{to}
time:
am: A.M.
formats:
event_date: '%-d %B %Y'
- event_time: '%H:%M'
- event_timestamp: '%e %B %Y à %H:%M'
- event_timestamp_js: '%{day} %{month} %{year} à %{hour}:%{minute}'
- event_timestamp_utc: '%e %B %Y à %H:%M UTC'
- event_timestamp_with_zone: '%e %B %Y à %H:%M %Z'
- sms_date: '%m/%d/%Y'
+ event_time: '%-l h %M %p'
+ event_timestamp: '%-d %B %Y à %-l h %M %p'
+ event_timestamp_js: '%{day} %{month} %{year} à %{hour} h %{minute}'
+ event_timestamp_utc: '%-d %B %Y à %-l h %M %p UTC'
+ event_timestamp_with_zone: '%-d %B %Y à %-l h %M %p %Z'
+ sms_date: '%d/%m/%Y'
pm: P.M.
diff --git a/config/locales/titles/es.yml b/config/locales/titles/es.yml
index 7e75cc4ece4..db5c6dc40d8 100644
--- a/config/locales/titles/es.yml
+++ b/config/locales/titles/es.yml
@@ -5,47 +5,47 @@ es:
account_locked: Cuenta bloqueada temporalmente
add_info:
phone: Agregar un número de teléfono
- backup_codes: No pierda sus códigos de respaldo
+ backup_codes: No pierda sus códigos de recuperación
confirmations:
- delete: Por favor confirmar
+ delete: Confirme
show: Elija una contraseña
doc_auth:
address: Actualice su dirección postal
- doc_capture: Agrega tu identificación
- hybrid_handoff: Verifica tu identificación
- link_sent: Enlace enviado
- processing_images: Procesando tus imágenes
- ssn: Ingresa tu número del seguro social
- switch_back: Regresar a tu computadora
- verify: Verifica tu identidad
+ doc_capture: Agregue su identificación
+ hybrid_handoff: Verifique su identidad
+ link_sent: Vínculo enviado
+ processing_images: Procesando sus imágenes
+ ssn: Ingrese su número de Seguro Social
+ switch_back: Vuelva a su computadora
+ verify: Verifique su identidad
edit_info:
email_language: Editar la preferencia de idioma del correo electrónico
password: Edite su contraseña
phone: Edite su número de teléfono
enter_2fa_code:
- one_time_code: Ingrese el código de seguridad de un solo uso
- security_code: Ingese su código de seguridad de sólo un uso
+ one_time_code: Ingrese el código seguro de un solo uso
+ security_code: Ingrese el código de seguridad de un solo uso
failure:
information_not_verified: Información personal no verificada
phone_verification: Número telefónico no verificado
- forget_all_browsers: Olvídate de todos los navegadores
+ forget_all_browsers: Olvidar todos los navegadores
idv:
canceled: Se canceló la verificación de identidad
- cancellation_prompt: Cancela la verificación de identidad
- come_back_soon: Vuelve pronto
- enter_one_time_code: Introduzca su código único
- enter_password: Vuelve a ingresar tu contraseña
- enter_password_letter: Vuelve a ingresar tu contraseña para enviar su carta
- get_letter: Recibe una carta
- personal_key: Guarda tu llave personal
+ cancellation_prompt: Cancelar la verificación de identidad
+ come_back_soon: Vuelva pronto
+ enter_one_time_code: Introduzca su código de un solo uso
+ enter_password: Vuelva a ingresar su contraseña
+ enter_password_letter: Vuelva a ingresar su contraseña para enviar su carta
+ get_letter: Obtenga una carta
+ personal_key: Guarde su clave personal
phone: Verifique su número de teléfono
reset_password: Restablecer la contraseña
- verify_info: Verifica tu información
+ verify_info: Verifique su información
mfa_setup:
- face_touch_unlock_confirmation: Agregado el desbloqueo facial o táctil
- suggest_second_mfa: '¡Has agregado tu primer método de autenticación! Agrega un
- segundo método como respaldo.'
- no_auth_option: No se encontró mensaje de inicio de sesión
+ face_touch_unlock_confirmation: Se agregó el desbloqueo facial o táctil
+ suggest_second_mfa: Agregó su primer método de autenticación. Agregue un segundo
+ método como respaldo.
+ no_auth_option: No se encontró ningún método de inicio de sesión
openid_connect:
authorization: Autorización de OpenID Connect
logout: Cierre de sesión de OpenID Connect
@@ -54,34 +54,33 @@ es:
forgot: Restablecer la contraseña
personal_key: Por si acaso
piv_cac_login:
- add: Agregue su PIV o CAC
- new: Use su PIV / CAC para iniciar sesión en su cuenta
+ add: Agregue su tarjeta PIV o CAC
+ new: Use su tarjeta PIV o CAC para iniciar sesión en su cuenta
piv_cac_setup:
- new: Use su tarjeta PIV/CAC para asegurar su cuenta
+ new: Use su tarjeta PIV o CAC para proteger su cuenta
upsell: Aumente la seguridad de su cuenta con una identificación de empleado del
gobierno.
- present_piv_cac: Presenta tu PIV/CAC
+ present_piv_cac: Presente su tarjeta PIV o CAC
present_webauthn: Conecte su clave de seguridad de hardware
reactivate_account: Reactive su cuenta
registrations:
- new: Crea tu cuenta
+ new: Cree su cuenta
revoke_consent: Revocar consentimiento
rules_of_use: Reglas de uso
sign_up:
- completion_consent_expired_ial1: Ya ha pasado un año desde que nos dio su
- consentimiento para compartir su información.
- completion_consent_expired_ial2: Ha pasado un año desde que nos dio su
- consentimiento para compartir su identidad verificada.
- completion_first_sign_in: Continúa con %{sp}
+ completion_consent_expired_ial1: Hace un año que nos dio su consentimiento para divulgar su información
+ completion_consent_expired_ial2: Hace un año que nos dio su consentimiento para
+ divulgar su identidad verificada
+ completion_first_sign_in: Continuar con %{sp}
completion_ial2: Conecte su información verificada a %{sp}
completion_new_attributes: '%{sp} está solicitando nueva información'
- completion_new_sp: Acabas de iniciar sesión por primera vez
- completion_reverified_consent: Proporciónale tu información actualizada a %{sp}
+ completion_new_sp: Está iniciando sesión por primera vez
+ completion_reverified_consent: Comunique su información actualizada a %{sp}
confirmation: Continuar para iniciar sesión
totp_setup:
new: Agregar aplicación de autenticación
two_factor_setup: Configuración de autenticación de dos factores
- verify_email: Consulta tu correo electrónico
+ verify_email: Revise su correo electrónico
visitors:
- index: Bienvenido/a
- webauthn_setup: Añade tu clave de seguridad
+ index: Bienvenido
+ webauthn_setup: Añada su clave de seguridad
diff --git a/config/locales/titles/fr.yml b/config/locales/titles/fr.yml
index 848f0acdeec..7ebf628037d 100644
--- a/config/locales/titles/fr.yml
+++ b/config/locales/titles/fr.yml
@@ -8,79 +8,79 @@ fr:
backup_codes: Ne perdez pas vos codes de sauvegarde
confirmations:
delete: Veuillez confirmer
- show: Choisissez un mot de passe
+ show: Choisir un mot de passe
doc_auth:
- address: Mettez à jour votre adresse postale
- doc_capture: Ajoutez votre pièce d’identité
- hybrid_handoff: Vérifiez votre pièce d’identité
+ address: Mettre à jour votre adresse postale
+ doc_capture: Ajouter votre pièce d’identité
+ hybrid_handoff: Vérifier votre identité
link_sent: Lien envoyé
- processing_images: Traitement de vos images
- ssn: Entrez votre numéro de sécurité sociale
- switch_back: Retournez sur votre ordinateur
- verify: Vérifiez votre identité
+ processing_images: Traitement de vos images en cours
+ ssn: Saisir votre numéro de sécurité sociale
+ switch_back: Retourner sur votre ordinateur
+ verify: Vérifier votre identité
edit_info:
- email_language: Modifier la préférence de langue des e-mails
+ email_language: Modifier la langue dans laquelle vous préférez recevoir les e-mails
password: Modifier votre mot de passe
phone: Modifier votre numéro de téléphone
enter_2fa_code:
- one_time_code: Entrez le code de sécurité à usage unique
- security_code: Entrez le code de sécurité à utilisation unique
+ one_time_code: Saisir le code de sécurité à usage unique
+ security_code: Saisir le code de sécurité à usage unique
failure:
information_not_verified: Informations personnelles non vérifiées
phone_verification: Numéro de téléphone non vérifié
- forget_all_browsers: Oubliez tous les navigateurs
+ forget_all_browsers: Oublier tous les navigateurs
idv:
canceled: La vérification d’identité est annulée
- cancellation_prompt: Annulez la vérification d’identité
+ cancellation_prompt: Annuler la vérification d’identité
come_back_soon: Revenez bientôt
- enter_one_time_code: Entrez votre code à usage unique
- enter_password: Saisissez à nouveau votre mot de passe
- enter_password_letter: Saisissez à nouveau votre mot de passe pour envoyer votre lettre’
- get_letter: Obtenez une lettre
- personal_key: Enregistrez votre clé personnelle
- phone: Vérifiez votre numéro de téléphone
- reset_password: Réinitialisez le mot de passe
- verify_info: Vérifiez vos informations
+ enter_one_time_code: Saisissez votre code à usage unique
+ enter_password: Ressaisissez votre mot de passe
+ enter_password_letter: Ressaisissez votre mot de passe pour envoyer votre lettre
+ get_letter: Obtenir une lettre
+ personal_key: Sauvegarder votre clé personnelle
+ phone: Vérifier votre numéro de téléphone
+ reset_password: Réinitialiser le mot de passe
+ verify_info: Vérifier vos informations
mfa_setup:
face_touch_unlock_confirmation: Déverrouillage facial ou tactile ajouté
suggest_second_mfa: Vous avez ajouté votre première méthode d’authentification !
Ajoutez-en une deuxième en guise de sauvegarde.
- no_auth_option: Aucun message de connexion trouvé
+ no_auth_option: Aucune méthode de connexion trouvée
openid_connect:
authorization: Autorisation OpenID Connect
logout: Déconnexion OpenID Connect
passwords:
- change: Changez le mot de passe de votre compte
- forgot: Réinitialisez le mot de passe
- personal_key: Juste au cas
+ change: Changer le mot de passe de votre compte
+ forgot: Réinitialiser le mot de passe
+ personal_key: Juste au cas où
piv_cac_login:
- add: Ajoutez votre PIV ou CAC
- new: Utilisez votre PIV / CAC pour vous connecter à votre compte
+ add: Ajouter votre carte PIV ou CAC
+ new: Utiliser votre carte PIV/CAC pour vous connecter à votre compte
piv_cac_setup:
- new: Utilisez votre carte PIV/CAC pour sécuriser votre compte
+ new: Utiliser votre carte PIV/CAC pour sécuriser votre compte
upsell: Renforcer la sécurité de votre compte avec une carte d’employé fédéral
- present_piv_cac: Veuillez présenter votre carte PIV/CAC
- present_webauthn: Branchez votre clé de sécurité physique
- reactivate_account: Réactiver le profil
+ present_piv_cac: Présenter votre carte PIV/CAC
+ present_webauthn: Brancher votre clé de sécurité physique
+ reactivate_account: Réactiver votre compte
registrations:
- new: S’inscrire et créer un compte
+ new: Créer votre compte
revoke_consent: Révoquer le consentement
rules_of_use: Règles d’utilisation
sign_up:
completion_consent_expired_ial1: Cela fait un an que vous nous avez donné votre
- accord pour partager vos informations.
- completion_consent_expired_ial2: Il y a un an, vous nous avez donné votre accord
- pour partager votre identité vérifiée.
+ consentement pour partager vos informations
+ completion_consent_expired_ial2: Cela fait un an que vous nous avez donné votre
+ consentement pour partager votre identité vérifiée
completion_first_sign_in: Continuer vers %{sp}
- completion_ial2: Connectez vos informations vérifiées à %{sp}
+ completion_ial2: Connecter vos informations vérifiées à %{sp}
completion_new_attributes: '%{sp} demande de nouvelles informations'
completion_new_sp: Vous vous connectez pour la première fois
- completion_reverified_consent: Partagez vos informations mises à jour avec %{sp}
+ completion_reverified_consent: Partager vos informations mises à jour avec %{sp}
confirmation: Continuer à vous connecter
totp_setup:
- new: Ajouter une application d’authentification
+ new: Ajouter une appli d’authentification
two_factor_setup: Configuration de l’authentification à deux facteurs
- verify_email: Vérifiez votre courriel
+ verify_email: Consulter vos e-mails
visitors:
index: Bienvenue
- webauthn_setup: Ajoutez votre clé de sécurité
+ webauthn_setup: Ajouter votre clé de sécurité
diff --git a/config/locales/two_factor_authentication/es.yml b/config/locales/two_factor_authentication/es.yml
index ffd4f5d0c6b..f0cacb47a45 100644
--- a/config/locales/two_factor_authentication/es.yml
+++ b/config/locales/two_factor_authentication/es.yml
@@ -3,10 +3,10 @@ es:
two_factor_authentication:
aal2_request:
phishing_resistant_html: '%{sp_name} requiere un método de
- autenticación de alta seguridad, como el desbloqueo facial o táctil, una
- llave de seguridad o una identificación de empleado público.'
+ autenticación de alta seguridad, como desbloqueo facial o táctil, una
+ clave de seguridad o una identificación de empleado de gobierno.'
piv_cac_only_html: '%{sp_name} requiere su identificación de
- empleado público, un método de autenticación de alta seguridad.'
+ empleado de gobierno, un método de autenticación de alta seguridad.'
account_reset:
cancel_link: Cancelar su solicitud
link: eliminando su cuenta
@@ -15,10 +15,10 @@ es:
completar el proceso. Por favor, vuelva más tarde.
successful_cancel: Gracias. Su solicitud para eliminar su cuenta de %{app_name}
ha sido cancelada.
- text_html: Si no puede usar ninguna de estas opciones de seguridad anteriores,
- puede restablecer tus preferencias por %{link_html}.
+ text_html: Si no puede usar ninguno de los métodos de autenticación anteriores,
+ puede restablecer sus preferencias en %{link_html}.
attempt_remaining_warning_html:
- one: Le quedan %{count} intento.
+ one: Le queda %{count} intento.
other: Le quedan %{count} intentos.
auth_app:
change_nickname: Cambiar apodo
@@ -29,121 +29,120 @@ es:
nickname: Apodo
renamed: Se ha cambiado correctamente el nombre de su método de aplicación de
autenticación.
- backup_code_header_text: Ingrese su código de respaldo
- backup_code_prompt: Puede utilizar este código de respaldo una vez. Tendrá que
- usar un nuevo código de respaldo la próxima vez después de que lo envíe.
+ backup_code_header_text: Ingrese su código de recuperación
+ backup_code_prompt: Puede utilizar este código de recuperación una sola vez.
+ Después de enviarlo, tendrá que usar un nuevo código de recuperación la
+ próxima vez.
backup_codes:
- instructions: Si no tiene acceso a otro dispositivo, guarde bien sus códigos de
- respaldo. No podrá iniciar sesión en %{app_name} si pierde sus códigos
- de respaldo.
- warning_html: Solo ha configurado códigos de respaldo en su cuenta.
- Si tiene acceso a otro dispositivo, como un celular, proteja su
- cuenta mediante otro método de autenticación.
- choose_another_option: '‹ Elige otra opción de seguridad'
+ instructions: Si no tiene acceso a otro dispositivo, proteja sus códigos de
+ recuperación. Si los pierde, no podrá iniciar sesión en %{app_name}.
+ warning_html: 'Solo ha configurado códigos de recuperación en su cuenta.
+ Si tiene acceso a otro dispositivo, como un teléfono, proteja
+ su cuenta con otro método de autenticación.'
+ choose_another_option: '‹ Elija otro método de autenticación'
form_legend: Elija sus métodos de autenticación
- header_text: Introduzca su código único
- important_alert_icon: ícono de aviso importante
- invalid_backup_code: Esa código de respaldo no es válida.
- invalid_otp: Ese código único no es válido. Inténtelo de nuevo o solicite un
- nuevo código.
+ header_text: Introduzca su código de un solo uso
+ important_alert_icon: icono importante de alerta
+ invalid_backup_code: Ese código de recuperación no es válido.
+ invalid_otp: Ese código de un solo uso no es válido. Inténtelo de nuevo o
+ solicite un nuevo código.
invalid_personal_key: Esa clave personal no es válida.
- invalid_piv_cac: Ese PIV/CAC no funcionó. Asegúrese de que sea el PIV/CAC
- correcto para esta cuenta. Si es así, puede haber un problema con su
- PIV/CAC, PIN o algo salió mal de nuestra parte. Intente nuevamente o elija
- otro método de autenticación.
- learn_more: Más información sobre las opciones de autenticación.
- login_intro: Usted configuró esto cuando creó su cuenta.
- login_intro_reauthentication: Antes de que pueda realizar cambios en su cuenta,
- debemos confirmar su identidad mediante uno de sus métodos de
- autenticación.
+ invalid_piv_cac: Esa tarjeta PIV o CAC no funcionó. Asegúrese de que sea la
+ tarjeta PIV o CAC correcta para esta cuenta. Si lo es, puede haber un
+ problema con el PIN de su tarjeta PIV o CAC, o bien el problema es
+ nuestro. Inténtelo de nuevo o elija otro método de autenticación.
+ learn_more: Obtenga más información sobre las opciones de autenticación
+ login_intro: Usted los configuró cuando creó su cuenta.
+ login_intro_reauthentication: Antes de que pueda hacer cambios en su cuenta,
+ debemos usar uno de sus métodos de autenticación para confirmar que se
+ trata de usted.
login_options:
auth_app: Aplicación de autenticación
- auth_app_info: Use su aplicación de autenticación para obtener el código de seguridad.
- backup_code: Códigos de respaldo
- backup_code_info: Use un código de respaldo de su lista de códigos de respaldo
- para iniciar sesión.
+ auth_app_info: Use su aplicación de autenticación para obtener un código de seguridad.
+ backup_code: Códigos de recuperación
+ backup_code_info: Use uno de los códigos de recuperación de su lista para iniciar sesión.
personal_key: Clave personal
- personal_key_info: Use la clave personal de 16 caracteres que usó en la creación
- de la cuenta.
- piv_cac: Empleados del Gobierno
- piv_cac_info: Use su tarjeta PIV / CAC para asegurar su cuenta.
- sms: Mensaje de texto / SMS
+ personal_key_info: Use la clave personal de 16 caracteres que recibió al crear la cuenta.
+ piv_cac: Identificación de empleado gubernamental
+ piv_cac_info: Use su tarjeta PIV o CAC en lugar de un código de seguridad.
+ sms: Mensaje de texto
sms_info_html: Obtenga el código de un solo uso a través de un mensaje de texto
- al %{phone}.
+ enviado al %{phone}.
voice: Llamada telefónica automatizada
voice_info_html: Obtenga el código de un solo uso a través de una llamada
- telefónica al %{phone}. (Solo números de teléfono de
- América del Norte).
- webauthn: Llave de seguridad
- webauthn_info: Use su llave de seguridad para acceder a su cuenta.
+ telefónica hecha al %{phone} (solo números de teléfono
+ de Norteamérica).
+ webauthn: Clave de seguridad
+ webauthn_info: Use su clave de seguridad para acceder a su cuenta.
webauthn_platform: Desbloqueo facial o táctil
- webauthn_platform_info: Use la cara o la huella digital para acceder a su cuenta
+ webauthn_platform_info: Use su rostro o huella dactilar para acceder a su cuenta
sin un código de un solo uso.
- login_options_link_text: Elige otra opción de seguridad
+ login_options_link_text: Elija otro método de autenticación
login_options_reauthentication_title: Se requiere reautenticación
- login_options_title: Seleccione su opción de seguridad
+ login_options_title: Seleccione su método de autenticación
max_backup_code_login_attempts_reached: Para su seguridad, su cuenta está
- bloqueada temporalmente porque ha ingresado el código de respaldo
- incorrectamente muchas veces.
+ bloqueada temporalmente porque ingresó mal el código de recuperación
+ demasiadas veces.
max_generic_login_attempts_reached: Para su seguridad, su cuenta está bloqueada temporalmente.
- max_otp_login_attempts_reached: Como medida de seguridad, su cuenta ha sido
- bloqueada de forma temporal, ya que ingresó el código de un solo uso de
- forma incorrecta reiteradas veces.
+ max_otp_login_attempts_reached: Para su seguridad, su cuenta está bloqueada
+ temporalmente porque ingresó mal el código de un solo uso demasiadas
+ veces.
max_otp_requests_reached: Para su seguridad, su cuenta está temporalmente
- bloqueada porque ha solicitado un código único demasiadas veces.
- max_personal_key_login_attempts_reached: Para su seguridad, su cuenta ha sido
- bloqueada temporalmente porque ha ingresado incorrectamente la clave
- personal demasiadas veces.
- max_piv_cac_login_attempts_reached: Por tu seguridad, tu cuenta está bloqueada
- temporalmente dado que has presentado las credenciales de tu piv/cac de
- forma incorrecta demasiadas veces.
- mobile_terms_of_service: Condiciones de servicio móvil
- no_auth_option: No se pudo encontrar ninguna opción de autenticación para iniciar sesión
+ bloqueada porque solicitó un código de un solo uso demasiadas veces.
+ max_personal_key_login_attempts_reached: Para su seguridad, su cuenta está
+ bloqueada temporalmente porque ingresó mal la clave personal demasiadas
+ veces.
+ max_piv_cac_login_attempts_reached: Para su seguridad, su cuenta está bloqueada
+ temporalmente porque presentó mal su tarjeta PIV o CAC demasiadas veces.
+ mobile_terms_of_service: Condiciones del servicio móvil
+ no_auth_option: No se pudo encontrar ninguna opción de autenticación para que
+ iniciara sesión.
opt_in:
- error_retry: Lo sentimos, estamos teniendo problemas para aceptarlo. Por favor,
- inténtelo de nuevo.
- opted_out_html: Ha optado por no recibir mensajes de texto en el
+ error_retry: Lo sentimos, estamos teniendo problema para admitirlo; inténtelo de
+ nuevo.
+ opted_out_html: Optó por no recibir mensajes de texto en el
%{phone_number_html}. Puede optar por recibir un código de seguridad de
- nuevo a ese número de teléfono.
- opted_out_last_30d_html: Canceló su suscripción para recibir mensajes de texto
- al %{phone_number_html} en los últimos 30 días. Solo podemos suscribir
- un número telefónico una vez cada 30 días.
- title: No hemos podido enviar un código de seguridad a su número de teléfono
- wait_30d_opt_in: Después de 30 días, podrá inscribirse y recibir un código de
- seguridad para ese número de teléfono.
+ nuevo en ese número de teléfono.
+ opted_out_last_30d_html: Optó por no recibir mensajes de texto en el
+ %{phone_number_html} en los últimos 30 días. Solo podemos admitir un
+ número telefónico una vez cada 30 días.
+ title: No pudimos enviar un código de seguridad a su número de teléfono
+ wait_30d_opt_in: Después de 30 días, puede optar por recibir un código de
+ seguridad en ese número de teléfono.
otp_delivery_preference:
- instruction: Envíe mensajes de texto y llamadas a este número por defecto.
- landline_warning_html: Al parecer el número ingresado pertenece a un
- teléfono fijo. Mejor solicita un código de un solo uso
- por %{phone_setup_path}.
+ instruction: Puede cambiar esto en cualquier momento. Si usa un número de
+ teléfono fijo, seleccione “Llamada telefónica”.
+ landline_warning_html: Parece que el número ingresado es de un teléfono
+ fijo. Solicite mejor un código de un solo uso por
+ %{phone_setup_path}.
no_supported_options: No podemos verificar los números de teléfono de %{location}
phone_call: llamada telefónica
- sms: Mensaje de texto (SMS, sigla en inglés)
- sms_unsupported: No podemos enviar mensajes de texto a números de teléfono de %{location}.
+ sms: Mensaje de texto (SMS)
+ sms_unsupported: No podemos enviar mensajes de texto a números de teléfono en %{location}.
title: Cómo obtendrá su código
voice: Llamada telefónica
voice_unsupported: No podemos llamar a números de teléfono en %{location}.
otp_make_default_number:
- instruction: Envíe códigos únicos a este número por defecto.
+ instruction: Enviar códigos de un solo uso a este número de manera predeterminada.
label: Número de teléfono predeterminado
- one_number_instruction: Debes tener más de un número de teléfono agregado para
+ one_number_instruction: Debe haber agregado más de un número de teléfono para
seleccionar un número de teléfono predeterminado.
- one_number_title: Este es tu número predeterminado
- title: '¿Es este tu número de teléfono predeterminado?'
+ one_number_title: Este es su número predeterminado
+ title: '¿Desea configurar este como su número de teléfono predeterminado?'
personal_key_header_text: Ingrese su clave personal
- personal_key_prompt: Puede usar esta clave personal una vez. Después de
- ingresarlo, se le dará una nueva clave.
+ personal_key_prompt: Puede usar esta clave personal una sola vez. Después de
+ ingresarla, recibirá una nueva clave.
phone:
delete:
- failure: No se puede eliminar el teléfono.
- success: Su teléfono ha sido eliminado.
+ failure: No se puede eliminar su teléfono.
+ success: Su teléfono fue eliminado.
phone_fee_disclosure: Se pueden aplicar tarifas por mensajes y datos.
- phone_info: Le enviaremos un código de un solo uso cada vez que ingrese.
+ phone_info: Le enviaremos un código de un solo uso cada vez que inicie sesión.
phone_label: Número de teléfono
phone_verification:
troubleshooting:
- change_number: Utilice otro número de teléfono.
- code_not_received: No recibí mi código de un solo uso.
+ change_number: Use otro número de teléfono
+ code_not_received: No recibí mi código de un solo uso
piv_cac:
change_nickname: Cambiar apodo
delete: Eliminar este método
@@ -152,7 +151,7 @@ es:
manage_accessible_label: Gestionar PIV/CAC
nickname: Apodo
renamed: Se ha cambiado correctamente el nombre de su método PIV/CAC
- piv_cac_header_text: Presenta tu PIV/CAC
+ piv_cac_header_text: Presente su tarjeta PIV o CAC
piv_cac_upsell:
add_piv: Agregar tarjeta PIV/CAC
choose_other_method: Elegir otros métodos
@@ -166,81 +165,76 @@ es:
seguridad a su cuenta.
skip: Omitir
please_try_again_html: Inténtelo de nuevo en %{countdown}.
- read_about_two_factor_authentication: Conozca la autenticación de dos factores
+ read_about_two_factor_authentication: Lea sobre la autenticación de dos factores
recaptcha:
- disclosure_statement_html: Este sitio está protegido por reCAPTCHA y se
- %{google_policy_link_html} y %{google_tos_link_html} de Google. Consulte
- %{login_tos_link_html} de %{app_name} para dispositivos móviles.
- google_policy_link: aplican la política de privacidad
- google_tos_link: las condiciones de servicio
- login_tos_link: las condiciones de uso
+ disclosure_statement_html: Este sitio está protegido por reCAPTCHA y se aplican
+ %{google_policy_link_html} y %{google_tos_link_html} de Google. Lea
+ %{login_tos_link_html} de %{app_name}.
+ google_policy_link: Política de privacidad
+ google_tos_link: Condiciones de servicio
+ login_tos_link: Condiciones de uso del servicio móvil
recommended: Recomendado
- totp_header_text: Ingrese su código de la app de autenticación
+ totp_header_text: Ingrese su código de la aplicación de autenticación
two_factor_aal3_choice: Se requiere autenticación adicional
- two_factor_aal3_choice_intro: Esta aplicación requiere un mayor nivel de
+ two_factor_aal3_choice_intro: Esta aplicación requiere un nivel más alto de
seguridad. Debe verificar su identidad con un dispositivo físico, como una
- llave de seguridad o una identificación de empleado del Gobierno (PIV o
- CAC) para acceder a su información.
+ clave de seguridad o una identificación de empleado de gobierno (tarjeta
+ PIV o CAC), para acceder a su información.
two_factor_choice: Configuración del método de autenticación
two_factor_choice_options:
auth_app: Aplicación de autenticación
- auth_app_info: Descargue o use la aplicación de autenticación de su preferencia
- para generar códigos seguros.
- backup_code: Códigos de respaldo
- backup_code_info: Una lista de 10 códigos que puede imprimir o guardar en su
- dispositivo. Generaremos una nueva lista cuando haya usado el último
- código. Tenga presente que los códigos de seguridad pueden perderse con
+ auth_app_info: Descargue o use la aplicación de autenticación que prefiera para
+ generar códigos seguros.
+ backup_code: Códigos de recuperación
+ backup_code_info: Una lista de 10 códigos que puede imprimir o guardar en su
+ dispositivo. Cuando haya usado el último código, generaremos una lista
+ nueva. Recuerde que los códigos de recuperación se pierden con
facilidad.
configurations_added:
- one: '%{count} añadido'
- other: '%{count} añadido'
- no_count_configuration_added: Añadido
+ one: '%{count} añadida'
+ other: '%{count} añadida'
+ no_count_configuration_added: Añadida
phone: Mensaje de texto o de voz
- phone_info: Recibir un código seguro por medio de un mensaje de texto (SMS) o
- una llamada telefónica.
- phone_info_no_voip: Se prohíbe el uso de servicios telefónicos basados en la web
- (VOIP) o de números de teléfono de tarificación adicional (de pago).
+ phone_info: Reciba un código seguro por mensaje de texto (SMS) o llamada telefónica.
+ phone_info_no_voip: No use servicios telefónicos basados en la web (VoIP) ni
+ números de teléfono de tarifa especial (cuota).
piv_cac: Identificación de empleado gubernamental
- piv_cac_info: Credenciales PIV/CAC para empleados gubernamentales y del
- ejército. Únicamente versión de escritorio.
+ piv_cac_info: Tarjetas PIV o CAC para empleados gubernamentales y militares.
+ Únicamente computadora de escritorio.
webauthn: Clave de seguridad
webauthn_info: Conecte su clave de seguridad física a su dispositivo. No
necesitará ingresar un código.
webauthn_platform: Desbloqueo facial o táctil
- webauthn_platform_info: Use la cara o la huella digital para acceder a su cuenta
+ webauthn_platform_info: Use su rostro o huella dactilar para acceder a su cuenta
sin un código de un solo uso.
two_factor_hspd12_choice: Se requiere autenticación adicional
- two_factor_hspd12_choice_intro: Esta aplicación requiere un mayor nivel de
- seguridad. Para poder acceder a su información, deberá verificar su
- identidad a través de un dispositivo físico como una clave de seguridad o
- identificación de empleado gubernamental (PIV/CAC)
+ two_factor_hspd12_choice_intro: Esta aplicación requiere un nivel más alto de
+ seguridad. Debe verificar su identidad con una identificación de empleado
+ de gobierno (tarjeta PIV o CAC), para acceder a su información.
webauthn_authenticating: Autenticando sus credenciales…
webauthn_error:
additional_methods_link: elija otro método de autenticación
- connect_html: No hemos podido conectar la clave de seguridad. Por favor,
- inténtelo de nuevo o %{link_html}.
- screen_lock_no_other_mfa: No pudimos comprobar la autenticidad mediante
- desbloqueo facial o táctil. Intente iniciar sesión en el dispositivo
- donde configuró por primera vez el desbloqueo facial o táctil.
- screen_lock_other_mfa_html: No pudimos comprobar la autenticidad mediante
- desbloqueo facial o táctil. %{link_html} o intente iniciar sesión en el
- dispositivo donde configuró por primera vez el desbloqueo facial o
- táctil.
- try_again: El desbloqueo facial o táctil no fue exitoso. Por favor, inténtelo de
- nuevo o %{link}.
- use_a_different_method: Utilice otro método de autenticación
- webauthn_header_text: Conecte su llave de seguridad
+ connect_html: No pudimos conectar la clave de seguridad. Inténtelo de nuevo o
+ %{link_html}.
+ screen_lock_no_other_mfa: No pudimos autenticar con desbloqueo facial o táctil.
+ Intente iniciar sesión en el dispositivo donde configuró por primera vez
+ el desbloqueo facial o táctil.
+ screen_lock_other_mfa_html: No pudimos autenticar con desbloqueo facial o
+ táctil. %{link_html} o intente iniciar sesión en el dispositivo donde
+ configuró por primera vez el desbloqueo facial o táctil.
+ try_again: No se logró el desbloqueo facial o táctil. Inténtelo de nuevo o %{link}.
+ use_a_different_method: Use un método de autenticación diferente
+ webauthn_header_text: Conecte su clave de seguridad
webauthn_platform:
- change_nickname: Cambiar apodo
+ change_nickname: Cambiar alias
delete: Eliminar este dispositivo
- deleted: Se ha eliminado correctamente un método de desbloqueo facial o táctil
- edit_heading: Gestione su configuración de desbloqueo facial o táctil
- manage_accessible_label: Gestionar desbloqueo facial o táctil
- nickname: Apodo
- renamed: Se ha cambiado correctamente el nombre de su método de desbloqueo
- facial o táctil
+ deleted: Se eliminó un método de desbloqueo facial o táctil
+ edit_heading: Administre su configuración de desbloqueo facial o táctil
+ manage_accessible_label: Administrar desbloqueo facial o táctil
+ nickname: Alias
+ renamed: Logró cambiar el nombre de su método de desbloqueo facial o táctil
webauthn_platform_header_text: Usar desbloqueo facial o táctil
- webauthn_platform_use_key: Usar el desbloqueo de pantalla
+ webauthn_platform_use_key: Usar desbloqueo de pantalla
webauthn_roaming:
change_nickname: Cambiar apodo
delete: Eliminar este dispositivo
@@ -249,4 +243,4 @@ es:
manage_accessible_label: Gestionar la clave de seguridad
nickname: Apodo
renamed: Se ha cambiado correctamente el nombre de su método de clave de seguridad
- webauthn_use_key: Usar llave de seguridad
+ webauthn_use_key: Usar clave de seguridad
diff --git a/config/locales/two_factor_authentication/fr.yml b/config/locales/two_factor_authentication/fr.yml
index b4876271f24..78a94259159 100644
--- a/config/locales/two_factor_authentication/fr.yml
+++ b/config/locales/two_factor_authentication/fr.yml
@@ -3,12 +3,10 @@ fr:
two_factor_authentication:
aal2_request:
phishing_resistant_html: '%{sp_name} nécessite une méthode
- d’authentification de haute sécurité, telle que le déverrouillage du
- visage ou du tactile, une clé de sécurité ou un identifiant d’employé du
- gouvernement.'
- piv_cac_only_html: '%{sp_name} nécessite votre identifiant
- d’employé du gouvernement, une méthode d’authentification de haute
- sécurité.'
+ d’authentification de haute sécurité, telle que le déverrouillage facial
+ ou tactile, une clé de sécurité ou une carte d’employé fédéral.'
+ piv_cac_only_html: '%{sp_name} nécessite votre carte d’employé
+ fédéral, qui est une méthode d’authentification de haute sécurité.'
account_reset:
cancel_link: Annuler votre demande
link: supprimer votre compte
@@ -17,8 +15,8 @@ fr:
la demande pour terminer le processus. Veuillez vérifier plus tard.
successful_cancel: Je vous remercie. Votre demande de suppression de votre
compte %{app_name} a été annulée.
- text_html: Si vous ne pouvez pas utiliser l’une de ces options de sécurité
- ci-dessus, vous pouvez réinitialiser vos préférences par %{link_html}.
+ text_html: Si vous ne pouvez utiliser aucune des options de sécurité ci-dessus,
+ vous pouvez réinitialiser vos préférences en %{link_html}.
attempt_remaining_warning_html:
one: Il vous reste %{count} tentative.
other: Il vous reste %{count} tentatives.
@@ -30,38 +28,39 @@ fr:
manage_accessible_label: Gérer l’application d’authentification
nickname: Pseudo
renamed: Votre méthode d’application d’authentification a été renommée avec succès
- backup_code_header_text: Entrez votre code de sauvegarde
+ backup_code_header_text: Saisissez votre code de sauvegarde
backup_code_prompt: Vous pouvez utiliser ce code de sauvegarde une seule fois.
Après l’avoir envoyé, vous devrez utiliser un nouveau code de sauvegarde
- la fois suivante
+ la fois suivante.
backup_codes:
instructions: Si vous n’avez pas accès à un autre appareil, conservez vos codes
de sauvegarde en lieu sûr. Si vous perdez vos codes de sauvegarde, vous
ne pourrez plus vous connecter à %{app_name}.
- warning_html: Vous n’avez configuré que des codes de sauvegarde sur
+ warning_html: 'Vous n’avez configuré que des codes de sauvegarde sur
votre compte. Si vous avez accès à un autre appareil, tel qu’un
téléphone, protégez votre compte à l’aide d’une autre méthode
- d’authentification.
- choose_another_option: '‹ Choisissez une autre option de sécurité'
+ d’authentification.'
+ choose_another_option: '‹ Choisir une autre méthode d’authentification'
form_legend: Choisissez vos méthodes d’authentification
- header_text: Entrez votre code à usage unique
- important_alert_icon: Icône d’alerte importante
- invalid_backup_code: Ce code de sauvegarde est invalide.
- invalid_otp: Ce code à usage unique est invalide. Veuillez réessayer ou demander
- un nouveau code.
- invalid_personal_key: Cette clé personnelle est non valide.
- invalid_piv_cac: Ce PIV/CAC n’a pas fonctionné. Assurez-vous que c’est le bon
- PIV/CAC pour ce compte. Si c’est le cas, votre PIV/CAC, votre NIP ou un
- problème survenu de notre côté pourrait bien poser problème. Réessayez ou
- choisissez une autre méthode d’authentification.
+ header_text: Saisissez votre code à usage unique
+ important_alert_icon: icône d’alerte importante
+ invalid_backup_code: Ce code de sauvegarde n’est pas valide.
+ invalid_otp: Ce code à usage unique n’est pas valide. Veuillez réessayer ou
+ demander un nouveau code.
+ invalid_personal_key: Cette clé personnelle n’est pas valide.
+ invalid_piv_cac: Cette carte PIV/CAC n’a pas fonctionné. Assurez-vous qu’il
+ s’agit de la bonne carte PIV/CAC pour ce compte. Si c’est le cas, il se
+ peut qu’il y ait un problème avec votre carte PIV/CAC ou votre NIP ou
+ qu’un problème soit survenu de notre côté. Réessayez ou choisissez une
+ autre méthode d’authentification.
learn_more: En savoir plus sur les options d’authentification
- login_intro: Vous les avez configurés lorsque vous avez crée votre compte.
+ login_intro: Vous les avez configurées lorsque vous avez créé votre compte.
login_intro_reauthentication: Avant que vous puissiez apporter des modifications
à votre compte, nous devons nous assurer qu’il s’agit bien de vous en
utilisant l’une de vos méthodes d’authentification.
login_options:
- auth_app: Application d’authentification
- auth_app_info: Utilisez votre application d’authentification pour obtenir votre
+ auth_app: Appli d’authentification
+ auth_app_info: Utilisez votre application d’authentification pour obtenir un
code de sécurité
backup_code: Codes de sauvegarde
backup_code_info: Utilisez un code de sauvegarde de votre liste de codes de
@@ -69,88 +68,90 @@ fr:
personal_key: Clé personnelle
personal_key_info: Utilisez la clé personnelle de 16 caractères que vous avez
utilisée lors de la création du compte.
- piv_cac: Employés du gouvernement
- piv_cac_info: Utilisez votre carte PIV / CAC pour sécuriser votre compte.
+ piv_cac: Carte d’employé fédéral
+ piv_cac_info: Utilisez votre carte PIV/CAC au lieu d’un code de sécurité.
sms: SMS
sms_info_html: Obtenez un code à usage unique par SMS au %{phone}.
- voice: Appel téléphonique
+ voice: Appel téléphonique automatique
voice_info_html: Obtenez un code à usage unique par appel téléphonique au
- %{phone} (Seulement les numéros de téléphone en
- Amerique du Nord).
+ %{phone} (numéros de téléphone nord-américains
+ uniquement).
webauthn: Clé de sécurité
webauthn_info: Utilisez votre clé de sécurité pour accéder à votre compte.
webauthn_platform: Déverrouillage facial ou tactile
webauthn_platform_info: Utilisez votre visage ou votre empreinte digitale pour
accéder à votre compte sans code à usage unique.
- login_options_link_text: Choisissez une autre option de sécurité
+ login_options_link_text: Choisir une autre option de sécurité
login_options_reauthentication_title: Réauthentification requise
- login_options_title: Sélectionnez votre option de sécurité
+ login_options_title: Sélectionner votre méthode d’authentification
max_backup_code_login_attempts_reached: Pour votre sécurité, votre compte est
- temporairement verrouillé car vous avez saisi trop de fois le code de
- sauvegarde.
+ temporairement verrouillé en raison de la saisie erronée du code de
+ sauvegarde à de trop nombreuses reprises.
max_generic_login_attempts_reached: Pour votre sécurité, votre compte est temporairement verrouillé.
max_otp_login_attempts_reached: Pour votre sécurité, votre compte est
- temporairement verrouillé car vous avez saisi le code à usage unique de
- manière incorrecte un trop grand nombre de fois.
+ temporairement verrouillé en raison de la saisie erronée du code à usage
+ unique à de trop nombreuses reprises.
max_otp_requests_reached: Pour votre sécurité, votre compte est temporairement
- verrouillé parce que vous avez demandé un code à usage unique trop
- souvent.
+ verrouillé en raison de la demande d’un code à usage unique à de trop
+ nombreuses reprises.
max_personal_key_login_attempts_reached: Pour votre sécurité, votre compte est
- temporairement verrouillé, car vous avez entré le code de sécurité à
- utilisation unique de façon erronée à de trop nombreuses reprises.
- max_piv_cac_login_attempts_reached: Pour votre sécurité, votre compte a été
- temporairement bloqué en raison de la saisie de mauvais identifiants
- PIV/CAC à de trop nombreuses reprises.
+ temporairement verrouillé en raison de la saisie erronée de la clé
+ personnelle à de trop nombreuses reprises.
+ max_piv_cac_login_attempts_reached: Pour votre sécurité, votre compte est
+ temporairement verrouillé en raison de la présentation erronée de votre
+ certificat PIV/CAC à de trop nombreuses reprises.
mobile_terms_of_service: Conditions de service mobile
- no_auth_option: Aucune option d’authentification n’a été trouvée pour vous connecter
+ no_auth_option: Aucune option d’authentification n’a pu être trouvée pour vous connecter
opt_in:
- error_retry: Désolé, nous avons des difficultés à vous connecter. Veuillez réessayer.
- opted_out_html: Vous avez choisi de ne plus recevoir de SMS à
+ error_retry: Désolé, nous rencontrons actuellement des difficultés pour vous
+ inscrire. Veuillez réessayer.
+ opted_out_html: Vous avez choisi de ne pas recevoir de SMS au
%{phone_number_html}. Vous pouvez vous inscrire et recevoir à nouveau un
code de sécurité à ce numéro de téléphone.
opted_out_last_30d_html: Vous avez choisi de ne plus recevoir de SMS au
%{phone_number_html} au cours des 30 derniers jours. Nous ne pouvons
- opter pour un numéro de téléphone qu’une fois tous les 30 jours.
+ inscrire un numéro de téléphone qu’une fois tous les 30 jours.
title: Nous n’avons pas pu envoyer un code de sécurité à votre numéro de
téléphone
wait_30d_opt_in: Après 30 jours, vous pouvez vous inscrire et recevoir un code
de sécurité à ce numéro de téléphone.
otp_delivery_preference:
- instruction: Envoyez des messages texte ainsi que des appels par défaut à ce numéro
+ instruction: Vous pouvez modifier cela à tout moment. Si vous utilisez un numéro
+ de téléphone fixe, sélectionnez « Appel téléphonique ».
landline_warning_html: Le numéro de téléphone saisi semble être un
téléphone fixe. Demandez plutôt un code à usage unique
par %{phone_setup_path}.
no_supported_options: Nous ne sommes pas en mesure de vérifier les numéros de
téléphone de %{location}
phone_call: appel téléphonique
- sms: Message texte (SMS)
- sms_unsupported: Il est impossible d’envoyer des messages texte à des numéros de
- téléphone dans %{location}.
+ sms: SMS (texto)
+ sms_unsupported: Nous ne sommes pas en mesure d’envoyer de SMS à des numéros de
+ téléphone de %{location}.
title: Comment vous obtiendrez votre code
voice: Appel téléphonique
- voice_unsupported: Il nous est impossible d’appeler des numéros de téléphone
- dans le %{location}.
+ voice_unsupported: Nous ne sommes pas en mesure d’appeler des numéros de
+ téléphone de %{location}.
otp_make_default_number:
instruction: Envoyez des codes à usage unique à ce numéro par défaut.
label: Numéro de téléphone par défaut
one_number_instruction: Vous devez avoir ajouté plus d’un numéro de téléphone
pour pouvoir sélectionner un numéro de téléphone par défaut.
- one_number_title: Il s’agit de votre numéro par défaut
- title: Faites-en votre numéro de téléphone par défaut?
- personal_key_header_text: Entrez votre clé personnelle
- personal_key_prompt: Vous pouvez utiliser cette clé personnelle une fois
- seulement. Une fois que vous l’entrez, vous recevrez une nouvelle clé.
+ one_number_title: Ce numéro est votre numéro par défaut
+ title: Faire de ce numéro votre numéro de téléphone par défaut ?
+ personal_key_header_text: Saisir votre clé personnelle
+ personal_key_prompt: Vous pouvez utiliser cette clé personnelle une fois. Une
+ fois que vous l’avez saisie, vous recevrez une nouvelle clé.
phone:
delete:
- failure: Impossible de supprimer votre numéro de téléphone.
- success: Votre numéro de téléphone a été supprimé.
- phone_fee_disclosure: Des messages et débits de données peuvent être appliqués.
+ failure: Impossible de supprimer votre téléphone.
+ success: Votre téléphone a été supprimé.
+ phone_fee_disclosure: Des tarifs de messagerie et de données peuvent s’appliquer.
phone_info: Nous vous enverrons un code à usage unique à chaque fois que vous
vous connecterez.
phone_label: Numéro de téléphone
phone_verification:
troubleshooting:
- change_number: Utilisez un autre numéro de téléphone
+ change_number: Utiliser un autre numéro de téléphone
code_not_received: Je n’ai pas reçu mon code à usage unique
piv_cac:
change_nickname: Changer de pseudo
@@ -160,7 +161,7 @@ fr:
manage_accessible_label: Gérer la carte PIV/CAC
nickname: Pseudo
renamed: Votre méthode PIV/CAC a été renommée avec succès
- piv_cac_header_text: Veuillez présenter votre carte PIV/CAC
+ piv_cac_header_text: Présenter votre carte PIV/CAC
piv_cac_upsell:
add_piv: Ajouter une carte PIV/CAC
choose_other_method: Choisir plutôt d’autres méthodes
@@ -173,28 +174,27 @@ fr:
fédéral parmi vos méthodes d’authentification. Ceci permet d’ajouter une
couche supplémentaire de sécurité à votre compte.
skip: Ignorer
- please_try_again_html: Veuillez essayer de nouveau dans %{countdown}.
+ please_try_again_html: Veuillez réessayer dans %{countdown}.
read_about_two_factor_authentication: En savoir plus sur l’authentification à deux facteurs
recaptcha:
disclosure_statement_html: Ce site est protégé par reCAPTCHA. Les
- %{google_policy_link_html} et les %{google_tos_link_html} de Google
- s’appliquent. Lisez les %{login_tos_link_html} de %{app_name} pour les
- mobiles.
- google_policy_link: règles de confidentialité
+ %{google_policy_link_html} et %{google_tos_link_html} de Google
+ s’appliquent. Lire les %{login_tos_link_html} de %{app_name}.
+ google_policy_link: politique de confidentialité
google_tos_link: conditions de service
- login_tos_link: conditions d’utilisation
+ login_tos_link: conditions d’utilisation mobile
recommended: Recommandation
- totp_header_text: Entrez votre code d’application d’authentification
+ totp_header_text: Saisir votre code d’appli d’authentification
two_factor_aal3_choice: Authentification supplémentaire requise
- two_factor_aal3_choice_intro: Cette application nécessite un niveau de sécurité
- plus élevé. Vous devez vérifier votre identité à l’aide d’un dispositif
- physique tel qu’une clé de sécurité ou un badge d’employé du gouvernement
- (PIV ou CAC) pour accéder à vos informations.
+ two_factor_aal3_choice_intro: Cette appli nécessite un niveau de sécurité plus
+ élevé. Vous devez vérifier votre identité à l’aide d’un dispositif
+ physique tel qu’une clé de sécurité ou une carte d’employé fédéral (PIV ou
+ CAC) pour accéder à vos informations.
two_factor_choice: Configuration de la méthode d’authentification
two_factor_choice_options:
- auth_app: Demande d’authentification
- auth_app_info: Téléchargez ou utilisez une application d’authentification de
- votre choix pour générer des codes sécurisés.
+ auth_app: Application d’authentification
+ auth_app_info: Télécharger ou utiliser une appli d’authentification de votre
+ choix pour générer des codes sécurisés.
backup_code: Codes de sauvegarde
backup_code_info: Une liste de 10 codes que vous pouvez imprimer ou enregistrer
sur votre appareil. Lorsque vous utilisez le dernier code, nous
@@ -202,56 +202,50 @@ fr:
sauvegarde sont faciles à perdre.
configurations_added:
one: '%{count} ajouté'
- other: '%{count} ajoutés'
+ other: '%{count} ajouté'
no_count_configuration_added: Ajouté
- phone: Message texte ou vocal
- phone_info: Recevoir un code de sécurité par texto (SMS) ou appel téléphonique.
- phone_info_no_voip: N’utilisez pas de services téléphoniques basés sur le Web (
- Voix sur IP ) ou de numéros de téléphone à tarif majoré ( péage ).
- piv_cac: Carte d’identification des employés du gouvernement
- piv_cac_info: Cartes PIV/CAC pour les fonctionnaires et les militaires. Bureau
+ phone: SMS ou message vocal
+ phone_info: Recevoir un code sécurisé par SMS (texto) ou appel téléphonique.
+ phone_info_no_voip: N’utilisez pas de services téléphoniques par internet (Voix
+ sur IP) ou de numéros de téléphone à tarif majoré (payant).
+ piv_cac: Carte d’employé fédéral
+ piv_cac_info: Cartes PIV/CAC pour les employés fédéraux et militaires. Bureau
uniquement.
- webauthn: Clef de sécurité
+ webauthn: Clé de sécurité
webauthn_info: Connectez votre clé de sécurité physique à votre appareil. Vous
n’aurez pas besoin d’entrer un code.
webauthn_platform: Déverrouillage facial ou tactile
webauthn_platform_info: Utilisez votre visage ou votre empreinte digitale pour
accéder à votre compte sans code à usage unique.
two_factor_hspd12_choice: Authentification supplémentaire requise
- two_factor_hspd12_choice_intro: Cette application nécessite un haut niveau de
- sécurité. Vous devez vérifier votre identité à l’aide d’un appareil
- physique tel qu’une clé de sécurité ou un identifiant d’employé du
- gouvernement (PIC/CAC) pour accéder à vos informations.
- webauthn_authenticating: Authentification de vos informations d’identification…
+ two_factor_hspd12_choice_intro: Cette appli nécessite un niveau de sécurité plus
+ élevé. Vous devez vérifier votre identité à l’aide d’une carte d’employé
+ fédéral (carte PIC/CAC) pour accéder à vos informations.
+ webauthn_authenticating: Authentification de vos certificats en cours…
webauthn_error:
additional_methods_link: choisir une autre méthode d’authentification
connect_html: Nous n’avons pas pu connecter la clé de sécurité. Veuillez
réessayer ou %{link_html}.
- screen_lock_no_other_mfa: Nous n’avons pas pu nous authentifier avec le
+ screen_lock_no_other_mfa: Nous n’avons pas pu vous authentifier à l’aide du
déverrouillage facial ou tactile. Essayez de vous connecter sur
l’appareil sur lequel vous avez configuré le déverrouillage facial ou
tactile.
- screen_lock_other_mfa_html: Nous n’avons pas pu nous authentifier avec le
+ screen_lock_other_mfa_html: Nous n’avons pas pu vous authentifier à l’aide du
déverrouillage facial ou tactile. %{link_html} ou essayez de vous
connecter sur l’appareil sur lequel vous avez configuré le
- déverrouillage du visage ou du toucher.
- try_again: Le déverrouillage facial ou tactile n’a pas fonctionné. Veuillez
- réessayer ou %{link}.
- use_a_different_method: Utilisez un autre moyen d’authentification
- webauthn_header_text: Connectez votre clé de sécurité
+ déverrouillage facial ou tactile.
+ try_again: Échec du déverrouillage facial ou tactile. Veuillez réessayer ou %{link}.
+ use_a_different_method: Utiliser une autre méthode d’authentification
+ webauthn_header_text: Connecter votre clé de sécurité
webauthn_platform:
- change_nickname: Changer de pseudo
+ change_nickname: Changer de surnom
delete: Supprimer cet appareil
- deleted: Suppression réussie d’une méthode de déverrouillage par reconnaissance
- faciale ou par empreinte digitale
- edit_heading: Gérez vos paramètres de déverrouillage par reconnaissance faciale
- ou par empreinte digitale
- manage_accessible_label: Gérer le déverrouillage par reconnaissance faciale ou
- par empreinte digitale
- nickname: Pseudo
- renamed: Votre méthode de déverrouillage par reconnaissance faciale ou par
- empreinte digitale a été renommée avec succès
- webauthn_platform_header_text: Utilisez le déverrouillage facial ou tactile
+ deleted: Suppression réussie d’une méthode de déverrouillage facial ou tactile
+ edit_heading: Gérer vos paramètres de déverrouillage facial ou tactile
+ manage_accessible_label: Gérer le déverrouillage facial ou tactile
+ nickname: Surnom
+ renamed: Votre méthode de déverrouillage facial ou tactile a bien été renommée.
+ webauthn_platform_header_text: Utiliser le déverrouillage facial ou tactile
webauthn_platform_use_key: Utiliser le déverrouillage de l’écran
webauthn_roaming:
change_nickname: Changer de pseudo
diff --git a/config/locales/user_authorization_confirmation/es.yml b/config/locales/user_authorization_confirmation/es.yml
index a0b670c5ce6..ab69df5600e 100644
--- a/config/locales/user_authorization_confirmation/es.yml
+++ b/config/locales/user_authorization_confirmation/es.yml
@@ -2,6 +2,6 @@
es:
user_authorization_confirmation:
continue: Continuar
- currently_logged_in: 'Ya ha iniciado sesión con el siguiente correo electrónico:'
+ currently_logged_in: 'Ya inició sesión con el siguiente correo electrónico:'
or: O
sign_in: Cambiar de correo electrónico
diff --git a/config/locales/user_authorization_confirmation/fr.yml b/config/locales/user_authorization_confirmation/fr.yml
index 5ab2142074b..af8e3992c87 100644
--- a/config/locales/user_authorization_confirmation/fr.yml
+++ b/config/locales/user_authorization_confirmation/fr.yml
@@ -1,7 +1,7 @@
---
fr:
user_authorization_confirmation:
- continue: Continuer
- currently_logged_in: 'Vous êtes déjà connecté(e) avec l’adresse e-mail suivante:'
+ continue: Suite
+ currently_logged_in: 'Vous êtes déjà connecté avec l’adresse e-mail suivante :'
or: Ou
sign_in: Changer d’adresse e-mail
diff --git a/config/locales/user_mailer/es.yml b/config/locales/user_mailer/es.yml
index 6929ac6411b..64af0f2f8f9 100644
--- a/config/locales/user_mailer/es.yml
+++ b/config/locales/user_mailer/es.yml
@@ -2,25 +2,24 @@
es:
user_mailer:
account_reinstated:
- subject: Tu cuenta está desbloqueada
- we_have_finished_reviewing: Hemos terminado de revisar su cuenta de %{app_name}
- y ya puede volver a iniciar sesión con los datos de su cuenta.
+ subject: Su cuenta está desbloqueada
+ we_have_finished_reviewing: Terminamos de revisar su cuenta de %{app_name} y ya
+ puede volver a iniciar sesión con los datos de su cuenta.
account_rejected:
- intro: No hemos podido verificar su identidad con %{app_name}. Por favor,
- póngase en contacto con la agencia a cuyo servicio está intentando
- acceder.
- subject: No hemos podido verificar su identidad
+ intro: No pudimos verificar su identidad con %{app_name}. Contacte con la
+ agencia a cuyo servicio está intentando acceder.
+ subject: No pudimos verificar su identidad
account_reset_cancel:
intro_html: Este correo electrónico confirma que ha cancelado su solicitud para
eliminar su cuenta de %{app_name_html}.
subject: Solicitud cancelada
account_reset_complete:
- intro_html: Este correo electrónico confirma que ha eliminado su cuenta de
+ intro_html: Este correo electrónico confirma que usted eliminó su cuenta de
%{app_name_html}.
- subject: Cuenta borrada
+ subject: Cuenta eliminada
account_reset_granted:
- button: Sí, continúa eliminando
- cancel_link_text: por favor cancele
+ button: Sí, continuar eliminando
+ cancel_link_text: cancele
help_html: Si no desea eliminar su cuenta, %{cancel_account_reset_html}.
intro_html: Su período de espera de %{waiting_period} finalizó. Complete el paso
2 del proceso.
Si no ha podido localizar sus métodos de
@@ -29,9 +28,9 @@ es:
sitios web gubernamentales participantes que utilizan %{app_name}, puede
crear una nueva cuenta %{app_name} con la misma dirección de correo
electrónico después de que se elimine su cuenta.
- subject: Elimina tu cuenta %{app_name}
+ subject: Elimine su cuenta de %{app_name}
account_reset_request:
- cancel: '¿No quieres eliminar tu cuenta? Inicie sesión en su cuenta %{app_name}
+ cancel: '¿No desea eliminar su cuenta? Inicie sesión en su cuenta de %{app_name}
para cancelar.'
header: Su cuenta será eliminada en %{interval}
intro_html: 'Como medida de seguridad, %{app_name} requiere un proceso de dos
@@ -45,103 +44,105 @@ es:
cuenta no se eliminará hasta que lo confirmes.'
subject: Cómo eliminar su cuenta de %{app_name}
account_verified:
- change_password_link: cambiar tu contraseña
- contact_link: contacto con nosotros
- intro_html: Verificaste correctamente tu identidad con %{sp_name} el %{date} a
- través de %{app_name}. Si no realizaste esta acción, ponte en
- %{contact_link_html} e inicia sesión para %{change_password_link_html}.
- subject: Verificaste tu identidad con %{sp_name}
+ change_password_link: cambie su contraseña
+ contact_link: contáctenos
+ intro_html: El %{date}, verificó correctamente su identidad con %{sp_name}
+ usando %{app_name}. Si usted no efectuó esta acción, vaya a
+ %{contact_link_html} e inicie sesión para %{change_password_link_html}.
+ subject: Verificó su identidad con %{sp_name}
add_email:
- footer: Este enlace expira en %{confirmation_period}.
- header: Gracias por enviar su correo electrónico. Haga clic en el enlace debajo
- o copie y pegue el enlace completo en su navegador.
+ footer: Este vínculo vence en %{confirmation_period}.
+ header: Gracias por agregar un correo electrónico. Haga clic en el vínculo
+ siguiente, o copie y pegue el vínculo completo en su navegador.
subject: Confirme su correo electrónico
add_email_associated_with_another_account:
- help_html: Si no solicitó un nuevo correo electrónico o sospecha de un error,
- visite %{app_name_html} %{help_link_html} o %{contact_link_html}.
+ help_html: Si no solicitó un nuevo correo electrónico o sospecha que hubo un
+ error, visite %{help_link_html} de %{app_name_html} o
+ %{contact_link_html}.
intro_html: Esta dirección de correo electrónico ya está asociada con una cuenta
- %{app_name_html}, por lo que no podemos agregarla a otra cuenta. Primero
- debe eliminarlo o eliminarlo de la cuenta con la que está asociado. Para
- hacer esto, siga el enlace de abajo e inicie sesión con esta dirección
- de correo electrónico. Si no está intentando agregar esta dirección de
- correo electrónico a una cuenta, puede ignorar este mensaje.
+ de %{app_name_html}, por lo que no podemos agregarla a otra cuenta.
+ Primero, debe eliminarla o quitarla de la cuenta con la que está
+ asociada. Para hacerlo, siga este vínculo e inicie sesión con esta
+ dirección de correo electrónico. Si no está intentando agregar esta
+ dirección de correo electrónico a una cuenta, puede ignorar este
+ mensaje.
link_text: Ir a %{app_name}
reset_password_html: Si no recuerda su contraseña, vaya a %{app_name_html} para restablecerla.
- contact_link_text: Contáctenos
+ contact_link_text: contáctenos
email_added:
header: Se agregó una nueva dirección de correo electrónico a su perfil de
%{app_name}.
- help: Si no realizó este cambio, inicie sesión en su perfil y administre sus
+ help: Si usted no hizo este cambio, inicie sesión en su perfil y administre sus
direcciones de correo electrónico. Le recomendamos que también cambie su
contraseña.
- subject: Nueva dirección de correo electrónico añadida
+ subject: Se añadió una nueva dirección de correo electrónico
email_confirmation_instructions:
first_sentence:
- confirmed: '¿Desea cambiar su email?'
+ confirmed: '¿Está intentando cambiar su dirección de correo electrónico?'
unconfirmed: Gracias por enviar su dirección de correo electrónico.
- footer: Este enlace expira en %{confirmation_period}.
- header: '%{intro} Haga clic en el enlace de abajo o copie y pegue el enlace
+ footer: Este vínculo vence en %{confirmation_period}.
+ header: '%{intro} Haga clic en el vínculo siguiente, o copie y pegue el vínculo
completo en su navegador.'
- link_text: Confirmar el correo
- subject: Confirme su email
+ link_text: Confirmar la dirección de correo electrónico
+ subject: Confirme su correo electrónico
email_deleted:
header: Se eliminó una dirección de correo electrónico de su perfil de
%{app_name}.
- help_html: Si no desea eliminar esta dirección de correo electrónico, visite el
- %{app_name_html} %{help_link_html} o el %{contact_link_html}.
+ help_html: Si no deseaba eliminar esta dirección de correo electrónico, visite
+ %{help_link_html} de %{app_name_html} o %{contact_link_html}.
subject: Dirección de correo electrónico eliminada
- help_link_text: Centro de Ayuda
+ help_link_text: Centro de ayuda
in_person_completion_survey:
body:
cta:
- callout: Haga clic en el botón de abajo para empezar.
- label: Tome nuestra encuesta
- greeting: Hola,
- intent: Queremos conocer su experiencia al verificar su identidad en persona en
+ callout: Haga clic en el botón siguiente para empezar.
+ label: Responda a nuestra encuesta
+ greeting: 'Hola:'
+ intent: Deseamos conocer su experiencia al verificar su identidad en persona en
la oficina de correos.
- privacy_html: Sus respuestas a esta encuesta estarán protegidas conforme a los siguientes estándares de privacidad y seguridad.
- request_description: Responde una breve encuesta anónima y su opinión nos
- ayudará a atender mejor tus necesidades.
- thanks: Gracias por utilizar %{app_name}.
- header: Tómese un minuto para decirnos cómo lo hicimos
+ privacy_html: Sus respuestas a esta encuesta estarán protegidas conforme a los
+ siguientes estándares de privacidad y seguridad.
+ request_description: Responda a una breve encuesta anónima; sus comentarios nos
+ ayudarán a mejorar nuestra respuesta a sus necesidades.
+ thanks: Gracias por usar %{app_name}.
+ header: Dedique un minuto para darnos su opinión acerca de nuestro servicio
subject: Cuéntenos su experiencia reciente con %{app_name}
in_person_deadline_passed:
body:
- canceled: Se venció el plazo para verificar su identidad en persona. Cancelamos
+ canceled: Venció el plazo para verificar su identidad en persona, y cancelamos
automáticamente su solicitud con el fin de proteger su información
personal.
cta: Empezar de nuevo
- greeting: Hola,
- restart: Haga clic en el botón de abajo si desea iniciar una nueva solicitud
- para verificar su identidad con %{partner_agency}.
- header: Se venció el plazo para verificar su identidad en persona
- subject: Expiró su solicitud para verificar su identidad en persona
+ greeting: 'Hola:'
+ restart: Puede iniciar una nueva solicitud para verificar su identidad con
+ %{partner_agency}.
+ header: Venció el plazo para verificar su identidad en persona
+ subject: Venció su solicitud para verificar su identidad en persona
in_person_failed:
body:
- with_cta: Haga clic en el botón o copie el enlace siguiente para volver a
+ with_cta: Haga clic en el botón o copie el vínculo siguiente para volver a
intentar verificar su identidad en línea con %{sp_or_app_name}. Si
- sigue teniendo problemas, póngase en contacto con la agencia a la que
- intenta acceder.
- without_cta: Vuelva a comprobar su identidad desde el sitio web de la
- %{sp_name}. En caso de persistir los problemas, contacte con la
- agencia a la que intenta entrar.
- intro: El %{date}, no se pudo verificar su identidad en la oficina de correos de
- %{location}.
+ sigue teniendo problemas, contacte con la agencia a la que está
+ intentando acceder.
+ without_cta: Vuelva a intentar verificar su identidad en el sitio web de
+ %{sp_name}. Si sigue teniendo problemas, contacte con la agencia a la
+ que está intentando acceder.
+ intro: No se pudo verificar su identidad en la oficina de correos de %{location}
+ el %{date}.
subject: No se pudo verificar su identidad en persona
- verifying_identity: 'Al verificar su identidad:'
- verifying_step_not_expired: Su documento de identidad o permiso de conducir
- emitido por el estado debe estar vigente. Por el momento, no aceptamos
- otras formas de identificación, como pasaportes o cartillas militares.
+ verifying_identity: 'Cuando verifique su identidad:'
+ verifying_step_not_expired: Su licencia de conducir o identificación emitida por
+ el estado debe estar vigente. Actualmente no aceptamos otras formas de
+ identificación, como pasaportes o identificaciones militares.
in_person_failed_suspected_fraud:
body:
- help_center_html: Si necesita ayuda adicional, puede visitar nuestro Centro de Ayuda o
- ponerse en contacto con la agencia a la que intenta acceder.
- intro: Entendemos que estaba intentando verificar su identidad a través de
- %{app_name}, sin embargo, su identidad no pudo ser verificada en la
+ help_center_html: Si necesita más ayuda, puede visitar nuestro Centro de ayuda o
+ contactar con la agencia a la que está intentando acceder.
+ intro: Entendemos que estaba intentando verificar su identidad usando
+ %{app_name}; sin embargo, su identidad no pudo ser verificada en la
oficina de correos de %{location} el %{date}.
- greeting: Hola,
+ greeting: 'Hola:'
subject: No se pudo verificar su identidad en persona
in_person_please_call:
body:
@@ -154,54 +155,57 @@ es:
in_person_ready_to_verify:
subject: Está listo para verificar su identidad con %{app_name} en persona
in_person_ready_to_verify_reminder:
- greeting: Hola,
+ greeting: 'Hola:'
heading:
- one: Tiene %{count} día para verificar su identidad en persona
- other: Tiene %{count} días para verificar su identidad en persona
- intro: No pierda la oportunidad de verificar su identidad en su oficina de
- correos local. Complete este paso para acceder %{sp_name}.
+ one: Le queda %{count} día para verificar su identidad en persona
+ other: Le quedan %{count} días para verificar su identidad en persona
+ intro: No pierda la oportunidad de verificar su identidad en la oficina de
+ correos de su localidad. Siga este paso para acceder a %{sp_name}.
subject:
one: Verifique su identidad en una oficina de correos en el próximo día
other: Verifique su identidad en una oficina de correos en los próximos %{count}
días
in_person_verified:
- greeting: Hola,
+ greeting: 'Hola:'
intro: El %{date}, verificó correctamente su identidad en la oficina de correos
de %{location}.
next_sign_in:
with_sp:
- with_cta: Seguidamente, haga clic en el botón o copie el siguiente enlace para
- poder entrar en la %{sp_name} e inicie la sesión.
- without_cta: Ya puede iniciar la sesión desde el sitio web de la %{sp_name}.
- without_sp: Luego, haga clic en el botón o copie el enlace que aparece a
- continuación para iniciar sesión en %{app_name}.
+ with_cta: A continuación, haga clic en el botón o copie el vínculo siguiente
+ para acceder a %{sp_name} e iniciar sesión.
+ without_cta: Ya puede iniciar la sesión en el sitio web de %{sp_name}.
+ without_sp: Luego, haga clic en el botón o copie el vínculo siguiente para
+ iniciar sesión en %{app_name}.
sign_in: Iniciar sesión
- subject: Verificó correctamente su identidad con %{app_name}
- warning_contact_us_html: Si no ha intentado verificar su identidad en persona,
- inicie sesión para restablecer su
- contraseña. Para informar de esto, póngase en contacto con el soporte de %{app_name}.
+ subject: Logró verificar su identidad con %{app_name}
+ warning_contact_us_html: Si usted no intentó verificar su identidad en persona,
+ inicie sesión en para restablecer su
+ contraseña. Para informar de esto, contacte con el servicio de asistencia de
+ %{app_name}.
letter_reminder:
- info_html: La carta que está a punto de recibir contendrá un código de
- verificación que nos ayudará a verificar su dirección. Puede completar
- el proceso de verificación de identidad iniciando sesión en %{link_html}
- e ingresando el código de verificación.
- subject: Le enviamos una carta a la dirección que tiene archivada
+ info_html: La carta que recibirá próximamente contiene un código de verificación
+ que nos ayudará a verificar su dirección. Para completar el proceso de
+ verificación de identidad, inicie sesión en %{link_html} e ingrese el
+ código de verificación.
+ subject: Enviamos una carta a la dirección de su expediente
letter_reminder_14_days:
- body_html: Solicitó una carta con un código de verificación el
+ body_html: '
Usted solicitó una carta con un código de verificación el
%{date_letter_was_sent}.
Inicie sesión de nuevo
en %{app_name} e ingrese el código de verificación para terminar de
- verificar su identidad. %{help_link}.
- did_not_get_a_letter_html: Si no recibiste dicha carta, %{another_letter_link_html}.
- finish: Termina de verificar tu identidad
- sign_in_and_request_another_letter: inicia sesión para solicitar otra
- subject: Termina de verificar tu identidad
+ verificar su identidad. %{help_link}.'
+ did_not_get_a_letter_html: Si no recibió esta carta, %{another_letter_link_html}.
+ finish: Termine de verificar su identidad
+ sign_in_and_request_another_letter: inicie sesión para solicitar otra carta
+ subject: Termine de verificar su identidad
new_device_sign_in:
- disavowal_link: restablecer su contraseña
- help_html: Si no realizó este cambio, %{disavowal_link_html}. Para más ayuda,
- visite el %{app_name_html} %{help_link_html} o el %{contact_link_html}.
- info: 'Su cuenta %{app_name} acaba de iniciar sesión en un nuevo dispositivo.'
- subject: Nuevo initio de sesion con su %{app_name} cuenta
+ disavowal_link: restablezca su contraseña
+ help_html: Si usted no hizo este cambio, %{disavowal_link_html}. Para obtener
+ más ayuda, visite %{app_name_html} %{help_link_html} o
+ %{contact_link_html}.
+ info: Su cuenta de %{app_name} acaba de ser usada para iniciar sesión en un
+ nuevo dispositivo.
+ subject: Nuevo inicio de sesión con su cuenta de %{app_name}
new_device_sign_in_after_2fa:
authentication_methods: métodos de autenticación
info_p1: Su correo electrónico y su contraseña de %{app_name} se usaron para
@@ -235,88 +239,89 @@ es:
reset_password: restablezca la contraseña
subject: Nuevo inicio de sesión con su cuenta de %{app_name}
password_changed:
- disavowal_link: restablecer su contraseña
- help_html: Si no realizó este cambio, %{disavowal_link_html}. Para más ayuda,
- visite el %{app_name_html} %{help_link_html} o el %{contact_link_html}.
+ disavowal_link: restablezca su contraseña
+ help_html: Si usted no hizo este cambio, %{disavowal_link_html}. Para obtener
+ más ayuda, visite %{app_name_html} %{help_link_html} o
+ %{contact_link_html}.
intro_html: Tiene una contraseña nueva para su cuenta de %{app_name_html}.
personal_key_regenerated:
- help_html: Tu cuenta de %{app_name} acaba de emitir una nueva clave personal
- de 16 caracteres. Estás recibiendo este correo electrónico para
- verificar que eras tú.
Si acaba de iniciar sesión y restablecer
- su clave personal, ¡estupendo! No tiene que hacer nada.
Si no
- acaba de restablecer su clave personal o no está seguro, siga de
- inmediato estos pasos para proteger su cuenta:
- Cambia tu contraseña. Elige
- una contraseña que aún no hayas utilizado con esta cuenta.
-
- Inicia sesión en tu cuenta de
- %{app_name} y asegúrate de que reconoces toda la
- información de la página de tu cuenta, como los métodos que utilizas
- para la autenticación de dos factores, como el número de teléfono, la
- aplicación de autenticación o la clave de seguridad.
- En
- la página de tu cuenta de %{app_name},
- solicita una nueva clave personal. Recuerda no compartirla
- nunca a menos que la estés usando para acceder a un sitio web de
+ help_html:
Se acaba de emitir una nueva clave personal de 16 caracteres para
+ su cuenta de %{app_name}. Está recibiendo este correo electrónico
+ comprobar que se trata de usted.
Si acaba de iniciar sesión y
+ restablecer su clave personal, todo está bien. No tiene que hacer
+ nada.
Si no acaba de restablecer su clave personal o no está
+ seguro, siga de inmediato estos pasos para proteger su
+ cuenta:
- Cambie su
+ contraseña. Elija una contraseña que no haya usado aún con
+ esta cuenta.
- Inicie sesión en
+ su cuenta de %{app_name} y compruebe que reconoce toda la
+ información de la página de su cuenta, incluidos los métodos que usa
+ para la autenticación de dos factores, como número de teléfono,
+ aplicación de autenticación o clave de seguridad.
- En la
+ página de su cuenta de %{app_name},
+ solicite una nueva clave personal. Recuerde, no la comparta
+ nunca a menos que la esté usando para iniciar sesión en un sitio web de
confianza que utilice %{app_name}.
Gracias,
El
equipo de %{app_name}
intro: Nueva clave personal emitida
subject: Alerta de seguridad de la cuenta
personal_key_sign_in:
- help_html: Su cuenta %{app_name} acaba de iniciar sesión con su clave
- personal de 16 caracteres. Usted está recibiendo este e-mail para
- asegurarse de que era usted.
Si acaba de iniciar sesión con su
- clave personal, ¡genial! No hay nada que tenga que hacer.
Si no
- inició sesión con una clave personal, o si no está seguro, por favor,
- siga estos pasos de inmediato para proteger su cuenta.
- Cambie tu contraseña. Elija
- una contraseña que no haya utilizado con esta cuenta.
- Inicie sesión en su cuenta
- %{app_name} y asegúrese de reconocer toda la información en
- la página de su cuenta, incluidos los métodos que utiliza para la
- autenticación de dos factores, como el número de teléfono, la aplicación
- de autenticación, o la clave de seguridad.
- En la página de su cuenta %{app_name}, solicite
- una nueva clave personal. Recuerde, nunca lo comparta a menos
- que lo esté utilizando para iniciar sesión en un sitio web de confianza
- que utiliza %{app_name}.
Gracias,
El equipo de
- %{app_name}
+ help_html: Su cuenta de %{app_name}, acaba de ser usada para iniciar sesión
+ con su clave personal de 16 caracteres. Está recibiendo este correo
+ electrónico para comprobar que se trata de usted.
Si acaba de
+ iniciar sesión con su clave personal, todo está bien. No tiene que hacer
+ nada.
Si no inició sesión con una clave personal, o si no está
+ seguro, siga de inmediato estos pasos para proteger su
+ cuenta:
- Cambie su
+ contraseña. Elija una contraseña que no haya usado aún con
+ esta cuenta.
- Inicie sesión en
+ su cuenta de %{app_name} y compruebe que reconoce toda la
+ información de la página de su cuenta, incluidos los métodos que usa
+ para la autenticación de dos factores, como número de teléfono,
+ aplicación de autenticación o clave de seguridad.
- En la
+ página de su cuenta de %{app_name},
+ solicite una nueva clave personal. Recuerde, no la comparta
+ nunca a menos que la esté usando para iniciar sesión en un sitio web de
+ confianza que utilice %{app_name}.
Gracias,
El
+ equipo de %{app_name}
intro: Clave personal utilizada para iniciar sesión
- subject: Alerta de seguridad de cuenta
+ subject: Alerta de seguridad de la cuenta
phone_added:
disavowal_link: restablezca su contraseña
- help_html: Si no realizó este cambio, inicie sesión en su perfil y administre
+ help_html: Si usted no hizo este cambio, inicie sesión en su perfil y administre
sus números de teléfono. También le recomendamos que
%{disavowal_link_html}.
intro: Se agregó un nuevo número de teléfono a su perfil de %{app_name}.
subject: Nuevo número de teléfono añadido
please_reset_password:
- call_to_action: 'Como medida de precaución, inhabilitamos su contraseña para
+ call_to_action: 'Como medida de precaución, desactivamos su contraseña para
mantener su información segura. Siga los pasos a continuación para
- restablecer su contraseña y asegure su cuenta:'
- intro: Hemos detectado actividad inusual en su cuenta %{app_name}. Estamos
- preocupados alguien que no sea usted puede estar intentando acceder a su
+ restablecer su contraseña y proteger su cuenta:'
+ intro: Detectamos actividad inusual en su cuenta de %{app_name}. Nos preocupa
+ que alguien que no sea usted pueda estar intentando acceder a su
información.
- learn_more_link_text: Conozca más sobre sus opciones
+ learn_more_link_text: Obtenga más información sobre sus opciones
reminder_html: Le recordamos que %{app_name} nunca le pedirá sus
- credenciales de inicio de sesión. por teléfono o correo
- electrónico. Puede tomar medidas adicionales para proteger su
- cuenta habilitando la autenticación de dos factores.
- step_1: Visite el sitio web %{app_name} y seleccione iniciar sesión
- step_2: Seleccione “¿olvidó su contraseña?” al final de la página
- step_3: Siga las instrucciones para restablecer su contraseña
- subject: Actividad inusual — restablezca su contraseña de %{app_name}
+ credenciales de inicio de sesión ni por teléfono ni por correo
+ electrónico
. Puede tomar otras medidas para proteger su cuenta
+ habilitando la autenticación de dos factores.
+ step_1: Visite el sitio web de %{app_name} y seleccione iniciar sesión.
+ step_2: Seleccione “¿Olvidó su contraseña?” en la parte inferior de la página.
+ step_3: Siga las instrucciones para restablecer su contraseña.
+ subject: 'Actividad inusual: restablezca su contraseña de %{app_name}'
reset_password_instructions:
- footer: Este enlace expira en %{expires} horas.
+ footer: Este vínculo vence en %{expires} horas.
gpo_letter_description: Si restablece su contraseña, el código de verificación
- que figura en su carta dejará de funcionar y tendrá que volver a
- verificar su identidad.
+ que recibió en su carta ya no funcionará y tendrá que volver a verificar
+ su identidad.
gpo_letter_header: Su carta está en camino
header: Para terminar de restablecer su contraseña, haga clic en el enlace de
abajo o copie y pegue el enlace completo en su navegador.
link_text: Restablezca su contraseña
- subject: Restablezca su contraseña.
+ subject: Restablezca su contraseña
signup_with_your_email:
- help_html: Si no solicitó una cuenta nueva o sospecha un error, visite el
- %{app_name_html} %{help_link_html} o el %{contact_link_html}.
+ help_html: Si usted no solicitó una cuenta nueva o sospecha que hubo un error,
+ visite la %{help_link_html} de %{app_name_html} o %{contact_link_html}.
intro_html: Este email ya está asociado a una cuenta %{app_name_html}, por lo
tanto no podemos usarlo para crear una cuenta nueva. Para iniciar una
sesión con su cuenta existente, siga el siguiente enlace. Si no intenta
@@ -324,17 +329,17 @@ es:
link_text: Ir a %{app_name}
reset_password_html: Si no recuerda su contraseña, vaya a %{app_name_html} para restablecerla.
suspended_create_account:
- message: Se produjo un problema al crear su cuenta de %{app_name} con esta
- dirección de correo electrónico. Llame a nuestro centro de atención al
- número %{contact_number} y proporcione este código - %{support_code}.
+ message: Hubo un problema al crear su cuenta de %{app_name} con esta dirección
+ de correo electrónico. Llame a nuestro centro de atención al
+ %{contact_number} y proporcione este código - %{support_code}.
subject: No podemos crear su cuenta
suspended_reset_password:
- message: Se produjo un problema al restablecer su contraseña. Llame a nuestro
- centro de atención al número %{contact_number} y proporcione este código
- - %{support_code}.
+ message: Hubo un problema al restablecer su contraseña. Llame a nuestro centro
+ de atención al %{contact_number} y proporcione este código -
+ %{support_code}.
subject: No pudimos restablecer su contraseña
suspension_confirmed:
- contact_agency: Póngase en contacto con la agencia a cuyo servicio trata de acceder.
- remain_locked: Ya hemos completado la revisión de su cuenta de %{app_name} así
- que su cuenta continuará bloqueada.
+ contact_agency: Contacte con la agencia a cuyo servicio está intentando acceder.
+ remain_locked: Terminamos la revisión de su cuenta de %{app_name} y la cuenta
+ permanecerá bloqueada.
subject: Su cuenta está bloqueada
diff --git a/config/locales/user_mailer/fr.yml b/config/locales/user_mailer/fr.yml
index d7855c23881..07a6d0b5dff 100644
--- a/config/locales/user_mailer/fr.yml
+++ b/config/locales/user_mailer/fr.yml
@@ -8,17 +8,18 @@ fr:
informations de votre compte.
account_rejected:
intro: Nous n’avons pas pu vérifier votre identité avec %{app_name}. Veuillez
- contacter l’agence dont vous essayez d’accéder au service.
+ contacter l’organisme dont vous essayez d’accéder au service.
subject: Nous n’avons pas pu vérifier votre identité
account_reset_cancel:
intro_html: Cet e-mail confirme que vous avez annulé votre demande de
suppression de votre compte %{app_name_html}.
subject: Demande annulée
account_reset_complete:
- intro_html: Cet e-mail confirme que vous avez supprimé votre compte %{app_name_html}.
+ intro_html: Le présent e-mail confirme que vous avez supprimé votre compte
+ %{app_name_html}.
subject: Compte supprimé
account_reset_granted:
- button: Oui, continuez la suppression
+ button: Oui, continuer la suppression
cancel_link_text: veuillez annuler
help_html: Si vous ne souhaitez pas supprimer votre compte,
%{cancel_account_reset_html}.
@@ -32,8 +33,8 @@ fr:
suppression de votre compte.
subject: Supprimer votre compte %{app_name}
account_reset_request:
- cancel: Vous ne voulez pas supprimer votre compte? Connectez-vous à votre compte
- %{app_name} pour annuler.
+ cancel: Vous ne voulez pas supprimer votre compte ? Connectez-vous à votre
+ compte %{app_name} pour annuler.
header: Votre compte sera supprimé dans %{interval}
intro_html: 'Par mesure de sécurité, %{app_name} nécessite un processus en deux
étapes pour supprimer votre compte:
Étape 1: Il y a un delai
@@ -48,51 +49,52 @@ fr:
account_verified:
change_password_link: changer votre mot de passe
contact_link: nous contacter
- intro_html: Vous avez vérifié avec succès votre identité auprès de %{sp_name} le
- %{date} en utilisant %{app_name}. Si vous n’avez pas effectué cette
+ intro_html: Le %{date}, vous avez réussi à confirmer votre identité auprès de
+ %{sp_name} à l’aide de %{app_name}. Si vous n’avez pas effectué cette
action, veuillez %{contact_link_html} et vous connecter pour
%{change_password_link_html}.
- subject: Vous avez vérifié votre identité avec %{sp_name}
+ subject: Vous avez confirmé votre identité avec %{sp_name}.
add_email:
footer: Ce lien expirera dans %{confirmation_period}.
- header: Merci d’avoir ajouté un email. S’il vous plaît cliquez sur le lien
- ci-dessous ou copiez et collez le lien en entier dans votre navigateur.
- subject: Confirmez votre email
+ header: Merci d’avoir ajouté une adresse e-mail. Veuillez cliquer sur le lien
+ ci-dessous ou faire un copier-coller de l’ensemble du lien dans votre
+ navigateur.
+ subject: Confirmer votre adresse e-mail
add_email_associated_with_another_account:
- help_html: Si vous n’avez pas demandé de nouvel email ou que vous suspectez une
- erreur, veuillez visiter le %{app_name_html} %{help_link_html} ou
+ help_html: Si vous n’avez pas demandé de nouvel e-mail ou suspectez une erreur,
+ veuillez visiter le %{help_link_html} de %{app_name_html} ou
%{contact_link_html}.
- intro_html: Cette adresse électronique est déjà associée à un compte
- %{app_name_html}, nous ne pouvons donc pas l’ajouter à un autre compte.
- Vous devez d’abord le supprimer ou le supprimer du compte auquel il est
- associé. Pour ce faire, suivez le lien ci-dessous et connectez-vous avec
- cette adresse e-mail. Si vous n’essayez pas d’ajouter cette adresse
- électronique à un compte, vous pouvez ignorer ce message.
- link_text: Allez à %{app_name}
+ intro_html: Cette adresse e-mail est déjà associée à un compte %{app_name_html},
+ nous ne pouvons donc pas l’ajouter à un autre compte. Vous devez d’abord
+ la supprimer ou la retirer du compte auquel elle est associée. Pour ce
+ faire, suivez le lien ci-dessous et connectez-vous avec cette adresse
+ e-mail. Si vous n’essayez pas d’ajouter cette adresse e-mail à un
+ compte, vous pouvez ignorer ce message.
+ link_text: Allez sur %{app_name}
reset_password_html: Si vous ne vous souvenez plus de votre mot de passe, allez
- à %{app_name_html} pour le réinitialiser.
- contact_link_text: communiquez avec nous
+ sur %{app_name_html} pour le réinitialiser.
+ contact_link_text: nous contacter
email_added:
header: Une nouvelle adresse e-mail a été ajoutée à votre profil %{app_name}.
help: Si vous n’avez pas apporté cette modification, connectez-vous à votre
profil et gérez vos adresses e-mail. Nous vous recommandons de changer
également votre mot de passe.
- subject: Nouvelle adresse email ajoutée
+ subject: Nouvelle adresse e-mail ajoutée
email_confirmation_instructions:
first_sentence:
- confirmed: Vous tentez de changer votre adresse courriel?
- unconfirmed: Merci d’avoir envoyé votre adresse email.
+ confirmed: Vous tentez de changer votre adresse e-mail ?
+ unconfirmed: Merci d’avoir envoyé votre adresse e-mail.
footer: Ce lien expirera dans %{confirmation_period}.
- header: '%{intro} Veuillez cliquer sur le lien ci-dessous ou copier et coller le
- lien complet dans votre navigateur.'
- link_text: Confirmez votre adresse email
- subject: Confirmez votre adresse courriel
+ header: '%{intro} Veuillez cliquer sur le lien ci-dessous ou faire un
+ copier-coller de l’ensemble du lien dans votre navigateur.'
+ link_text: Confirmer votre adresse e-mail
+ subject: Confirmer votre adresse e-mail
email_deleted:
- header: Une adresse email a été supprimée de votre profil %{app_name}.
- help_html: Si vous ne souhaitez pas supprimer cette adresse électronique
- veuillez visiter le %{help_link_html} de %{app_name_html} ou
+ header: Une adresse e-mail a été supprimée de votre profil %{app_name}.
+ help_html: Si vous ne souhaitez pas supprimer cette adresse e-mail, veuillez
+ visiter le %{help_link_html} de %{app_name_html} ou
%{contact_link_html}.
- subject: Adresse email supprimée
+ subject: Adresse e-mail supprimée
help_link_text: Centre d’aide
in_person_completion_survey:
body:
@@ -104,47 +106,47 @@ fr:
votre identité en personne au bureau de poste.
privacy_html: Vos réponses à cette enquête seront protégées conformément aux normes de confidentialité et de sécurité suivantes.
- request_description: Remplissez une courte enquête anonyme et nous utiliserons
+ request_description: Répondez à une courte enquête anonyme et nous utiliserons
vos commentaires pour nous aider à mieux répondre à vos besoins.
thanks: Merci d’utiliser %{app_name}.
- header: Prenez une minute pour nous faire part de vos impressions
+ header: Faites-nous part rapidement de vos impressions
subject: Parlez-nous de votre expérience récente avec %{app_name}
in_person_deadline_passed:
body:
- canceled: Le délai imparti pour vérifier votre identité en personne a expiré.
+ canceled: Le délai imparti pour confirmer votre identité en personne a expiré.
Nous avons automatiquement annulé votre demande afin de protéger vos
données personnelles.
cta: Recommencer
greeting: Bonjour,
- restart: Pour introduire une nouvelle demande de vérification de votre identité
- auprès de %{partner_agency}, cliquez sur le bouton ci-dessous.
+ restart: Vous pouvez commencer une nouvelle demande de vérification de votre
+ identité auprès de %{partner_agency}.
header: Le délai imparti pour vérifier votre identité en personne a expiré
- subject: La demande de vérification de votre identité en personne a expiré
+ subject: Votre demande de vérification de votre identité en personne a expiré
in_person_failed:
body:
- with_cta: Cliquez sur le bouton ou copiez le lien ci-dessous pour essayer de
- vérifier à nouveau votre identité en ligne par le biais de
- %{sp_or_app_name}. Si vous rencontrez toujours des problèmes, veuillez
- contacter l’agence à laquelle vous essayez d’accéder.
- without_cta: Veuillez essayer de confirmer votre identité à nouveau sur le site
- Web de %{sp_name}. Si vous rencontrez toujours des difficultés,
- veuillez contacter l’agence à laquelle vous essayez d’accéder.
+ with_cta: Cliquez sur le bouton ou copiez le lien ci-dessous pour réessayer de
+ confirmer votre identité en ligne par le biais de %{sp_or_app_name}.
+ Si vous rencontrez toujours des difficultés, veuillez contacter
+ l’organisme auquel vous essayez d’accéder.
+ without_cta: Veuillez réessayer de confirmer votre identité sur le site Web de
+ %{sp_name}. Si vous rencontrez toujours des difficultés, veuillez
+ contacter l’organisme auquel vous essayez d’accéder.
intro: Votre identité n’a pas pu être vérifiée au bureau de poste de %{location}
le %{date}.
subject: Votre identité n’a pas pu être vérifiée en personne
verifying_identity: 'Lors de la vérification de votre identité :'
- verifying_step_not_expired: Votre carte d’identité ou votre permis de conduire
- délivré par l’État ne doit pas être périmé. Nous n’acceptons
- actuellement aucune autre forme d’identification, comme les passeports
- et les cartes d’identité militaires.
+ verifying_step_not_expired: Votre carte d’identité délivrée par l’État ou votre
+ permis de conduire ne doit pas être périmé. Nous n’acceptons
+ actuellement aucune autre pièce d’identité, comme les passeports et les
+ cartes d’identité militaires.
in_person_failed_suspected_fraud:
body:
help_center_html: Si vous avez besoin d’aide supplémentaire, vous pouvez consulter notre centre d’aide ou
- contacter l’agence à laquelle vous essayez d’accéder.
- intro: Nous comprenons que vous avez tenté de vérifier votre identité par le
- biais de %{app_name}, mais votre identité n’a pas pu être vérifiée au
- bureau de poste de %{location} le %{date}.
+ contacter l’organisme auquel vous essayez d’accéder.
+ intro: Vous avez tenté de confirmer votre identité par le biais de %{app_name},
+ mais votre identité n’a pas pu être confirmée au bureau de poste de
+ %{location} le %{date}.
greeting: Bonjour,
subject: Votre identité n’a pas pu être vérifiée en personne
in_person_please_call:
@@ -162,28 +164,29 @@ fr:
heading:
one: Il vous reste %{count} jour pour vérifier votre identité en personne
other: Il vous reste %{count} jours pour vérifier votre identité en personne
- intro: Ne manquez pas l’occasion de vérifier votre identité dans votre bureau de
- poste de proximité. Complétez cette étape pour accéder à %{sp_name}.
+ intro: Ne ratez pas l’occasion de vérifier votre identité dans votre bureau de
+ poste. Effectuez cette étape pour accéder à %{sp_name}.
subject:
- one: Vérifiez votre identité auprès d’un bureau de poste dans le prochain jour
- other: Vérifiez votre identité auprès d’un bureau de poste dans les %{count}
+ one: Vérifiez votre identité dans un bureau de poste au cours des prochaines
+ 24 heures
+ other: Vérifiez votre identité dans un bureau de poste au cours des %{count}
prochains jours
in_person_verified:
greeting: Bonjour,
- intro: Vous avez vérifié avec succès votre identité au bureau de poste de
+ intro: Vous avez réussi à vérifier votre identité au bureau de poste de
%{location} le %{date}.
next_sign_in:
with_sp:
- with_cta: Ensuite, cliquez sur le bouton ou copiez le lien ci-dessous pour
- accéder à %{sp_name} et connectez-vous.
- without_cta: Vous pouvez maintenant vous connecter à partir du site Web de
+ with_cta: Maintenant, cliquez sur le bouton ou copiez le lien ci-dessous pour
+ accéder à %{sp_name} et vous connecter.
+ without_cta: Vous pouvez désormais vous connecter depuis le site Web de
%{sp_name}.
- without_sp: Ensuite, cliquez sur le bouton ou copiez le lien ci-dessous pour
+ without_sp: Maintenant, cliquez sur le bouton ou copiez le lien ci-dessous pour
vous connecter à %{app_name}.
sign_in: Se connecter
- subject: Vous avez vérifié avec succès votre identité avec %{app_name}
- warning_contact_us_html: Si vous n’avez pas essayé de vérifier votre identité en
- personne, veuillez vous connecter pour réinitialiser votre mot de passe. Pour
signaler ce problème, contactez l’assistance
de %{app_name}.
@@ -191,23 +194,24 @@ fr:
info_html: La lettre que vous êtes sur le point de recevoir contiendra un code
de vérification nous permettant de vérifier votre adresse. Vous pouvez
terminer le processus de vérification d’identité en vous connectant à
- %{link_html} et en entrant le code de vérification.
- subject: Nous avons envoyé une lettre à l’adresse que vous avez en dossier
+ %{link_html} et en saisissant le code de vérification.
+ subject: Nous avons posté une lettre à l’adresse que vous avez enregistrée
letter_reminder_14_days:
- body_html: Vous avez demandé une lettre avec un code de vérification le
+ body_html: '
Vous avez demandé une lettre avec un code de vérification le
%{date_letter_was_sent}.
Reconnectez-vous à
%{app_name} et saisissez le code de vérification pour terminer la
- vérification de votre identité. %{help_link}.
+ vérification de votre identité. %{help_link}.'
did_not_get_a_letter_html: Si vous n’avez pas reçu cette lettre, %{another_letter_link_html}.
finish: Terminer la vérification de votre identité
sign_in_and_request_another_letter: connectez-vous pour en demander une autre
subject: Terminer la vérification de votre identité
new_device_sign_in:
- disavowal_link: réinitialiser votre mot de passe
+ disavowal_link: réinitialisez votre mot de passe
help_html: Si vous n’avez pas effectué ce changement, %{disavowal_link_html}.
Pour plus d’aide, veuillez visiter le %{help_link_html} de
%{app_name_html} ou %{contact_link_html}.
- info: 'Votre compte %{app_name} a été connecté sur un nouvel appareil.'
+ info: Votre compte %{app_name} vient d’être utilisé pour une connexion sur un
+ nouvel appareil.
subject: Nouvelle connexion avec votre compte %{app_name}
new_device_sign_in_after_2fa:
authentication_methods: méthodes d’authentification
@@ -242,55 +246,55 @@ fr:
reset_password: réinitialisez immédiatement votre mot de passe
subject: Nouvelle connexion avec votre compte %{app_name}
password_changed:
- disavowal_link: réinitialiser votre mot de passe
+ disavowal_link: réinitialisez votre mot de passe
help_html: Si vous n’avez pas effectué ce changement, %{disavowal_link_html}.
Pour plus d’aide, veuillez visiter le %{help_link_html} de
%{app_name_html} ou %{contact_link_html}.
- intro_html: Le mot de passe de votre compte %{app_name_html} a été changé.
+ intro_html: Vous avez un nouveau mot de passe pour votre compte %{app_name_html}.
personal_key_regenerated:
help_html: Votre compte %{app_name} vient de recevoir une nouvelle clé
personnelle de 16 caractères. Le but de cet e-mail est de s’assurer que
c’est bien vous qui en êtes à l’origine.
Si vous venez de vous
- connecter et de réinitialiser votre clé personnelle, c’est parfait! Vous
- n’avez rien à faire.
Si vous ne venez pas de réinitialiser votre
- clé personnelle, ou si vous n’êtes pas sûr, veuillez prendre
- immédiatement les mesures suivantes pour sécuriser votre compte
- :
- Modifiez votre mot de
- passe. Choisissez un mot de passe que vous n’avez pas
- encore utilisé avec ce compte.
-
- Connectez-vous à votre compte %{app_name} et vérifiez bien
- que toutes les informations sur la page de votre compte sont correctes,
- y compris les méthodes que vous utilisez pour l’authentification à deux
- facteurs, dont le numéro de téléphone, l’application d’authentification
- ou la clé de sécurité.
- Sur votre page de compte %{app_name}, demandez une
- nouvelle clé personnelle. N’oubliez pas de ne jamais la
- partager, sauf si vous l’utilisez pour vous connecter à un site de
- confiance qui utilise %{app_name}.
Merci,
L’équipe
- %{app_name}
- intro: Nouvelle clé personnelle émise
- subject: Alerte de sécurité du compte
- personal_key_sign_in:
- help_html: Votre compte %{app_name} a été connecté à l’aide de votre clé
- personnelle. Vous recevez cet email pour vous assurer que c’était bien
- vous.
Si vous venez de vous connecter avec votre clé personnelle,
- c’est parfait! Vous ne devez rien faire.
Si vous ne vous êtes pas
- connecté avec une clé personnelle ou si vous n’êtes pas sûr, prenez
+ connecter et de réinitialiser votre clé personnelle, c’est parfait !
+ Vous n’avez rien à faire.
Si vous ne venez pas de réinitialiser
+ votre clé personnelle, ou si vous n’êtes pas sûr, veuillez prendre
immédiatement les mesures suivantes pour sécuriser votre
- compte:
- Changez votre mot
- de passe. Choisissez un mot de passe que vous n’avez pas
- encore utilisé avec ce compte.
- Modifiez votre
+ mot de passe. Choisissez un mot de passe que vous n’avez
+ pas encore utilisé avec ce compte.
- Connectez-vous à votre compte
%{app_name} et assurez-vous de reconnaître toutes les
informations de la page de votre compte, y compris les méthodes que vous
- utilisez pour l’authentification à deux facteurs, telles que le numéro
- de téléphone, l’application d’authentification ou la clé de
- sécurité.
- Sur la page de votre
+ utilisez pour l’authentification à deux facteurs, comme le numéro de
+ téléphone, l’appli d’authentification ou la clé de
+ sécurité.
- Sur votre page de
+ compte %{app_name}, demandez une nouvelle clé personnelle.
+ N’oubliez pas de ne jamais la partager, à moins que vous ne l’utilisiez
+ pour vous connecter à un site Web de confiance qui utilise
+ %{app_name}.
Merci,
L’équipe %{app_name}
+ intro: Nouvelle clé personnelle émise
+ subject: Alerte de sécurité du compte
+ personal_key_sign_in:
+ help_html: Une connexion à votre compte %{app_name} à l’aide de votre clé
+ personnelle vient de se produire. Le but de cet e-mail est de s’assurer
+ que c’est bien vous qui en êtes à l’origine.
Si vous venez de vous
+ connecter avec votre clé personnelle, c’est parfait ! Il n’y a rien que
+ vous deviez faire.
Si vous ne vous êtes pas connecté avec une clé
+ personnelle ou si vous n’êtes pas sûr, veuillez prendre immédiatement
+ les mesures suivantes pour sécuriser votre compte :
- Changez votre mot de passe.
+ Choisissez un mot de passe que vous n’avez pas encore utilisé avec ce
+ compte.
- Connectez-vous à votre
+ compte %{app_name} et assurez-vous de reconnaître toutes
+ les informations de la page de votre compte, y compris les méthodes que
+ vous utilisez pour l’authentification à deux facteurs, comme le numéro
+ de téléphone, l’appli d’authentification ou la clé de
+ sécurité.
- Sur votre page de
compte %{app_name}, demandez une nouvelle clé personnelle.
- N’oubliez pas de ne jamais le partager à moins que vous ne l’utilisiez
- pour vous connecter à un site Web de confiance utilisant
+ N’oubliez pas de ne jamais la partager, à moins que vous ne l’utilisiez
+ pour vous connecter à un site Web de confiance qui utilise
%{app_name}.
Merci,
L’équipe %{app_name}
- intro: La clé personnelle utilisée pour vous connecter
+ intro: Clé personnelle utilisée pour la connexion
subject: Alerte de sécurité du compte
phone_added:
disavowal_link: réinitialiser votre mot de passe
@@ -301,56 +305,56 @@ fr:
subject: Nouveau numéro de téléphone ajouté
please_reset_password:
call_to_action: 'Par précaution, nous avons désactivé votre mot de passe pour
- conserver votre informations sûres. Veuillez suivre les étapes
- ci-dessous pour réinitialiser votre mot de passe et Sécurise ton
- compte:'
+ conserver vos informations en sécurité. Veuillez suivre les étapes
+ ci-dessous pour réinitialiser votre mot de passe et sécuriser votre
+ compte :'
intro: Nous avons détecté une activité inhabituelle sur votre compte
- %{app_name}. Nous sommes concernés quelqu’un d’autre que vous tente
- peut-être d’accéder à vos informations.
- learn_more_link_text: En savoir plus sur vos options
+ %{app_name}. Nous nous inquiétons que quelqu’un d’autre que vous
+ pourrait être en train d’essayer d’accéder à vos informations.
+ learn_more_link_text: En savoir plus sur les options qui s’offrent à vous
reminder_html: Pour rappel, %{app_name} ne vous demandera jamais vos
identifiants de connexion par téléphone ou par e-mail. Vous
pouvez prendre des mesures supplémentaires pour sécuriser votre compte
en activant l’authentification à deux facteurs.
step_1: Visitez le site Web %{app_name} et sélectionnez Connexion
- step_2: Sélectionnez “Vous avez oublié votre mot de passe?” au bas de la page
+ step_2: Sélectionnez « Mot de passe oublié ? » au bas de la page
step_3: Suivez les instructions pour réinitialiser votre mot de passe
subject: Activité inhabituelle — réinitialisez votre mot de passe %{app_name}
reset_password_instructions:
footer: Ce lien expire dans %{expires} heures.
gpo_letter_description: Si vous réinitialisez votre mot de passe, le code de
- vérification contenu dans votre lettre ne correspondra plus et vous
- devrez de vérifier à nouveau votre identité.
+ vérification contenu dans votre lettre ne fonctionnera plus et vous
+ devrez reconfirmer votre identité.
gpo_letter_header: Votre lettre est en route
header: Pour terminer la réinitialisation de votre mot de passe, veuillez
cliquer sur le lien ci-dessous ou copier et coller le lien complet dans
votre navigateur.
- link_text: Réinitialisez votre mot de passe
- subject: Réinitialisez votre mot de passe
+ link_text: Réinitialiser votre mot de passe
+ subject: Réinitialiser votre mot de passe
signup_with_your_email:
- help_html: Si vous n’avez pas demandé un nouveau compte ou que vous soupçonnez
- qu’une erreur s’est produite, veuillez visiter le %{help_link_html} de
+ help_html: Si vous n’avez pas demandé un nouveau compte ou soupçonnez qu’une
+ erreur s’est produite, veuillez visiter le %{help_link_html} de
%{app_name_html} ou %{contact_link_html}.
intro_html: Cette adresse courriel est déjà associée à un compte
%{app_name_html}, nous ne pouvons donc pas l’utiliser pour créer un
nouveau compte. Pour vous connecter à votre compte existant, suivez le
lien ci-dessous. Si vous ne tentez pas de vous connecter avec cette
adresse courriel, vous pouvez ignorer ce message.
- link_text: Allez à %{app_name}
+ link_text: Aller sur %{app_name}
reset_password_html: Si vous ne vous souvenez plus de votre mot de passe, allez
- à %{app_name_html} pour le réinitialiser.
+ sur %{app_name_html} pour le réinitialiser.
suspended_create_account:
- message: Il y a eu un problème lors de la création de votre compte %{app_name}
- avec cette adresse électronique. Veuillez appeler notre centre d’appels
- au %{contact_number} et fournir ce code - %{support_code}.
+ message: 'Il y a eu un problème lors de la création de votre compte %{app_name}
+ avec cette adresse e-mail. Veuillez appeler notre centre de contact au
+ %{contact_number} et indiquer le code suivant : %{support_code}.'
subject: Nous ne parvenons pas à créer votre compte
suspended_reset_password:
- message: La réinitialisation de votre mot de passe a posé un problème. Veuillez
- appeler notre centre d’appels au %{contact_number} et fournir ce code -
- %{support_code}.
+ message: 'Une erreur s’est produite lors de la réinitialisation de votre mot de
+ passe. Veuillez appeler notre centre de contact au %{contact_number} et
+ indiquer le code suivant : %{support_code}.'
subject: Nous n’avons pas pu réinitialiser votre mot de passe
suspension_confirmed:
- contact_agency: Veuillez contacter l’agence dont vous essayez d’accéder au service.
+ contact_agency: Veuillez contacter l’organisme dont vous essayez d’accéder au service.
remain_locked: Nous avons terminé l’examen de votre compte %{app_name} et votre
compte restera verrouillé.
subject: Votre compte est verrouillé
diff --git a/config/locales/users/es.yml b/config/locales/users/es.yml
index 5aabdd789e1..9f0a5a76328 100644
--- a/config/locales/users/es.yml
+++ b/config/locales/users/es.yml
@@ -5,47 +5,46 @@ es:
actions:
cancel: Volver al perfil
delete: Eliminar cuenta
- bullet_1: Usted no tendrá una %{app_name} cuenta.
+ bullet_1: No tendrá una cuenta de %{app_name}.
bullet_2_basic: Eliminaremos su dirección de correo electrónico, contraseña y
- número de teléfono
- bullet_2_verified: '%{app_name} borrará su email, contraseña, número de
- teléfono, nombre, dirección, fecha de nacimiento y número de Seguro
- Social de nuestro sistema.'
- bullet_3: Usted no podrá tener acceso seguro a su información usando %{app_name}
- bullet_4: Notificaremos a las agencias a las que acceda con %{app_name} que no
- ya tengo una cuenta
- heading: '¿Está seguro que desea eliminar su cuenta?'
+ número de teléfono.
+ bullet_2_verified: '%{app_name} eliminará su dirección de correo electrónico,
+ contraseña, número de teléfono, nombre, dirección, fecha de nacimiento y
+ número de Seguro Social de nuestro sistema.'
+ bullet_3: No podrá tener acceso seguro a su información usando %{app_name}.
+ bullet_4: Notificaremos a las agencias a las que acceda con %{app_name} que
+ usted ya no tiene una cuenta.
+ heading: '¿Está seguro de que desea eliminar su cuenta?'
instructions: Ingrese su contraseña para confirmar que desea eliminar su cuenta.
subheading: 'Si elimina su cuenta:'
personal_key:
accessible_labels:
- code_example: Un ejemplo de clave personal con 16 caracteres
+ code_example: Un ejemplo de clave personal con 16 caracteres
preview: Vista previa de la clave personal
- confirmation_error: Ha ingresado una clave personal incorrecta.
- generated_on_html: Tu clave personal fue generada el %{date_html}
+ confirmation_error: Ingresó una clave personal incorrecta.
+ generated_on_html: Su clave personal fue generada el %{date_html}
phones:
error_message: Agregó el número máximo de números de teléfono.
rules_of_use:
- check_box_to_accept: Marque esta casilla para aceptar las reglas de uso de %{app_name}
+ check_box_to_accept: Marque esta casilla para aceptar %{app_name}
details_html: |-
Reglas de uso:
- - Explique cómo funciona el servicio %{app_name} y qué puede esperar de él,
- - Los términos bajo los cuales le brindamos el servicio %{app_name},
+ - Explican cómo funciona el servicio de %{app_name} y qué puede esperar de este,
+ - Las condiciones según las cuales le brindamos el servicio de %{app_name},
- Cómo usamos su información y sus derechos sobre esa información, y
- - Las condiciones que acepta cuando realiza determinadas acciones en el servicio %{app_name}.
+ - Las condiciones que acepta cuando efectúa ciertas acciones en el servicio de %{app_name}.
- overview_html: Actualizamos nuestro %{link_html}. Revise y marque la casilla a
- continuación para continuar.
+ overview_html: Actualizamos nuestro %{link_html}. Revise y marque esta casilla
+ para continuar.
second_mfa_reminder:
add_method: Agregar un método de autenticación
- continue: Continúa con %{sp_name}
- description: Su cuenta sólo tiene un método de autenticación. Para evitar que
- bloqueen su cuenta, puede que necesites usar otro método de
- autenticación.
- heading: Aumente la seguridad de su cuenta
+ continue: Continuar con %{sp_name}
+ description: Su cuenta tiene un solo método de autenticación. Para evitar que su
+ cuenta quede bloqueada, agregue otro método de autenticación.
+ heading: Mejore la seguridad de su cuenta
suspended_sign_in_account:
- contact_details: No pudimos iniciar tu sesión. Por favor, llama a nuestro centro
- de contacto al %{contact_number}.
- error_details: Proporciona el código de error %{error_code}.
+ contact_details: No pudimos iniciar su sesión. Llame a nuestro centro de
+ contacto al %{contact_number}.
+ error_details: Proporcione el código de error %{error_code}.
heading: Llámenos
diff --git a/config/locales/users/fr.yml b/config/locales/users/fr.yml
index 0cfc1594246..9df089c2f14 100644
--- a/config/locales/users/fr.yml
+++ b/config/locales/users/fr.yml
@@ -6,24 +6,24 @@ fr:
cancel: Retour au profil
delete: Supprimer le compte
bullet_1: Vous n’aurez pas de compte %{app_name}.
- bullet_2_basic: Nous effacerons votre adresse email, votre mot de passe et votre
- numéro de téléphone
- bullet_2_verified: '%{app_name} supprimera votre adresse e-mail, votre mot de
- passe et votre numéro de téléphone, votre nom, votre adresse, votre date
- de naissance et votre numéro de sécurité sociale de notre système.'
- bullet_3: Vous ne pourrez pas accéder en toute sécurité à vos informations en
- utilisant %{app_name}.
- bullet_4: Nous informerons les agences auxquelles vous accédez avec %{app_name}
- que vous ne plus avoir un compte
- heading: Êtes-vous sûr de vouloir supprimer votre compte?
+ bullet_2_basic: Nous supprimerons votre adresse e-mail, votre mot de passe et
+ votre numéro de téléphone
+ bullet_2_verified: '%{app_name} supprimera de notre système votre adresse
+ e-mail, votre mot de passe, votre numéro de téléphone, votre nom, votre
+ adresse, votre date de naissance et votre numéro de sécurité sociale.'
+ bullet_3: Vous ne pourrez pas accéder en toute sécurité à vos informations à
+ l’aide de %{app_name}.
+ bullet_4: Nous informerons les organismes auxquels vous accédez avec %{app_name}
+ que vous n’avez plus de compte
+ heading: Êtes-vous sûr de vouloir supprimer votre compte ?
instructions: Saisissez votre mot de passe pour confirmer que vous souhaitez
supprimer votre compte.
- subheading: 'Si vous supprimez votre compte:'
+ subheading: 'Si vous supprimez votre compte :'
personal_key:
accessible_labels:
- code_example: Un exemple de code personnel à 16 caractères
- preview: Aperçu du code personnel
- confirmation_error: Vous avez entré un clé personnelle erronée.
+ code_example: Un exemple de clé personnelle à 16 caractères
+ preview: Aperçu de clé personnelle
+ confirmation_error: Vous avez saisi une clé personnelle erronée.
generated_on_html: Votre clé personnelle a été générée le %{date_html}
phones:
error_message: Vous avez ajouté le nombre maximum de numéros de téléphone.
@@ -32,13 +32,13 @@ fr:
details_html: |-
Règles d’utilisation:
- - Expliquez le fonctionnement du service %{app_name} et ce que vous pouvez en attendre,
+ - Expliquer le fonctionnement du service %{app_name} et ce que vous pouvez en attendre,
- Les conditions dans lesquelles nous vous fournissons le service %{app_name},
- Comment nous utilisons vos informations et vos droits sur ces informations, et
- Les conditions que vous acceptez lorsque vous effectuez certaines actions sur le service %{app_name}.
- overview_html: Nous avons mis à jour notre %{link_html}. Veuillez consulter et
- cocher la case ci-dessous pour continuer.
+ overview_html: Nous avons mis à jour nos %{link_html}. Veuillez les passer en
+ revue et cocher la case ci-dessous pour continuer.
second_mfa_reminder:
add_method: Ajouter une méthode d’authentification
continue: Continuer vers %{sp_name}
@@ -49,5 +49,5 @@ fr:
suspended_sign_in_account:
contact_details: Nous n’avons pas pu vous connecter. Merci d’appeler notre
centre de contact au %{contact_number}.
- error_details: Indiquez le code d’erreur %{error_code}.
- heading: S’il vous plaît, appelez-nous
+ error_details: Veuillez communiquer le code d’erreur %{error_code}.
+ heading: Veuillez nous appeler
diff --git a/config/locales/valid_email/fr.yml b/config/locales/valid_email/fr.yml
index 3e7f3b995b1..d863c06da1c 100644
--- a/config/locales/valid_email/fr.yml
+++ b/config/locales/valid_email/fr.yml
@@ -3,4 +3,4 @@ fr:
valid_email:
validations:
email:
- invalid: L’adresse électronique n’est pas valide
+ invalid: L’adresse e-mail n’est pas valide
diff --git a/config/locales/vendor_outage/es.yml b/config/locales/vendor_outage/es.yml
index 7fa8f731554..93d52c279f3 100644
--- a/config/locales/vendor_outage/es.yml
+++ b/config/locales/vendor_outage/es.yml
@@ -3,47 +3,44 @@ es:
vendor_outage:
alerts:
phone:
- default: No podemos verificar teléfonos en estos momentos. Por favor, utilice
- otro método de auntentificación, si cuenta con uno, o inténtelo
- nuevamente más tarde.
- idv: No podemos verificar teléfonos en estos momentos. Por favor, inténtelo
- nuevamente más tarde o, en lugar de ello, verifique su dirección por
- correo.
+ default: No podemos verificar teléfonos en estos momentos. Use otro método de
+ autenticación que tenga o vuelva a intentarlo más tarde.
+ idv: No podemos verificar teléfonos en estos momentos. Vuelva a intentarlo más
+ tarde, o bien verifique su dirección por correo.
pinpoint:
idv:
- header: Estamos trabajando para resolver un error
- message_html: '%{sp_name_html} necesita asegurarse de que es usted realmente y
- no alguien que se hace pasar por usted.'
+ header: Estamos trabajando para corregir un error
+ message_html: '%{sp_name_html} necesita asegurarse de que se trata de usted y no
+ de alguien que se hace pasar por usted.'
options_html:
- Continuar ahora y verificar por correo, lo cual tarda entre
5 y 10 días.
- Salir de Login.gov e inténtelo de nuevo más tarde.
options_prompt: 'Usted puede:'
status_page_html: Lamentablemente, estamos teniendo problemas técnicos.
- %{link_html} para saber cuándo se ha resuelto el error.
- status_page_link: Reciba actualizaciones en nuestra página de estado
+ %{link_html} para saber cuando se haya resuelto el error.
+ status_page_link: Obtenga las actualizaciones en nuestra página de estado
sms:
default: No podemos enviar mensajes de texto (SMS) en estos momentos. Puede
recibir un código por medio de una llamada telefónica o elegir otro
- método de auntentificación, si cuenta con uno.
+ método de autenticación que tenga.
idv: No podemos enviar mensajes de texto (SMS) en estos momentos. Puede recibir
- un código por medio de una llamada telefónica o, en su lugar,
- verificar su dirección por correo.
+ un código por medio de una llamada telefónica, o bien verificar su
+ dirección por correo.
voice:
- default: No podemos enviar llamadas telefónicas en estos momentos. Puede recibir
+ default: No podemos hacer llamadas telefónicas en estos momentos. Puede recibir
un código por medio de un mensaje de texto (SMS) o elegir otro método
- de auntentificación, si cuenta con uno.
- idv: No podemos enviar llamadas telefónicas en estos momentos. Puede recibir un
- código por medio de un mensaje de texto (SMS) o, en su lugar,
- verificar su dirección por correo.
+ de autenticación que tenga.
+ idv: No podemos hacer llamadas telefónicas en estos momentos. Puede recibir un
+ código por medio de un mensaje de texto (SMS), o bien verificar su
+ dirección por correo.
blocked:
idv:
- generic: Debido a problemas técnicos por nuestra parte, no podemos verificar su
- identidad en estos momentos. Por favor, inténtelo nuevamente más
- tarde.
+ generic: Estamos teniendo problemas técnicos y no podemos verificar su identidad
+ en estos momentos. Vuelva a intentarlo más tarde.
phone:
- default: No podemos verificar teléfonos en estos momentos. Por favor, inténtelo
- nuevamente más tarde.
+ default: No podemos verificar teléfonos en estos momentos. Vuelva a intentarlo
+ más tarde.
get_updates: Obtenga actualizaciones
- get_updates_on_status_page: Reciba actualizaciones en nuestra página de estado
+ get_updates_on_status_page: Obtenga las actualizaciones en nuestra página de estado
working: Estamos trabajando para corregir un error
diff --git a/config/locales/vendor_outage/fr.yml b/config/locales/vendor_outage/fr.yml
index 74b3c946807..f5009cd8de7 100644
--- a/config/locales/vendor_outage/fr.yml
+++ b/config/locales/vendor_outage/fr.yml
@@ -3,45 +3,48 @@ fr:
vendor_outage:
alerts:
phone:
- default: Nous ne pouvons pas vérifier les téléphones pour le moment. Veuillez
- utiliser une autre méthode d’authentification si vous en avez une, ou
- réessayez plus tard.
- idv: Nous ne pouvons pas vérifier les téléphones pour le moment. Veuillez
- réessayer plus tard ou vérifier votre adresse par la poste.
+ default: Nous ne sommes pas actuellement en mesure de vérifier les téléphones.
+ Veuillez utiliser une autre méthode d’authentification si vous en avez
+ une ou réessayer ultérieurement.
+ idv: Nous ne sommes pas actuellement en mesure de vérifier les téléphones.
+ Veuillez réessayer ultérieurement ou vérifier votre adresse par
+ courrier.
pinpoint:
idv:
header: Nous travaillons à la résolution d’une erreur
- message_html: '%{sp_name_html} doit s’assurer que c’est bien vous — et non
- quelqu’un qui se fait passer pour vous.'
+ message_html: '%{sp_name_html} doit s’assurer qu’il s’agit bien de vous, et non
+ de quelqu’un qui se fait passer pour vous.'
options_html:
- Continuer maintenant et effectuer la vérification par courrier,
qui nécessite 5 à 10 jours.
- Quitter Login.gov.
options_prompt: 'Vous pouvez :'
- status_page_html: Malheureusement, nous avons actuellement des difficultés
+ status_page_html: Malheureusement, nous rencontrons actuellement des difficultés
techniques. %{link_html} pour savoir quand l’erreur est résolue.
- status_page_link: Obtenez des mises à jour sur notre page de statut
+ status_page_link: Obtenir les dernières informations sur notre page d’état des
+ systèmes.
sms:
- default: Nous ne pouvons pas envoyer de messages texte (SMS) pour le moment.
+ default: Nous ne sommes pas actuellement en mesure d’envoyer de SMS (textos).
Vous pouvez obtenir un code par appel téléphonique ou choisir une
- autre méthode d’authentification si vous en avez un.
- idv: Nous ne pouvons pas envoyer de messages texte (SMS) pour le moment. Vous
- pouvez obtenir un code par téléphone ou vérifier votre adresse par la
- poste.
+ autre méthode d’authentification si vous en avez une.
+ idv: Nous ne sommes pas actuellement en mesure d’envoyer de SMS (textos). Vous
+ pouvez obtenir un code par téléphone ou vérifier votre adresse par
+ courrier à la place.
voice:
- default: Nous ne pouvons pas envoyer d’appels téléphoniques pour le moment. Vous
- pouvez obtenir un code par message texte (SMS) ou choisir une autre
- méthode d’authentification si vous en avez une.
- idv: Nous ne pouvons pas envoyer d’appels téléphoniques pour le moment. Vous
- pouvez obtenir un code par message texte (SMS), ou vérifier votre
- adresse par la poste.
+ default: Nous ne sommes pas actuellement en mesure de passer des appels
+ téléphoniques. Vous pouvez obtenir un code par SMS (texto) ou choisir
+ une autre méthode d’authentification si vous en avez une.
+ idv: Nous ne sommes pas actuellement en mesure de passer des appels
+ téléphoniques. Vous pouvez obtenir un code par SMS (texto) ou vérifier
+ votre adresse par courrier à la place.
blocked:
idv:
- generic: Nous rencontrons des difficultés techniques et ne pouvons pas vérifier
- votre identité pour le moment. Veuillez réessayer plus tard.
+ generic: Nous rencontrons des difficultés techniques de notre côté et ne sommes
+ pas actuellement en mesure de vérifier votre identité. Veuillez
+ réessayer ultérieurement.
phone:
- default: Nous ne pouvons pas vérifier les téléphones pour le moment. Veuillez
- réessayer plus tard.
- get_updates: Obtenir des mises à jour
- get_updates_on_status_page: Obtenez des mises à jour sur notre page de statut
+ default: Nous ne sommes pas actuellement en mesure de vérifier les téléphones.
+ Veuillez réessayer ultérieurement.
+ get_updates: Obtenir les dernières informations
+ get_updates_on_status_page: Obtenir les dernières informations sur notre page d’état des systèmes.
working: Nous travaillons à la résolution d’une erreur
diff --git a/config/locales/zxcvbn/es.yml b/config/locales/zxcvbn/es.yml
index 2fe93f34615..cae64f62ebc 100644
--- a/config/locales/zxcvbn/es.yml
+++ b/config/locales/zxcvbn/es.yml
@@ -3,35 +3,37 @@ es:
zxcvbn:
feedback:
a_word_by_itself_is_easy_to_guess: Una sola palabra es fácil de adivinar.
- add_another_word_or_two_uncommon_words_are_better: Añada otra palabra o dos. Las palabras poco comunes son mejor opción.
- all_uppercase_is_almost_as_easy_to_guess_as_all_lowercase: Todo en mayúsculas es
- casi igual de fácil de adivinar como todo en minúsculas.
- avoid_dates_and_years_that_are_associated_with_you: Evite las fechas y los años que están asociados con usted
- avoid_recent_years: Evite los años recientes
- avoid_repeated_words_and_characters: Evite palabras y caracteres repetidos
- avoid_sequences: Evite secuencias
- avoid_years_that_are_associated_with_you: Evite los años que están asociados con usted
- capitalization_doesnt_help_very_much: Usar mayúsculas no ayuda mucho
- common_names_and_surnames_are_easy_to_guess: Los nombres y apellidos comunes son fáciles de adivinar
- dates_are_often_easy_to_guess: Las fechas suelen ser fáciles de adivinar
+ add_another_word_or_two_uncommon_words_are_better: Añada otra palabra o dos. Es mejor usar palabras poco comunes.
+ all_uppercase_is_almost_as_easy_to_guess_as_all_lowercase: Todo en mayúsculas es casi tan fácil de adivinar como todo en minúsculas.
+ avoid_dates_and_years_that_are_associated_with_you: Evite fechas y años que están asociados con usted.
+ avoid_recent_years: Evite años recientes.
+ avoid_repeated_words_and_characters: Evite palabras y caracteres repetidos.
+ avoid_sequences: Evite secuencias.
+ avoid_years_that_are_associated_with_you: Evite años que están asociados con usted.
+ capitalization_doesnt_help_very_much: El uso de mayúsculas no ayuda mucho.
+ common_names_and_surnames_are_easy_to_guess: Los nombres y apellidos comunes son fáciles de adivinar.
+ dates_are_often_easy_to_guess: Las fechas suelen ser fáciles de adivinar.
for_a_stronger_password_use_a_few_words_separated_by_spaces_but_avoid_common_phrases:
Para una contraseña más segura, use pocas palabras separadas por
- espacios, pero evite frases comunes
- names_and_surnames_by_themselves_are_easy_to_guess: Nombres y apellidos por si solos son fáciles de adivinar
- no_need_for_symbols_digits_or_uppercase_letters: No necesita usar símbolos, cifras ni mayúsculas
- predictable_substitutions_like__instead_of_a_dont_help_very_much: No hay necesidad de símbolos, dígitos o letras mayúsculas
- recent_years_are_easy_to_guess: Sustituciones predecibles como ‘@’ en lugar de ‘a’ no ayudan mucho
- repeats_like_aaa_are_easy_to_guess: Los años recientes son fáciles de adivinar
- repeats_like_abcabcabc_are_only_slightly_harder_to_guess_than_abc: Las repeticiones como “aaa” son fáciles de adivinar
- reversed_words_arent_much_harder_to_guess: Las repeticiones como “abcabcabc” son
- sólo un poco más difíciles de adivinar que “abc”
- sequences_like_abc_or_6543_are_easy_to_guess: Las palabras invertidas no son mucho más difíciles de adivinar
- short_keyboard_patterns_are_easy_to_guess: Las secuencias como abc o 6543 son fáciles de adivinar
- straight_rows_of_keys_are_easy_to_guess: Las combinaciones cortas de teclas son fáciles de adivinar
- there_is_no_need_for_symbols_digits_or_uppercase_letters: Las líneas seguidas de letras son fáciles de adivinar
- this_is_a_top_10_common_password: Esta es una de las 100 contraseñas más comunes.
- this_is_a_top_100_common_password: Esta es una de las 10 contraseñas más comunes.
- this_is_a_very_common_password: Esta es una contraseña muy común
- this_is_similar_to_a_commonly_used_password: Esto es similar a una contraseña comúnmente utilizada
- use_a_few_words_avoid_common_phrases: Use pocas palabras, evite las frases comunes
- use_a_longer_keyboard_pattern_with_more_turns: Use una combinación larga de teclas con más configuraciones
+ espacios, pero evite frases comunes.
+ names_and_surnames_by_themselves_are_easy_to_guess: Los nombres y apellidos por si solos son fáciles de adivinar.
+ no_need_for_symbols_digits_or_uppercase_letters: No necesita usar símbolos, números ni mayúsculas.
+ predictable_substitutions_like__instead_of_a_dont_help_very_much:
+ El uso de sustituciones previsibles como ‘@’ en lugar de ‘a’ no ayuda
+ mucho.
+ recent_years_are_easy_to_guess: Los años recientes son fáciles de adivinar.
+ repeats_like_aaa_are_easy_to_guess: Las repeticiones como “aaa” son fáciles de adivinar.
+ repeats_like_abcabcabc_are_only_slightly_harder_to_guess_than_abc:
+ Las repeticiones como “abcabcabc” son apenas más difíciles de adivinar
+ que “abc”.
+ reversed_words_arent_much_harder_to_guess: Las palabras invertidas no son mucho más difíciles de adivinar.
+ sequences_like_abc_or_6543_are_easy_to_guess: Las secuencias como abc o 6543 son fáciles de adivinar.
+ short_keyboard_patterns_are_easy_to_guess: Las combinaciones cortas de teclas son fáciles de adivinar.
+ straight_rows_of_keys_are_easy_to_guess: Las filas de teclas seguidas son fáciles de adivinar.
+ there_is_no_need_for_symbols_digits_or_uppercase_letters: No es necesario usar símbolos, números o letras mayúsculas.
+ this_is_a_top_10_common_password: Esta es una de las 10 contraseñas más comunes.
+ this_is_a_top_100_common_password: Esta es una de las 100 contraseñas más comunes.
+ this_is_a_very_common_password: Esta es una contraseña muy común.
+ this_is_similar_to_a_commonly_used_password: Esto es similar a una contraseña comúnmente utilizada.
+ use_a_few_words_avoid_common_phrases: Use pocas palabras y evite las frases comunes.
+ use_a_longer_keyboard_pattern_with_more_turns: Use una combinación larga de teclas con más variaciones.
diff --git a/config/locales/zxcvbn/fr.yml b/config/locales/zxcvbn/fr.yml
index 01666fb39f8..0621b28ac2b 100644
--- a/config/locales/zxcvbn/fr.yml
+++ b/config/locales/zxcvbn/fr.yml
@@ -3,39 +3,40 @@ fr:
zxcvbn:
feedback:
a_word_by_itself_is_easy_to_guess: Un mot seul est facile à deviner
- add_another_word_or_two_uncommon_words_are_better: Ajoutez un ou deux autres mots. Les mots non communs sont plus efficaces
+ add_another_word_or_two_uncommon_words_are_better: Ajoutez un ou deux autres
+ mots. Il est préférable d’utiliser des mots peu communs.
all_uppercase_is_almost_as_easy_to_guess_as_all_lowercase: Tout en majuscules
- est presque aussi facile à deviner que tout en minuscules
- avoid_dates_and_years_that_are_associated_with_you: Évitez les dates et années qui vous sont associées
- avoid_recent_years: Évitez les années récentes
- avoid_repeated_words_and_characters: Évitez les mots et caractères répétés
- avoid_sequences: Évitez les séquences
- avoid_years_that_are_associated_with_you: Évitez les années qui vous sont associées
- capitalization_doesnt_help_very_much: La capitalisation n’aide pas beaucoup
- common_names_and_surnames_are_easy_to_guess: Les prénoms et noms de famille communs sont faciles à deviner
- dates_are_often_easy_to_guess: Les dates sont souvent faciles à deviner
+ est presque aussi facile à deviner que tout en minuscules.
+ avoid_dates_and_years_that_are_associated_with_you: Évitez les dates et années qui vous sont associées.
+ avoid_recent_years: Évitez les années récentes.
+ avoid_repeated_words_and_characters: Évitez les mots et caractères répétés.
+ avoid_sequences: Évitez les séquences.
+ avoid_years_that_are_associated_with_you: Évitez les années qui vous sont associées.
+ capitalization_doesnt_help_very_much: La capitalisation n’aide pas beaucoup.
+ common_names_and_surnames_are_easy_to_guess: Les prénoms et noms de famille communs sont faciles à deviner.
+ dates_are_often_easy_to_guess: Les dates sont souvent faciles à deviner.
for_a_stronger_password_use_a_few_words_separated_by_spaces_but_avoid_common_phrases:
Pour créer un mot de passe plus fort, utilisez quelques mots séparés par
- des espaces, mais évitez les phrases communes
- names_and_surnames_by_themselves_are_easy_to_guess: Les prénoms et noms de famille seuls sont faciles à deviner
- no_need_for_symbols_digits_or_uppercase_letters: Pas besoin de symboles, de chiffres ou de lettres majuscules
+ des espaces, mais évitez les phrases courantes.
+ names_and_surnames_by_themselves_are_easy_to_guess: Les prénoms et noms de famille seuls sont faciles à deviner.
+ no_need_for_symbols_digits_or_uppercase_letters: Pas besoin de symboles, de chiffres ou de lettres majuscules.
predictable_substitutions_like__instead_of_a_dont_help_very_much:
- Les remplacements prévisibles comme es « @ » au lieu de « à » n’aident
- pas beaucoup
- recent_years_are_easy_to_guess: Les années récentes sont faciles à deviner
- repeats_like_aaa_are_easy_to_guess: Les répétitions comme « aaa » sont faciles à deviner
- repeats_like_abcabcabc_are_only_slightly_harder_to_guess_than_abc: |-
- Les répétitions comme « abcabcabc » sont à peine
- plus difficiles à deviner que « abc »
- reversed_words_arent_much_harder_to_guess: Les mots inversés ne sont pas très difficiles à deviner
- sequences_like_abc_or_6543_are_easy_to_guess: Les séquences comme abc ou 6543 sont faciles à deviner
- short_keyboard_patterns_are_easy_to_guess: Les motifs de clavier courts sont faciles à deviner
- straight_rows_of_keys_are_easy_to_guess: Les rangées de lettres consécutives sont faciles à deviner
+ Les remplacements prévisibles comme « @ » au lieu de « a » n’aident pas
+ beaucoup.
+ recent_years_are_easy_to_guess: Les années récentes sont faciles à deviner.
+ repeats_like_aaa_are_easy_to_guess: Les répétitions comme « aaa » sont faciles à deviner.
+ repeats_like_abcabcabc_are_only_slightly_harder_to_guess_than_abc:
+ Les répétitions comme « abcabcabc » sont à peine plus difficiles à
+ deviner que « abc ».
+ reversed_words_arent_much_harder_to_guess: Les mots à l’envers ne sont guère plus difficiles à deviner.
+ sequences_like_abc_or_6543_are_easy_to_guess: Les séquences comme abc ou 6543 sont faciles à deviner.
+ short_keyboard_patterns_are_easy_to_guess: Les séquences courtes de clavier sont faciles à deviner.
+ straight_rows_of_keys_are_easy_to_guess: Les rangées de lettres consécutives sont faciles à deviner.
there_is_no_need_for_symbols_digits_or_uppercase_letters: Les symboles, les
- chiffres ou les lettres majuscules ne sont pas nécessaires
- this_is_a_top_10_common_password: Il s’agit d’un des 10 mots de passe les plus communs
- this_is_a_top_100_common_password: Il s’agit d’un des 100 mots de passe les plus communs
- this_is_a_very_common_password: Il s’agit d’un mot de passe très commun
- this_is_similar_to_a_commonly_used_password: Ceci est similaire à un mot de passe souvent utilisé
- use_a_few_words_avoid_common_phrases: Utilisez peu de mots, évitez les expressions courantes
- use_a_longer_keyboard_pattern_with_more_turns: Utilisez un motif de clavier plus long avec plus de tours
+ chiffres ou les lettres majuscules ne sont pas nécessaires.
+ this_is_a_top_10_common_password: Ce mot de passe figure parmi les 10 mots de passe les plus courants.
+ this_is_a_top_100_common_password: Ce mot de passe figure parmi les 100 mots de passe les plus courants.
+ this_is_a_very_common_password: Ce mot de passe est très courant.
+ this_is_similar_to_a_commonly_used_password: Ce mot de passe est similaire à un mot de passe utilisé couramment.
+ use_a_few_words_avoid_common_phrases: Utilisez peu de mots, évitez les expressions courantes.
+ use_a_longer_keyboard_pattern_with_more_turns: Utilisez une séquence de clavier plus longue, avec plus de tours
diff --git a/spec/components/time_component_spec.rb b/spec/components/time_component_spec.rb
index ad3218de909..f3507157231 100644
--- a/spec/components/time_component_spec.rb
+++ b/spec/components/time_component_spec.rb
@@ -37,7 +37,7 @@
it 'renders element with formatted time content' do
rendered = render_inline TimeComponent.new(time: Time.zone.parse('2020-04-21T14:03:00Z').utc)
- expect(rendered).to have_content('21 April 2020 à 14:03')
+ expect(rendered).to have_content('21 April 2020 à 2 h 03 PM')
end
end
end
diff --git a/spec/i18n_spec.rb b/spec/i18n_spec.rb
index 7c6bdfa9e90..7380a505340 100644
--- a/spec/i18n_spec.rb
+++ b/spec/i18n_spec.rb
@@ -61,17 +61,14 @@ class BaseTask
{ key: 'i18n.locale.es', locales: %i[es fr zh] },
{ key: 'i18n.locale.fr', locales: %i[es fr zh] },
{ key: 'links.contact', locales: %i[fr] }, # "Contact" is "Contact" in French
- { key: 'mailer.logo' }, # "logo is logo" in English, French and Spanish
{ key: 'saml_idp.auth.error.title', locales: %i[es] }, # "Error" is "Error" in Spanish
{ key: 'simple_form.no', locales: %i[es] }, # "No" is "No" in Spanish
- { key: 'time.am' }, # "AM" is "AM" in French and Spanish
{ key: 'time.formats.sms_date' }, # for us date format
- { key: 'time.pm' }, # "PM" is "PM" in French and Spanish
{ key: 'datetime.dotiw.words_connector' }, # " , " is only punctuation and not translated
- { key: 'date.formats.long', locales: %i[zh] },
- { key: 'date.formats.short', locales: %i[zh] },
- { key: 'time.formats.event_date', locales: %i[zh] },
- { key: 'time.formats.event_time', locales: %i[zh] },
+ { key: 'date.formats.long', locales: %i[es zh] },
+ { key: 'date.formats.short', locales: %i[es zh] },
+ { key: 'time.formats.event_date', locales: %i[es zh] },
+ { key: 'time.formats.event_time', locales: %i[es zh] },
{ key: 'time.formats.event_timestamp', locales: %i[zh] },
# need to be fixed
{ key: 'i18n.locale.zh', locales: %i[es fr zh] },
diff --git a/spec/jobs/in_person/send_proofing_notification_job_spec.rb b/spec/jobs/in_person/send_proofing_notification_job_spec.rb
index 66e04ea14fd..2cacb1ca9a2 100644
--- a/spec/jobs/in_person/send_proofing_notification_job_spec.rb
+++ b/spec/jobs/in_person/send_proofing_notification_job_spec.rb
@@ -147,7 +147,7 @@
end
context 'sends a message that respects the user email locale preference' do
- let(:proofed_date) { Time.zone.now.strftime('%m/%d/%Y') }
+ let(:proofed_date) { Time.zone.now }
let(:phone_number) { passed_enrollment.notification_phone_configuration.formatted_phone }
let(:contact_number) { '(844) 555-5555' }
let(:reference_string) { passed_enrollment.enrollment_code }
@@ -162,13 +162,14 @@
it 'handles English language preference' do
passed_enrollment.user.update!(email_language: 'en')
passed_enrollment.update!(proofed_at: Time.zone.now)
+ formatted_date = I18n.l(proofed_date, format: :sms_date, locale: 'en')
expect(Telephony).
to(
receive(:send_notification).
with(
to: phone_number,
- message: "Login.gov: You visited the Post Office on #{proofed_date}." \
+ message: "Login.gov: You visited the Post Office on #{formatted_date}." \
" Check email for your result." \
" Not you? Report this right away: #{contact_number}." \
" Ref: #{formatted_string}",
@@ -182,15 +183,17 @@
it 'handles French language preference' do
passed_enrollment.user.update!(email_language: 'fr')
passed_enrollment.update!(proofed_at: Time.zone.now)
+ formatted_date = I18n.l(proofed_date, format: :sms_date, locale: 'fr')
expect(Telephony).
to(
receive(:send_notification).
with(
to: phone_number,
- message: "Login.gov: Vous avez visité le bureau de poste le #{proofed_date}." \
- " Vérifiez votre e-mail. Ce n'est pas vous? Signalez-le: #{contact_number}." \
- " Réf: #{formatted_string}",
+ message: "Login.gov : Vous avez visité le bureau de poste le " \
+ "#{formatted_date}. Vérifiez votre e-mail pour obtenir votre résultat. Ce" \
+ " n'est pas vous ? Signalez-le immédiatement : #{contact_number}. Réf. : " \
+ "#{formatted_string}",
country_code: Phonelib.parse(phone_number).country,
),
)
@@ -201,14 +204,16 @@
it 'handles Spanish language preference' do
passed_enrollment.user.update!(email_language: 'es')
passed_enrollment.update!(proofed_at: Time.zone.now)
+ formatted_date = I18n.l(proofed_date, format: :sms_date, locale: 'es')
expect(Telephony).
to(
receive(:send_notification).
with(
to: phone_number,
- message: "Login.gov: Visitó la oficina de correos el #{proofed_date}." \
- " Revise su correo electrónico. ¿No fue usted? Llame: #{contact_number}." \
+ message: "Login.gov: Usted acudió a la oficina de correos el " \
+ "#{formatted_date}. Revise el resultado en su correo electrónico. " \
+ "¿No fue usted? Informe inmediatamente de esto: #{contact_number}." \
" Ref: #{formatted_string}",
country_code: Phonelib.parse(phone_number).country,
),
diff --git a/spec/presenters/idv/in_person/ready_to_verify_presenter_spec.rb b/spec/presenters/idv/in_person/ready_to_verify_presenter_spec.rb
index 31ce444326d..6386dd09a0c 100644
--- a/spec/presenters/idv/in_person/ready_to_verify_presenter_spec.rb
+++ b/spec/presenters/idv/in_person/ready_to_verify_presenter_spec.rb
@@ -91,8 +91,20 @@
before { I18n.locale = :es }
it 'returns localized location hours for weekdays and weekends by prefix' do
- expect(presenter.selected_location_hours(:weekday)).to eq '08:00 – 16:30'
- expect(presenter.selected_location_hours(:saturday)).to eq '08:00 – 16:30'
+ expect(presenter.selected_location_hours(:weekday)).to eq '8:00 AM – 4:30 PM'
+ expect(presenter.selected_location_hours(:saturday)).to eq '8:00 AM – 4:30 PM'
+ expect(presenter.selected_location_hours(:sunday)).to eq(
+ I18n.t('in_person_proofing.body.barcode.retail_hours_closed'),
+ )
+ end
+ end
+
+ context 'with French locale' do
+ before { I18n.locale = :fr }
+
+ it 'returns localized location hours for weekdays and weekends by prefix' do
+ expect(presenter.selected_location_hours(:weekday)).to eq '8 h 00 AM – 4 h 30 PM'
+ expect(presenter.selected_location_hours(:saturday)).to eq '8 h 00 AM – 4 h 30 PM'
expect(presenter.selected_location_hours(:sunday)).to eq(
I18n.t('in_person_proofing.body.barcode.retail_hours_closed'),
)
diff --git a/spec/services/displayable_pii_formatter_spec.rb b/spec/services/displayable_pii_formatter_spec.rb
index 7f87cf3aff6..b62885eaeb9 100644
--- a/spec/services/displayable_pii_formatter_spec.rb
+++ b/spec/services/displayable_pii_formatter_spec.rb
@@ -185,7 +185,7 @@
context 'with a non-English locale' do
before { I18n.locale = :es }
it 'returns a localized, formatted birthdate' do
- expect(formatter.format.birthdate).to eq('1 de enero de 1990')
+ expect(formatter.format.birthdate).to eq('enero 1, 1990')
end
end
end
From 56d24f957a1151888619144803d4abb0a9e5923f Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Thu, 2 May 2024 16:42:48 -0400
Subject: [PATCH 11/22] Update RSpec to 3.13 (#10550)
changelog: Internal, Dependencies, Update dependencies to latest versions
---
Gemfile | 2 +-
Gemfile.lock | 26 +++++++++++++-------------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/Gemfile b/Gemfile
index 765860ffcfc..4bfc01fa764 100644
--- a/Gemfile
+++ b/Gemfile
@@ -110,7 +110,7 @@ group :development, :test do
gem 'pry-doc'
gem 'pry-rails'
gem 'psych'
- gem 'rspec', '~> 3.12.0'
+ gem 'rspec', '~> 3.13.0'
gem 'rspec-rails', '~> 6.0'
gem 'rubocop', '~> 1.62.0', require: false
gem 'rubocop-performance', '~> 1.20.2', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 41507c34328..d996adfd78c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -293,7 +293,7 @@ GEM
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
- diff-lcs (1.5.0)
+ diff-lcs (1.5.1)
docile (1.4.0)
dotiw (5.3.2)
activesupport
@@ -578,18 +578,18 @@ GEM
chunky_png (~> 1.0)
rqrcode_core (~> 1.0)
rqrcode_core (1.2.0)
- rspec (3.12.0)
- rspec-core (~> 3.12.0)
- rspec-expectations (~> 3.12.0)
- rspec-mocks (~> 3.12.0)
- rspec-core (3.12.2)
- rspec-support (~> 3.12.0)
- rspec-expectations (3.12.3)
+ rspec (3.13.0)
+ rspec-core (~> 3.13.0)
+ rspec-expectations (~> 3.13.0)
+ rspec-mocks (~> 3.13.0)
+ rspec-core (3.13.0)
+ rspec-support (~> 3.13.0)
+ rspec-expectations (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.12.0)
- rspec-mocks (3.12.6)
+ rspec-support (~> 3.13.0)
+ rspec-mocks (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.12.0)
+ rspec-support (~> 3.13.0)
rspec-rails (6.0.3)
actionpack (>= 6.1)
activesupport (>= 6.1)
@@ -600,7 +600,7 @@ GEM
rspec-support (~> 3.12)
rspec-retry (0.6.2)
rspec-core (> 3.3)
- rspec-support (3.12.1)
+ rspec-support (3.13.1)
rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
rubocop (1.62.1)
@@ -827,7 +827,7 @@ DEPENDENCIES
retries
rotp (~> 6.3, >= 6.3.0)
rqrcode
- rspec (~> 3.12.0)
+ rspec (~> 3.13.0)
rspec-rails (~> 6.0)
rspec-retry
rspec_junit_formatter
From 6eed24a7cc2946d4d6537e09ed339866974d76cd Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Thu, 2 May 2024 16:44:09 -0400
Subject: [PATCH 12/22] Drop unused bounced_at column from GpoConfirmationCode
(#10551)
changelog: Internal, Database, Drop unused column
---
app/models/gpo_confirmation_code.rb | 2 --
...0_drop_bounced_at_column_from_usps_confirmation_code.rb | 7 +++++++
db/schema.rb | 3 +--
3 files changed, 8 insertions(+), 4 deletions(-)
create mode 100644 db/primary_migrate/20240502192930_drop_bounced_at_column_from_usps_confirmation_code.rb
diff --git a/app/models/gpo_confirmation_code.rb b/app/models/gpo_confirmation_code.rb
index a986d76b4c8..aba20791765 100644
--- a/app/models/gpo_confirmation_code.rb
+++ b/app/models/gpo_confirmation_code.rb
@@ -1,8 +1,6 @@
# frozen_string_literal: true
class GpoConfirmationCode < ApplicationRecord
- self.ignored_columns = [:bounced_at]
-
self.table_name = 'usps_confirmation_codes'
belongs_to :profile
diff --git a/db/primary_migrate/20240502192930_drop_bounced_at_column_from_usps_confirmation_code.rb b/db/primary_migrate/20240502192930_drop_bounced_at_column_from_usps_confirmation_code.rb
new file mode 100644
index 00000000000..422d9b60947
--- /dev/null
+++ b/db/primary_migrate/20240502192930_drop_bounced_at_column_from_usps_confirmation_code.rb
@@ -0,0 +1,7 @@
+class DropBouncedAtColumnFromUspsConfirmationCode < ActiveRecord::Migration[7.1]
+ def change
+ safety_assured do
+ remove_column :usps_confirmation_codes, :bounced_at, :datetime, precision: nil
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 1d142d4d84b..4dce387db66 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.1].define(version: 2024_04_16_165602) do
+ActiveRecord::Schema[7.1].define(version: 2024_05_02_192930) do
# These are extensions that must be enabled in order to support this database
enable_extension "citext"
enable_extension "pg_stat_statements"
@@ -627,7 +627,6 @@
t.datetime "code_sent_at", precision: nil, default: -> { "CURRENT_TIMESTAMP" }, null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
- t.datetime "bounced_at", precision: nil
t.datetime "reminder_sent_at", precision: nil
t.index ["otp_fingerprint"], name: "index_usps_confirmation_codes_on_otp_fingerprint"
t.index ["profile_id"], name: "index_usps_confirmation_codes_on_profile_id"
From 8795b4e871f4188ec1d813afe54ec3fb7f0c7f47 Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Thu, 2 May 2024 16:50:25 -0400
Subject: [PATCH 13/22] Configure reCAPTCHA score threshold for local
development (#10543)
changelog: Internal, reCAPTCHA, Configure reCAPTCHA score threshold for local development
---
config/application.yml.default | 1 +
1 file changed, 1 insertion(+)
diff --git a/config/application.yml.default b/config/application.yml.default
index 417085b30f6..dcdbf572266 100644
--- a/config/application.yml.default
+++ b/config/application.yml.default
@@ -417,6 +417,7 @@ development:
newrelic_license_key: ''
otp_delivery_blocklist_findtime: 5
password_pepper: f22d4b2cafac9066fe2f4416f5b7a32c
+ phone_recaptcha_score_threshold: 0.5
piv_cac_verify_token_secret: ee7f20f44cdc2ba0c6830f70470d1d1d059e1279cdb58134db92b35947b1528ef5525ece5910cf4f2321ab989a618feea12ef95711dbc62b9601e8520a34ee12
push_notifications_enabled: true
rails_mailer_previews_enabled: true
From dc7ea61e55f212cc82838b552be105bd58530ecc Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Thu, 2 May 2024 16:51:14 -0400
Subject: [PATCH 14/22] Move, rename reCAPTCHA validator as form (#10549)
* Move, rename reCAPTCHA validator as form
changelog: Internal, reCAPTCHA, Refactor reCAPTCHA validator as form model
* Update more validator references
* Disambiguate form variable name
---
app/forms/new_phone_form.rb | 14 ++---
.../phone_recaptcha_form.rb} | 18 +++---
.../recaptcha_enterprise_form.rb} | 2 +-
.../recaptcha_form.rb} | 4 +-
.../recaptcha_mock_form.rb} | 2 +-
app/services/analytics_events.rb | 6 +-
app/views/users/phone_setup/index.html.erb | 2 +-
knapsack_rspec_report.json | 4 +-
spec/forms/new_phone_form_spec.rb | 16 ++---
.../phone_recaptcha_form_spec.rb} | 58 +++++++++----------
.../recaptcha_enterprise_form_spec.rb} | 22 +++----
.../recaptcha_form_spec.rb} | 30 +++++-----
.../recaptcha_mock_form_spec.rb} | 12 ++--
13 files changed, 95 insertions(+), 95 deletions(-)
rename app/{services/phone_recaptcha_validator.rb => forms/phone_recaptcha_form.rb} (65%)
rename app/{services/recaptcha_enterprise_validator.rb => forms/recaptcha_enterprise_form.rb} (96%)
rename app/{services/recaptcha_validator.rb => forms/recaptcha_form.rb} (98%)
rename app/{services/recaptcha_mock_validator.rb => forms/recaptcha_mock_form.rb} (81%)
rename spec/{services/phone_recaptcha_validator_spec.rb => forms/phone_recaptcha_form_spec.rb} (61%)
rename spec/{services/recaptcha_enterprise_validator_spec.rb => forms/recaptcha_enterprise_form_spec.rb} (93%)
rename spec/{services/recaptcha_validator_spec.rb => forms/recaptcha_form_spec.rb} (90%)
rename spec/{services/recaptcha_mock_validator_spec.rb => forms/recaptcha_mock_form_spec.rb} (85%)
diff --git a/app/forms/new_phone_form.rb b/app/forms/new_phone_form.rb
index 62c6aa03f10..01944cadcfc 100644
--- a/app/forms/new_phone_form.rb
+++ b/app/forms/new_phone_form.rb
@@ -131,20 +131,20 @@ def validate_not_premium_rate
def validate_recaptcha_token
return if !validate_recaptcha_token?
- recaptcha_validator.submit(recaptcha_token)
- errors.merge!(recaptcha_validator)
+ recaptcha_form.submit(recaptcha_token)
+ errors.merge!(recaptcha_form)
end
- def recaptcha_validator
- @recaptcha_validator ||= PhoneRecaptchaValidator.new(parsed_phone:, **recaptcha_validator_args)
+ def recaptcha_form
+ @recaptcha_form ||= PhoneRecaptchaForm.new(parsed_phone:, **recaptcha_form_args)
end
- def recaptcha_validator_args
+ def recaptcha_form_args
args = { analytics: }
if IdentityConfig.store.phone_recaptcha_mock_validator
- args.merge(validator_class: RecaptchaMockValidator, score: recaptcha_mock_score)
+ args.merge(form_class: RecaptchaMockForm, score: recaptcha_mock_score)
elsif FeatureManagement.recaptcha_enterprise?
- args.merge(validator_class: RecaptchaEnterpriseValidator)
+ args.merge(form_class: RecaptchaEnterpriseForm)
else
args
end
diff --git a/app/services/phone_recaptcha_validator.rb b/app/forms/phone_recaptcha_form.rb
similarity index 65%
rename from app/services/phone_recaptcha_validator.rb
rename to app/forms/phone_recaptcha_form.rb
index 2878b1265d6..58c7206b8ab 100644
--- a/app/services/phone_recaptcha_validator.rb
+++ b/app/forms/phone_recaptcha_form.rb
@@ -1,16 +1,16 @@
# frozen_string_literal: true
-class PhoneRecaptchaValidator
+class PhoneRecaptchaForm
RECAPTCHA_ACTION = 'phone_setup'
- attr_reader :parsed_phone, :validator_class, :validator_args
+ attr_reader :parsed_phone, :form_class, :form_args
- delegate :submit, :errors, to: :validator
+ delegate :submit, :errors, to: :form
- def initialize(parsed_phone:, validator_class: RecaptchaValidator, **validator_args)
+ def initialize(parsed_phone:, form_class: RecaptchaForm, **form_args)
@parsed_phone = parsed_phone
- @validator_class = validator_class
- @validator_args = validator_args
+ @form_class = form_class
+ @form_args = form_args
end
def self.country_score_overrides
@@ -23,14 +23,14 @@ def score_threshold
private
- def validator
- @validator ||= validator_class.new(
+ def form
+ @form ||= form_class.new(
score_threshold:,
recaptcha_action: RECAPTCHA_ACTION,
extra_analytics_properties: {
phone_country_code: parsed_phone.country,
},
- **validator_args,
+ **form_args,
)
end
diff --git a/app/services/recaptcha_enterprise_validator.rb b/app/forms/recaptcha_enterprise_form.rb
similarity index 96%
rename from app/services/recaptcha_enterprise_validator.rb
rename to app/forms/recaptcha_enterprise_form.rb
index 5ab494efb94..b3439341c67 100644
--- a/app/services/recaptcha_enterprise_validator.rb
+++ b/app/forms/recaptcha_enterprise_form.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-class RecaptchaEnterpriseValidator < RecaptchaValidator
+class RecaptchaEnterpriseForm < RecaptchaForm
BASE_VERIFICATION_ENDPOINT = 'https://recaptchaenterprise.googleapis.com/v1/projects'
private
diff --git a/app/services/recaptcha_validator.rb b/app/forms/recaptcha_form.rb
similarity index 98%
rename from app/services/recaptcha_validator.rb
rename to app/forms/recaptcha_form.rb
index 6f1a0c8a91e..7254961c663 100644
--- a/app/services/recaptcha_validator.rb
+++ b/app/forms/recaptcha_form.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-class RecaptchaValidator
+class RecaptchaForm
include ActiveModel::Model
include ActionView::Helpers::TranslationHelper
@@ -103,7 +103,7 @@ def log_analytics(result: nil, error: nil)
score_threshold:,
evaluated_as_valid: recaptcha_result_valid?(result),
exception_class: error&.class&.name,
- validator_class: self.class.name,
+ form_class: self.class.name,
**extra_analytics_properties,
)
end
diff --git a/app/services/recaptcha_mock_validator.rb b/app/forms/recaptcha_mock_form.rb
similarity index 81%
rename from app/services/recaptcha_mock_validator.rb
rename to app/forms/recaptcha_mock_form.rb
index eedc7c156c7..c4cded23c8e 100644
--- a/app/services/recaptcha_mock_validator.rb
+++ b/app/forms/recaptcha_mock_form.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-class RecaptchaMockValidator < RecaptchaValidator
+class RecaptchaMockForm < RecaptchaForm
attr_reader :score
def initialize(score:, **kwargs)
diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb
index f8a2a05252f..7ac91a2a4fb 100644
--- a/app/services/analytics_events.rb
+++ b/app/services/analytics_events.rb
@@ -4639,14 +4639,14 @@ def reactivate_account_visit
# @param [Hash] recaptcha_result Full reCAPTCHA response body
# @param [Float] score_threshold Minimum value for considering passing result
# @param [Boolean] evaluated_as_valid Whether result was considered valid
- # @param [String] validator_class Class name of validator
+ # @param [String] form_class Class name of form
# @param [String, nil] exception_class Class name of exception, if error occurred
# @param [String, nil] phone_country_code Country code associated with reCAPTCHA phone result
def recaptcha_verify_result_received(
recaptcha_result:,
score_threshold:,
evaluated_as_valid:,
- validator_class:,
+ form_class:,
exception_class:,
phone_country_code: nil,
**extra
@@ -4657,7 +4657,7 @@ def recaptcha_verify_result_received(
recaptcha_result:,
score_threshold:,
evaluated_as_valid:,
- validator_class:,
+ form_class:,
exception_class:,
phone_country_code:,
**extra,
diff --git a/app/views/users/phone_setup/index.html.erb b/app/views/users/phone_setup/index.html.erb
index f4f1fa3aabd..321e6f3307d 100644
--- a/app/views/users/phone_setup/index.html.erb
+++ b/app/views/users/phone_setup/index.html.erb
@@ -37,7 +37,7 @@
<%= render CaptchaSubmitButtonComponent.new(
form: f,
- action: PhoneRecaptchaValidator::RECAPTCHA_ACTION,
+ action: PhoneRecaptchaForm::RECAPTCHA_ACTION,
).with_content(t('forms.buttons.send_one_time_code')) %>
<% end %>
diff --git a/knapsack_rspec_report.json b/knapsack_rspec_report.json
index 6d0cc329492..70bf552a2c9 100644
--- a/knapsack_rspec_report.json
+++ b/knapsack_rspec_report.json
@@ -783,7 +783,7 @@
"spec/services/personal_key_generator_spec.rb": 0.320518645,
"spec/services/phone_formatter_spec.rb": 0.030768014,
"spec/services/phone_number_capabilities_spec.rb": 0.104795072,
- "spec/services/phone_recaptcha_validator_spec.rb": 0.065012571,
+ "spec/services/phone_recaptcha_form_spec.rb": 0.065012571,
"spec/services/pii/attributes_spec.rb": 0.026663207,
"spec/services/pii/cacher_spec.rb": 0.328829647,
"spec/services/pii/fingerprinter_spec.rb": 0.026187948,
@@ -840,7 +840,7 @@
"spec/services/reactivate_account_session_spec.rb": 0.486191592,
"spec/services/recaptcha_enterprise_validator_spec.rb": 0.184840574,
"spec/services/recaptcha_mock_validator_spec.rb": 0.031384338,
- "spec/services/recaptcha_validator_spec.rb": 0.207950607,
+ "spec/services/recaptcha_form_spec.rb": 0.207950607,
"spec/services/redis_rate_limiter_spec.rb": 0.045844488,
"spec/services/remember_device_cookie_spec.rb": 0.144756036,
"spec/services/reporting/account_deletion_rate_report_spec.rb": 0.287856172,
diff --git a/spec/forms/new_phone_form_spec.rb b/spec/forms/new_phone_form_spec.rb
index e6fdbde9596..a27a231bd74 100644
--- a/spec/forms/new_phone_form_spec.rb
+++ b/spec/forms/new_phone_form_spec.rb
@@ -374,8 +374,8 @@
end
context 'with recaptcha enabled' do
- let(:errors) { ActiveModel::Errors.new(RecaptchaValidator.new) }
- let(:validator) { PhoneRecaptchaValidator.new(parsed_phone: nil) }
+ let(:errors) { ActiveModel::Errors.new(RecaptchaForm.new) }
+ let(:recaptcha_form) { PhoneRecaptchaForm.new(parsed_phone: nil) }
let(:recaptcha_token) { 'token' }
let(:phone) { '3065550100' }
let(:international_code) { 'CA' }
@@ -385,9 +385,9 @@
before do
allow(FeatureManagement).to receive(:phone_recaptcha_enabled?).and_return(true)
- allow(validator).to receive(:submit).with(recaptcha_token)
- allow(validator).to receive(:errors).and_return(errors)
- allow(form).to receive(:recaptcha_validator).and_return(validator)
+ allow(recaptcha_form).to receive(:submit).with(recaptcha_token)
+ allow(recaptcha_form).to receive(:errors).and_return(errors)
+ allow(form).to receive(:recaptcha_form).and_return(recaptcha_form)
end
context 'with valid recaptcha result' do
@@ -397,9 +397,9 @@
end
context 'with recaptcha enterprise' do
- let(:validator) do
- PhoneRecaptchaValidator.new(
- validator_class: RecaptchaEnterpriseValidator,
+ let(:recaptcha_form) do
+ PhoneRecaptchaForm.new(
+ form_class: RecaptchaEnterpriseForm,
parsed_phone: nil,
)
end
diff --git a/spec/services/phone_recaptcha_validator_spec.rb b/spec/forms/phone_recaptcha_form_spec.rb
similarity index 61%
rename from spec/services/phone_recaptcha_validator_spec.rb
rename to spec/forms/phone_recaptcha_form_spec.rb
index 01b34ef3b2b..6ab1d72f91b 100644
--- a/spec/services/phone_recaptcha_validator_spec.rb
+++ b/spec/forms/phone_recaptcha_form_spec.rb
@@ -1,11 +1,11 @@
require 'rails_helper'
-RSpec.describe PhoneRecaptchaValidator do
+RSpec.describe PhoneRecaptchaForm do
let(:country_score_overrides_config) { {} }
let(:score_threshold_config) { 0.2 }
let(:parsed_phone) { Phonelib.parse('+15135551234') }
let(:analytics) { FakeAnalytics.new }
- subject(:validator) { described_class.new(parsed_phone:, analytics:) }
+ subject(:form) { described_class.new(parsed_phone:, analytics:) }
before do
allow(IdentityConfig.store).to receive(:phone_recaptcha_country_score_overrides).
and_return(country_score_overrides_config)
@@ -13,12 +13,12 @@
and_return(score_threshold_config)
end
- it 'passes instance variables to validator' do
- recaptcha_validator = instance_double(
- RecaptchaValidator,
+ it 'passes instance variables to form' do
+ recaptcha_form = instance_double(
+ RecaptchaForm,
submit: FormResponse.new(success: true),
)
- expect(RecaptchaValidator).to receive(:new).
+ expect(RecaptchaForm).to receive(:new).
with(
score_threshold: score_threshold_config,
analytics:,
@@ -27,52 +27,52 @@
phone_country_code: parsed_phone.country,
},
).
- and_return(recaptcha_validator)
+ and_return(recaptcha_form)
- validator.submit('token')
+ form.submit('token')
end
- context 'with custom recaptcha validator class' do
- subject(:validator) do
+ context 'with custom recaptcha form class' do
+ subject(:form) do
described_class.new(
parsed_phone:,
analytics:,
- validator_class: RecaptchaMockValidator,
+ form_class: RecaptchaMockForm,
)
end
- it 'delegates to validator instance of the given class' do
- recaptcha_validator = instance_double(
- RecaptchaValidator,
+ it 'delegates to form instance of the given class' do
+ recaptcha_form = instance_double(
+ RecaptchaForm,
submit: FormResponse.new(success: true),
)
- expect(RecaptchaMockValidator).to receive(:new).and_return(recaptcha_validator)
- expect(recaptcha_validator).to receive(:submit)
+ expect(RecaptchaMockForm).to receive(:new).and_return(recaptcha_form)
+ expect(recaptcha_form).to receive(:submit)
- validator.submit('token')
+ form.submit('token')
end
end
describe '#submit' do
- it 'is delegated to recaptcha validator' do
- recaptcha_validator = instance_double(
- RecaptchaValidator,
+ it 'is delegated to recaptcha form' do
+ recaptcha_form = instance_double(
+ RecaptchaForm,
submit: FormResponse.new(success: true),
)
- expect(validator).to receive(:validator).and_return(recaptcha_validator)
- expect(recaptcha_validator).to receive(:submit)
+ expect(form).to receive(:form).and_return(recaptcha_form)
+ expect(recaptcha_form).to receive(:submit)
- validator.submit('token')
+ form.submit('token')
end
end
describe '#errors' do
- it 'is delegated to recaptcha validator' do
- recaptcha_validator = instance_double(RecaptchaValidator, errors: ActiveModel::Errors.new({}))
- expect(validator).to receive(:validator).and_return(recaptcha_validator)
- expect(recaptcha_validator).to receive(:errors)
+ it 'is delegated to recaptcha form' do
+ recaptcha_form = instance_double(RecaptchaForm, errors: ActiveModel::Errors.new({}))
+ expect(form).to receive(:form).and_return(recaptcha_form)
+ expect(recaptcha_form).to receive(:errors)
- validator.errors
+ form.errors
end
end
@@ -85,7 +85,7 @@
end
describe '#score_threshold' do
- subject(:score_threshold) { validator.score_threshold }
+ subject(:score_threshold) { form.score_threshold }
context 'without country override' do
it 'returns default score threshold configuration value' do
diff --git a/spec/services/recaptcha_enterprise_validator_spec.rb b/spec/forms/recaptcha_enterprise_form_spec.rb
similarity index 93%
rename from spec/services/recaptcha_enterprise_validator_spec.rb
rename to spec/forms/recaptcha_enterprise_form_spec.rb
index 2bcd247e5b6..0d134fa2c66 100644
--- a/spec/services/recaptcha_enterprise_validator_spec.rb
+++ b/spec/forms/recaptcha_enterprise_form_spec.rb
@@ -1,6 +1,6 @@
require 'rails_helper'
-RSpec.describe RecaptchaEnterpriseValidator do
+RSpec.describe RecaptchaEnterpriseForm do
let(:score_threshold) { 0.2 }
let(:analytics) { FakeAnalytics.new }
let(:extra_analytics_properties) { {} }
@@ -17,7 +17,7 @@
)
end
- subject(:validator) do
+ subject(:form) do
described_class.new(
recaptcha_action: action,
score_threshold:,
@@ -36,7 +36,7 @@
end
describe '#exempt?' do
- subject(:exempt) { validator.exempt? }
+ subject(:exempt) { form.exempt? }
context 'with initialized score threshold of 0' do
let(:score_threshold) { 0.0 }
@@ -53,11 +53,11 @@
describe '#submit' do
let(:token) { nil }
- subject(:response) { validator.submit(token) }
+ subject(:response) { form.submit(token) }
context 'with exemption' do
before do
- allow(validator).to receive(:exempt?).and_return(true)
+ allow(form).to receive(:exempt?).and_return(true)
end
it 'is successful' do
@@ -139,7 +139,7 @@
},
evaluated_as_valid: false,
score_threshold: score_threshold,
- validator_class: 'RecaptchaEnterpriseValidator',
+ form_class: 'RecaptchaEnterpriseForm',
)
end
end
@@ -174,7 +174,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaEnterpriseValidator',
+ form_class: 'RecaptchaEnterpriseForm',
)
end
end
@@ -197,7 +197,7 @@
'reCAPTCHA verify result received',
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaEnterpriseValidator',
+ form_class: 'RecaptchaEnterpriseForm',
exception_class: 'Faraday::ConnectionFailed',
)
end
@@ -239,7 +239,7 @@
},
evaluated_as_valid: false,
score_threshold: score_threshold,
- validator_class: 'RecaptchaEnterpriseValidator',
+ form_class: 'RecaptchaEnterpriseForm',
)
end
end
@@ -279,7 +279,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaEnterpriseValidator',
+ form_class: 'RecaptchaEnterpriseForm',
)
end
@@ -320,7 +320,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaEnterpriseValidator',
+ form_class: 'RecaptchaEnterpriseForm',
extra: true,
)
end
diff --git a/spec/services/recaptcha_validator_spec.rb b/spec/forms/recaptcha_form_spec.rb
similarity index 90%
rename from spec/services/recaptcha_validator_spec.rb
rename to spec/forms/recaptcha_form_spec.rb
index 2b433756c00..7b5d1245247 100644
--- a/spec/services/recaptcha_validator_spec.rb
+++ b/spec/forms/recaptcha_form_spec.rb
@@ -1,13 +1,13 @@
require 'rails_helper'
-RSpec.describe RecaptchaValidator do
+RSpec.describe RecaptchaForm do
let(:score_threshold) { 0.2 }
let(:analytics) { FakeAnalytics.new }
let(:extra_analytics_properties) { {} }
let(:recaptcha_secret_key) { 'recaptcha_secret_key' }
- subject(:validator) do
- RecaptchaValidator.new(score_threshold:, analytics:, extra_analytics_properties:)
+ subject(:form) do
+ RecaptchaForm.new(score_threshold:, analytics:, extra_analytics_properties:)
end
before do
@@ -16,7 +16,7 @@
end
describe '#exempt?' do
- subject(:exempt) { validator.exempt? }
+ subject(:exempt) { form.exempt? }
context 'with initialized score threshold of 0' do
let(:score_threshold) { 0.0 }
@@ -33,11 +33,11 @@
describe '#submit' do
let(:token) { nil }
- subject(:response) { validator.submit(token) }
+ subject(:response) { form.submit(token) }
context 'with exemption' do
before do
- allow(validator).to receive(:exempt?).and_return(true)
+ allow(form).to receive(:exempt?).and_return(true)
end
it 'is successful' do
@@ -115,7 +115,7 @@
},
evaluated_as_valid: false,
score_threshold: score_threshold,
- validator_class: 'RecaptchaValidator',
+ form_class: 'RecaptchaForm',
)
end
@@ -145,7 +145,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaValidator',
+ form_class: 'RecaptchaForm',
)
end
end
@@ -175,7 +175,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaValidator',
+ form_class: 'RecaptchaForm',
)
end
end
@@ -186,7 +186,7 @@
let(:token) { 'token' }
before do
- stub_request(:post, RecaptchaValidator::VERIFICATION_ENDPOINT).to_timeout
+ stub_request(:post, RecaptchaForm::VERIFICATION_ENDPOINT).to_timeout
end
it 'is successful' do
@@ -200,7 +200,7 @@
'reCAPTCHA verify result received',
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaValidator',
+ form_class: 'RecaptchaForm',
exception_class: 'Faraday::ConnectionFailed',
)
end
@@ -234,7 +234,7 @@
},
evaluated_as_valid: false,
score_threshold: score_threshold,
- validator_class: 'RecaptchaValidator',
+ form_class: 'RecaptchaForm',
)
end
end
@@ -266,7 +266,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaValidator',
+ form_class: 'RecaptchaForm',
)
end
@@ -286,7 +286,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaValidator',
+ form_class: 'RecaptchaForm',
extra: true,
)
end
@@ -303,7 +303,7 @@
end
def stub_recaptcha_response(body:, secret: recaptcha_secret_key, token: nil)
- stub_request(:post, RecaptchaValidator::VERIFICATION_ENDPOINT).
+ stub_request(:post, RecaptchaForm::VERIFICATION_ENDPOINT).
with { |req| req.body == URI.encode_www_form(secret:, response: token) }.
to_return(headers: { 'Content-Type': 'application/json' }, body: body.to_json)
end
diff --git a/spec/services/recaptcha_mock_validator_spec.rb b/spec/forms/recaptcha_mock_form_spec.rb
similarity index 85%
rename from spec/services/recaptcha_mock_validator_spec.rb
rename to spec/forms/recaptcha_mock_form_spec.rb
index 7e81436972e..4fc249809f7 100644
--- a/spec/services/recaptcha_mock_validator_spec.rb
+++ b/spec/forms/recaptcha_mock_form_spec.rb
@@ -1,11 +1,11 @@
require 'rails_helper'
-RSpec.describe RecaptchaMockValidator do
+RSpec.describe RecaptchaMockForm do
let(:score_threshold) { 0.2 }
let(:analytics) { FakeAnalytics.new }
let(:score) { nil }
- subject(:validator) do
- RecaptchaMockValidator.new(score_threshold:, analytics:, score:)
+ subject(:form) do
+ RecaptchaMockForm.new(score_threshold:, analytics:, score:)
end
around do |example|
@@ -14,7 +14,7 @@
describe '#submit' do
let(:token) { 'token' }
- subject(:response) { validator.submit(token) }
+ subject(:response) { form.submit(token) }
context 'with failing score from validation service' do
let(:score) { score_threshold - 0.1 }
@@ -39,7 +39,7 @@
},
evaluated_as_valid: false,
score_threshold: score_threshold,
- validator_class: 'RecaptchaMockValidator',
+ form_class: 'RecaptchaMockForm',
)
end
end
@@ -65,7 +65,7 @@
},
evaluated_as_valid: true,
score_threshold: score_threshold,
- validator_class: 'RecaptchaMockValidator',
+ form_class: 'RecaptchaMockForm',
)
end
From c8106fc4e43548929839b5200fd02c62adf5be11 Mon Sep 17 00:00:00 2001
From: Stephen Shelton
Date: Fri, 3 May 2024 10:45:47 -0400
Subject: [PATCH 15/22] changelog: Internal, CI, Fix typo in .gitlab-ci.yml for
pivcac address (#10547)
---
.gitlab-ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 73c18fb3a43..184b2585c8f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -494,7 +494,7 @@ trigger_devops:
- echo "Address of IDP review app:"
- echo https://$CI_ENVIRONMENT_SLUG.review-app.identitysandbox.gov
- echo "Address of PIVCAC review app:"
- - echo https://$CI_ENVIRONMENT_SLUG-review-app.pivcac.identitysandbox.gov
+ - echo https://$CI_ENVIRONMENT_SLUG.review-app.pivcac.identitysandbox.gov
- echo "Address of Dashboard review app:"
- echo https://$CI_ENVIRONMENT_SLUG-review-app-dashboard.review-app.identitysandbox.gov
From 02d7edf654154cf6263bdfd55af359d3a3ce3b34 Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Fri, 3 May 2024 14:22:31 -0400
Subject: [PATCH 16/22] Fix typo "limitting" :arrow_right: "limiting" (#10554)
changelog: Internal, Code Quality, Fix typos in code naming
---
knapsack_rspec_report.json | 2 +-
.../{rate_limitting_spec.rb => rate_limiting_spec.rb} | 10 +++++-----
.../phone/{rate_limitting.rb => rate_limiting.rb} | 10 +++++-----
3 files changed, 11 insertions(+), 11 deletions(-)
rename spec/features/phone/{rate_limitting_spec.rb => rate_limiting_spec.rb} (73%)
rename spec/support/shared_examples/phone/{rate_limitting.rb => rate_limiting.rb} (94%)
diff --git a/knapsack_rspec_report.json b/knapsack_rspec_report.json
index 70bf552a2c9..8529cfd2993 100644
--- a/knapsack_rspec_report.json
+++ b/knapsack_rspec_report.json
@@ -297,7 +297,7 @@
"spec/features/phone/confirmation_spec.rb": 202.880041808,
"spec/features/phone/default_phone_selection_spec.rb": 33.68962708,
"spec/features/phone/edit_phone_spec.rb": 21.15221282,
- "spec/features/phone/rate_limitting_spec.rb": 93.738608051,
+ "spec/features/phone/rate_limiting_spec.rb": 93.738608051,
"spec/features/phone/remove_phone_spec.rb": 12.755412848,
"spec/features/remember_device/cookie_expiration_spec.rb": 6.613393484,
"spec/features/remember_device/phone_spec.rb": 58.912246182000004,
diff --git a/spec/features/phone/rate_limitting_spec.rb b/spec/features/phone/rate_limiting_spec.rb
similarity index 73%
rename from spec/features/phone/rate_limitting_spec.rb
rename to spec/features/phone/rate_limiting_spec.rb
index cd98c6007e1..36e82855d2a 100644
--- a/spec/features/phone/rate_limitting_spec.rb
+++ b/spec/features/phone/rate_limiting_spec.rb
@@ -1,13 +1,13 @@
require 'rails_helper'
-RSpec.describe 'phone rate limitting', allowed_extra_analytics: [:*] do
+RSpec.describe 'phone rate limiting', allowed_extra_analytics: [:*] do
let(:phone) { '2025551234' }
context 'on sign up' do
let!(:user) { sign_up_and_set_password }
- it_behaves_like 'phone rate limitting', :sms
- it_behaves_like 'phone rate limitting', :voice
+ it_behaves_like 'phone rate limiting', :sms
+ it_behaves_like 'phone rate limiting', :voice
def visit_otp_confirmation(delivery_method)
select_2fa_option(:phone)
@@ -20,8 +20,8 @@ def visit_otp_confirmation(delivery_method)
context 'on add phone' do
let(:user) { create(:user, :fully_registered) }
- it_behaves_like 'phone rate limitting', :sms
- it_behaves_like 'phone rate limitting', :voice
+ it_behaves_like 'phone rate limiting', :sms
+ it_behaves_like 'phone rate limiting', :voice
def visit_otp_confirmation(delivery_method)
sign_in_live_with_2fa(user)
diff --git a/spec/support/shared_examples/phone/rate_limitting.rb b/spec/support/shared_examples/phone/rate_limiting.rb
similarity index 94%
rename from spec/support/shared_examples/phone/rate_limitting.rb
rename to spec/support/shared_examples/phone/rate_limiting.rb
index 1a8e4099186..efe9f937e10 100644
--- a/spec/support/shared_examples/phone/rate_limitting.rb
+++ b/spec/support/shared_examples/phone/rate_limiting.rb
@@ -1,4 +1,4 @@
-RSpec.shared_examples 'phone rate limitting' do |delivery_method|
+RSpec.shared_examples 'phone rate limiting' do |delivery_method|
let(:max_confirmation_attempts) { 4 }
let(:max_otp_sends) { 2 }
let(:min_attempts) { 2 }
@@ -20,7 +20,7 @@
expect(page).to have_content(t('two_factor_authentication.max_otp_requests_reached'))
expect_user_to_be_rate_limitted
- expect_rate_limitting_to_expire
+ expect_rate_limiting_to_expire
end
it 'limits the number of times a code can be sent to a phone across accounts' do
@@ -40,7 +40,7 @@
expect(page).to have_content(t('two_factor_authentication.max_otp_requests_reached'))
expect_user_to_be_rate_limitted
- expect_rate_limitting_to_expire
+ expect_rate_limiting_to_expire
end
it 'limits the number of times the user can enter an OTP' do
@@ -78,7 +78,7 @@
expect(page).to have_content(t('two_factor_authentication.max_otp_login_attempts_reached'))
expect_user_to_be_rate_limitted
- expect_rate_limitting_to_expire
+ expect_rate_limiting_to_expire
end
def expect_user_to_be_rate_limitted
@@ -94,7 +94,7 @@ def expect_user_to_be_rate_limitted
expect(page).to have_content(t('two_factor_authentication.max_generic_login_attempts_reached'))
end
- def expect_rate_limitting_to_expire
+ def expect_rate_limiting_to_expire
travel (IdentityConfig.store.lockout_period_in_minutes + 1).minutes do
visit root_path
From df2a0415352432aa0a172bafb09009aff6ffa8bf Mon Sep 17 00:00:00 2001
From: Andrew Duthie <1779930+aduth@users.noreply.github.com>
Date: Fri, 3 May 2024 14:23:05 -0400
Subject: [PATCH 17/22] Remove unused method verification_method_choice
(#10553)
changelog: Internal, Code Quality, Remove unused method
---
app/decorators/null_service_provider_session.rb | 4 ----
app/decorators/service_provider_session.rb | 4 ----
config/locales/idv/en.yml | 4 ----
config/locales/idv/es.yml | 5 -----
config/locales/idv/fr.yml | 6 ------
config/locales/idv/zh.yml | 2 --
spec/decorators/null_service_provider_session_spec.rb | 8 --------
spec/decorators/service_provider_session_spec.rb | 8 --------
8 files changed, 41 deletions(-)
diff --git a/app/decorators/null_service_provider_session.rb b/app/decorators/null_service_provider_session.rb
index 716d3876754..74cae9b0b4a 100644
--- a/app/decorators/null_service_provider_session.rb
+++ b/app/decorators/null_service_provider_session.rb
@@ -9,10 +9,6 @@ def new_session_heading
I18n.t('headings.sign_in_without_sp')
end
- def verification_method_choice
- I18n.t('idv.messages.select_verification_without_sp')
- end
-
def cancel_link_url
view_context.root_url
end
diff --git a/app/decorators/service_provider_session.rb b/app/decorators/service_provider_session.rb
index 83c2d92490a..b1b70196278 100644
--- a/app/decorators/service_provider_session.rb
+++ b/app/decorators/service_provider_session.rb
@@ -52,10 +52,6 @@ def new_session_heading
I18n.t('headings.sign_in_with_sp', sp: sp_name)
end
- def verification_method_choice
- I18n.t('idv.messages.select_verification_with_sp', sp_name: sp_name)
- end
-
def requested_attributes
(sp_session[:requested_attributes] || service_provider_request.requested_attributes).sort
end
diff --git a/config/locales/idv/en.yml b/config/locales/idv/en.yml
index 7799db46fd4..0420df3ad6a 100644
--- a/config/locales/idv/en.yml
+++ b/config/locales/idv/en.yml
@@ -259,10 +259,6 @@ en:
- Based in the United States (including U.S. territories)
- Your primary number (the one you use the most often)
return_to_profile: '‹ Return to your %{app_name} profile'
- select_verification_with_sp: To protect you from identity fraud, we will contact
- you to confirm that this %{sp_name} account is legitimate.
- select_verification_without_sp: To protect you from identity fraud, we will
- contact you to confirm that this account is legitimate.
sessions:
enter_password_message: When you re-enter your password, %{app_name} will
protect the information you’ve given us, so that only you can access
diff --git a/config/locales/idv/es.yml b/config/locales/idv/es.yml
index b49c1284df2..a6fd71e1b60 100644
--- a/config/locales/idv/es.yml
+++ b/config/locales/idv/es.yml
@@ -272,11 +272,6 @@ es:
- Con base en Estados Unidos (incluidos los territorios de EE.UU.)
- Su número principal (el que utiliza con más frecuencia)
return_to_profile: '‹ Vuelva a su perfil de %{app_name}'
- select_verification_with_sp: Para protegerle contra el fraude de identidad,
- contactaremos con usted para confirmar que esta cuenta de %{sp_name} es
- legítima.
- select_verification_without_sp: Para protegerle contra el fraude de identidad,
- contactaremos con usted para confirmar que esta cuenta es legítima.
sessions:
enter_password_message: Cuando vuelva a ingresar su contraseña, %{app_name}
protegerá la información que nos dio, para que solo usted pueda
diff --git a/config/locales/idv/fr.yml b/config/locales/idv/fr.yml
index b3cb9a7bfe3..ab4e8a2887f 100644
--- a/config/locales/idv/fr.yml
+++ b/config/locales/idv/fr.yml
@@ -283,12 +283,6 @@ fr:
- Basé aux Etats-Unis (y compris les territoires américains)
- Votre numéro principal (celui que vous utilisez le plus souvent)
return_to_profile: '‹ Revenir à votre profil %{app_name}'
- select_verification_with_sp: Afin de vous protéger contre l’usurpation
- d’identité, nous vous contacterons pour confirmer que ce compte
- %{sp_name} est légitime.
- select_verification_without_sp: Afin de vous protéger contre l’usurpation
- d’identité, nous vous contacterons pour confirmer que ce compte est
- légitime.
sessions:
enter_password_message: Lorsque vous ressaisirez votre mot de passe, %{app_name}
protégera les informations que vous nous aurez données pour que vous
diff --git a/config/locales/idv/zh.yml b/config/locales/idv/zh.yml
index f97ab52ad66..24c9df3b1ff 100644
--- a/config/locales/idv/zh.yml
+++ b/config/locales/idv/zh.yml
@@ -211,8 +211,6 @@ zh:
- 美国的(包括美国属地)
- 你的主要号码(你最常用的)
return_to_profile: '‹ 返回你的 %{app_name} 用户资料'
- select_verification_with_sp: 为了保护你不受身份欺诈,我们会联系你确认该 %{sp_name} 账户是真实的。
- select_verification_without_sp: 为了保护你不受身份欺诈,我们会联系你确认该账户是真实的。
sessions:
enter_password_message: 你重新输入密码时, %{app_name} 会保护你给我们的信息,这样只有你能访问这些信息。
no_pii: 测试站点 - 请勿使用真实个人信息(仅为演示目的) - 测试站点
diff --git a/spec/decorators/null_service_provider_session_spec.rb b/spec/decorators/null_service_provider_session_spec.rb
index 55f373983fa..6c00ddc1fee 100644
--- a/spec/decorators/null_service_provider_session_spec.rb
+++ b/spec/decorators/null_service_provider_session_spec.rb
@@ -9,14 +9,6 @@
end
end
- describe '#verification_method_choice' do
- it 'returns the correct string' do
- expect(subject.verification_method_choice).to eq(
- I18n.t('idv.messages.select_verification_without_sp'),
- )
- end
- end
-
describe '#sp_logo' do
it 'returns nil' do
expect(subject.sp_logo).to be_nil
diff --git a/spec/decorators/service_provider_session_spec.rb b/spec/decorators/service_provider_session_spec.rb
index 8106348ce5b..027bf9509a8 100644
--- a/spec/decorators/service_provider_session_spec.rb
+++ b/spec/decorators/service_provider_session_spec.rb
@@ -35,14 +35,6 @@
end
end
- describe '#verification_method_choice' do
- it 'returns the correct string' do
- expect(subject.verification_method_choice).to eq(
- I18n.t('idv.messages.select_verification_with_sp', sp_name: sp_name),
- )
- end
- end
-
describe '#sp_alert' do
context 'sp has custom alert' do
it 'uses the custom template' do
From 5a27311ecd38ce41a273a6fd57633b98ee6c1cd7 Mon Sep 17 00:00:00 2001
From: Malick Diarra
Date: Mon, 6 May 2024 09:12:31 -0400
Subject: [PATCH 18/22] LG-12946: piv cac logging improvements (#10512)
* changelog: Internal, Logging, Adding dn uuid to logging dn configuration for easier cross pki logging
* include user uuid to query
* use key id
* update rspec so it accounts for key id
* update rspec and fix tests
* fix spec
* make sure to still send foo
* move setting up key id to when we decode token
* replace self
---
app/forms/concerns/piv_cac_form_helpers.rb | 3 +--
app/forms/user_piv_cac_setup_form.rb | 3 ++-
app/forms/user_piv_cac_verification_form.rb | 4 +++-
.../piv_cac_verification_controller_spec.rb | 11 ++++++++++-
spec/forms/user_piv_cac_login_form_spec.rb | 3 ++-
spec/forms/user_piv_cac_setup_form_spec.rb | 9 +++++----
spec/forms/user_piv_cac_verification_form_spec.rb | 15 ++++++++++++---
7 files changed, 35 insertions(+), 13 deletions(-)
diff --git a/app/forms/concerns/piv_cac_form_helpers.rb b/app/forms/concerns/piv_cac_form_helpers.rb
index 348d035cab0..f4b578b1805 100644
--- a/app/forms/concerns/piv_cac_form_helpers.rb
+++ b/app/forms/concerns/piv_cac_form_helpers.rb
@@ -13,6 +13,7 @@ def valid_token?
def token_decoded
@data = PivCacService.decode_token(token)
+ @key_id = @data['key_id']
true
end
@@ -20,7 +21,6 @@ def not_error_token
possible_error = @data['error']
if possible_error
self.error_type = possible_error
- self.key_id = @data['key_id']
false
else
self.x509_dn_uuid = @data['uuid']
@@ -35,7 +35,6 @@ def token_has_correct_nonce
true
else
self.error_type = 'token.invalid'
- self.key_id = @data['key_id']
false
end
end
diff --git a/app/forms/user_piv_cac_setup_form.rb b/app/forms/user_piv_cac_setup_form.rb
index e99b965c497..955996dcd35 100644
--- a/app/forms/user_piv_cac_setup_form.rb
+++ b/app/forms/user_piv_cac_setup_form.rb
@@ -21,7 +21,7 @@ def submit
FormResponse.new(
success: success && process_valid_submission,
errors: errors,
- extra: extra_analytics_attributes.merge(error_type ? { key_id: key_id } : {}),
+ extra: extra_analytics_attributes,
)
end
@@ -61,6 +61,7 @@ def piv_cac_not_already_associated
def extra_analytics_attributes
{
multi_factor_auth_method: 'piv_cac',
+ key_id: key_id,
}
end
diff --git a/app/forms/user_piv_cac_verification_form.rb b/app/forms/user_piv_cac_verification_form.rb
index d479f2c6e68..269353cb4f6 100644
--- a/app/forms/user_piv_cac_verification_form.rb
+++ b/app/forms/user_piv_cac_verification_form.rb
@@ -18,7 +18,7 @@ def submit
FormResponse.new(
success: success,
errors: errors,
- extra: extra_analytics_attributes.merge(error_type ? { key_id: key_id } : {}),
+ extra: extra_analytics_attributes,
)
end
@@ -57,6 +57,8 @@ def extra_analytics_attributes
{
multi_factor_auth_method: 'piv_cac',
piv_cac_configuration_id: piv_cac_configuration&.id,
+ piv_cac_configuration_dn_uuid: x509_dn_uuid,
+ key_id: key_id,
multi_factor_auth_method_created_at: piv_cac_configuration&.created_at&.strftime('%s%L'),
}
end
diff --git a/spec/controllers/two_factor_authentication/piv_cac_verification_controller_spec.rb b/spec/controllers/two_factor_authentication/piv_cac_verification_controller_spec.rb
index 6cf9579d712..520d84c26f3 100644
--- a/spec/controllers/two_factor_authentication/piv_cac_verification_controller_spec.rb
+++ b/spec/controllers/two_factor_authentication/piv_cac_verification_controller_spec.rb
@@ -25,24 +25,28 @@
'subject' => x509_subject,
'issuer' => x509_issuer,
'nonce' => nonce,
+ 'key_id' => 'foo',
)
allow(PivCacService).to receive(:decode_token).with('good-other-token').and_return(
'uuid' => user.piv_cac_configurations.first.x509_dn_uuid + 'X',
'subject' => x509_subject + 'X',
'issuer' => x509_issuer,
'nonce' => nonce,
+ 'key_id' => 'foo',
)
allow(PivCacService).to receive(:decode_token).with('bad-token').and_return(
'uuid' => 'bad-uuid',
'subject' => bad_dn,
'issuer' => x509_issuer,
'nonce' => nonce,
+ 'key_id' => 'foo',
)
allow(PivCacService).to receive(:decode_token).with('bad-nonce').and_return(
'uuid' => user.piv_cac_configurations.first.x509_dn_uuid,
'subject' => x509_subject,
'issuer' => x509_issuer,
'nonce' => 'bad-' + nonce,
+ 'key_id' => 'foo',
)
end
@@ -119,6 +123,8 @@
new_device: nil,
multi_factor_auth_method_created_at: cfg.created_at.strftime('%s%L'),
piv_cac_configuration_id: cfg.id,
+ piv_cac_configuration_dn_uuid: cfg.x509_dn_uuid,
+ key_id: 'foo',
}
expect(@analytics).to receive(:track_mfa_submit_event).
with(submit_attributes)
@@ -154,6 +160,8 @@
new_device: false,
multi_factor_auth_method_created_at: cfg.created_at.strftime('%s%L'),
piv_cac_configuration_id: cfg.id,
+ piv_cac_configuration_dn_uuid: cfg.x509_dn_uuid,
+ key_id: 'foo',
}
expect(@analytics).to receive(:track_mfa_submit_event).
with(submit_attributes)
@@ -264,7 +272,8 @@
multi_factor_auth_method: 'piv_cac',
multi_factor_auth_method_created_at: nil,
new_device: nil,
- key_id: nil,
+ key_id: 'foo',
+ piv_cac_configuration_dn_uuid: 'bad-uuid',
piv_cac_configuration_id: nil,
}
expect(@analytics).to receive(:track_mfa_submit_event).
diff --git a/spec/forms/user_piv_cac_login_form_spec.rb b/spec/forms/user_piv_cac_login_form_spec.rb
index 8c05c4e6e5d..22af2b9ac80 100644
--- a/spec/forms/user_piv_cac_login_form_spec.rb
+++ b/spec/forms/user_piv_cac_login_form_spec.rb
@@ -22,6 +22,7 @@
'uuid' => piv_cac_configuration.x509_dn_uuid,
'subject' => 'x509-subject',
'nonce' => nonce,
+ 'key_id' => 'foo',
}
end
@@ -30,7 +31,7 @@
expect(result.success?).to eq true
expect(result.errors).to eq({})
- expect(result.extra).to eq({ key_id: nil })
+ expect(result.extra).to eq({ key_id: 'foo' })
end
end
diff --git a/spec/forms/user_piv_cac_setup_form_spec.rb b/spec/forms/user_piv_cac_setup_form_spec.rb
index 9b2b0871162..41130f6ef03 100644
--- a/spec/forms/user_piv_cac_setup_form_spec.rb
+++ b/spec/forms/user_piv_cac_setup_form_spec.rb
@@ -20,12 +20,13 @@
'uuid' => x509_dn_uuid,
'subject' => 'x509-subject',
'nonce' => nonce,
+ 'key_id' => 'foo',
}
end
it 'returns FormResponse with success: true' do
result = instance_double(FormResponse)
- extra = { multi_factor_auth_method: 'piv_cac' }
+ extra = { multi_factor_auth_method: 'piv_cac', key_id: 'foo' }
expect(FormResponse).to receive(:new).
with(success: true, errors: {}, extra: extra).and_return(result)
@@ -47,7 +48,7 @@
it 'returns FormResponse with success: true' do
result = instance_double(FormResponse)
- extra = { multi_factor_auth_method: 'piv_cac' }
+ extra = { multi_factor_auth_method: 'piv_cac', key_id: 'foo' }
expect(FormResponse).to receive(:new).
with(success: true, errors: {}, extra: extra).and_return(result)
@@ -62,7 +63,7 @@
it 'returns FormResponse with success: false' do
result = instance_double(FormResponse)
- extra = { multi_factor_auth_method: 'piv_cac', key_id: nil }
+ extra = { multi_factor_auth_method: 'piv_cac', key_id: 'foo' }
expect(FormResponse).to receive(:new).
with(success: false, errors: { type: 'piv_cac.already_associated' },
@@ -115,7 +116,7 @@
it 'returns FormResponse with success: false' do
result = instance_double(FormResponse)
- extra = { multi_factor_auth_method: 'piv_cac' }
+ extra = { multi_factor_auth_method: 'piv_cac', key_id: nil }
expect(FormResponse).to receive(:new).
with(success: false, errors: {}, extra: extra).and_return(result)
diff --git a/spec/forms/user_piv_cac_verification_form_spec.rb b/spec/forms/user_piv_cac_verification_form_spec.rb
index 8318e777108..e82748379f1 100644
--- a/spec/forms/user_piv_cac_verification_form_spec.rb
+++ b/spec/forms/user_piv_cac_verification_form_spec.rb
@@ -19,6 +19,7 @@
'uuid' => x509_dn_uuid,
'subject' => 'x509-subject',
'nonce' => nonce,
+ 'key_id' => 'foo',
}
end
@@ -33,6 +34,7 @@
multi_factor_auth_method: 'piv_cac',
piv_cac_configuration_id: nil,
multi_factor_auth_method_created_at: nil,
+ piv_cac_configuration_dn_uuid: nil,
key_id: nil,
)
@@ -52,7 +54,8 @@
multi_factor_auth_method: 'piv_cac',
multi_factor_auth_method_created_at: nil,
piv_cac_configuration_id: nil,
- key_id: nil,
+ piv_cac_configuration_dn_uuid: 'some-random-uuid',
+ key_id: 'foo',
)
expect(form.error_type).to eq 'user.piv_cac_mismatch'
end
@@ -72,6 +75,8 @@
multi_factor_auth_method: 'piv_cac',
piv_cac_configuration_id: piv_cac_configuration.id,
multi_factor_auth_method_created_at: piv_cac_configuration.created_at.strftime('%s%L'),
+ key_id: 'foo',
+ piv_cac_configuration_dn_uuid: x509_dn_uuid,
)
end
@@ -88,7 +93,8 @@
multi_factor_auth_method: 'piv_cac',
piv_cac_configuration_id: nil,
multi_factor_auth_method_created_at: nil,
- key_id: nil,
+ piv_cac_configuration_dn_uuid: nil,
+ key_id: 'foo',
)
expect(Event).to_not receive(:create)
@@ -101,7 +107,7 @@
context 'when token is invalid' do
let(:token) { 'bad-token' }
let(:token_response) do
- { 'error' => 'token.bad', 'nonce' => nonce }
+ { 'error' => 'token.bad', 'nonce' => nonce, key_id: 'foo' }
end
it 'returns FormResponse with success: false' do
@@ -113,6 +119,7 @@
errors: { type: 'token.bad' },
multi_factor_auth_method: 'piv_cac',
multi_factor_auth_method_created_at: nil,
+ piv_cac_configuration_dn_uuid: nil,
piv_cac_configuration_id: nil,
key_id: nil,
)
@@ -132,6 +139,8 @@
multi_factor_auth_method: 'piv_cac',
multi_factor_auth_method_created_at: nil,
piv_cac_configuration_id: nil,
+ piv_cac_configuration_dn_uuid: nil,
+ key_id: nil,
)
end
end
From a8901861cdc86ecc4896b43f76bd24cc64c126d0 Mon Sep 17 00:00:00 2001
From: Jonathan Hooper
Date: Mon, 6 May 2024 11:00:48 -0400
Subject: [PATCH 19/22] LG-11753 Update Enter Code (formerly, Welcome Back)
Screen (#10344)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This commit makes changes to the Enter Code screen in the welcome back flow. It updates the address and “Clear my information and start over” link to be in an accordion, makes content updates, and rearranges some of the elements.
[skip changelog]
---
.../by_mail/enter_code/_enter_code.html.erb | 51 ++++++++++---------
config/locales/idv/en.yml | 19 ++++---
config/locales/idv/es.yml | 22 +++++---
config/locales/idv/fr.yml | 24 +++++----
config/locales/idv/zh.yml | 17 ++++---
spec/features/idv/confirm_start_over_spec.rb | 8 +--
spec/features/idv/in_person_spec.rb | 3 +-
.../idv/steps/enter_code_step_spec.rb | 13 ++---
.../idv/steps/request_letter_step_spec.rb | 3 +-
.../idv_examples/clearing_and_restarting.rb | 9 ++--
.../idv_examples/verification_code_entry.rb | 4 +-
11 files changed, 104 insertions(+), 69 deletions(-)
diff --git a/app/views/idv/by_mail/enter_code/_enter_code.html.erb b/app/views/idv/by_mail/enter_code/_enter_code.html.erb
index c30a8fcff09..6b8176ee69f 100644
--- a/app/views/idv/by_mail/enter_code/_enter_code.html.erb
+++ b/app/views/idv/by_mail/enter_code/_enter_code.html.erb
@@ -10,38 +10,43 @@
<% end %>
<% end %>
-<%= render AlertComponent.new(type: :info, class: 'margin-bottom-4', text_tag: 'div') do %>
-
- <%= t('idv.gpo.alert_info') %>
-
- <%= render 'shared/address', address: @gpo_verify_form.pii %>
-
-
- <%= t('idv.gpo.wrong_address') %>
- <%= link_to t('idv.gpo.clear_and_start_over'), idv_confirm_start_over_path %>
-
-<% end %>
-
<%= render PageHeadingComponent.new.with_content(t('idv.gpo.title')) %>
-<%= t('idv.gpo.intro_html') %>
+<%= t('idv.gpo.intro') %>
+
+<%= render 'form' %>
-<%= t('idv.gpo.form.title') %>
+<%= render AccordionComponent.new(class: 'margin-bottom-4') do |c| %>
+ <% c.with_header { t('idv.gpo.address_accordion.title') } %>
+ <%= t('idv.gpo.address_accordion.body') %>
+ <%= render 'shared/address', address: @gpo_verify_form.pii %>
+
+ <%= t(
+ 'idv.gpo.address_accordion.cta_html',
+ cta_link_html: link_to(
+ t('idv.gpo.address_accordion.cta_link'),
+ idv_confirm_start_over_path,
+ ),
+ ) %>
+
+<% end %>
-
- <%= t('idv.gpo.form.instructions') %>
+
+ <%= t(
+ 'idv.gpo.last_letter_request_message_html',
+ date_letter_was_sent: I18n.l(
+ @last_date_letter_was_sent,
+ format: :event_date,
+ ),
+ ) %>
-<%= render 'form' %>
-
<% if @can_request_another_letter %>
- <%= link_to t('idv.messages.gpo.resend'), idv_request_letter_path, class: 'display-block margin-bottom-2' %>
+ <%= link_to t('idv.messages.gpo.resend'), idv_request_letter_path, class: 'display-block margin-top-4' %>
<% end %>
-<%= link_to t('idv.gpo.return_to_profile'), account_path %>
+
-
- <%= link_to t('idv.messages.clear_and_start_over'), idv_confirm_start_over_path %>
-
+<%= link_to t('idv.gpo.return_to_profile'), account_path %>
diff --git a/config/locales/idv/en.yml b/config/locales/idv/en.yml
index 0420df3ad6a..8b22113f905 100644
--- a/config/locales/idv/en.yml
+++ b/config/locales/idv/en.yml
@@ -174,6 +174,11 @@ en:
state: State
zipcode: ZIP Code
gpo:
+ address_accordion:
+ body: 'We sent a letter with your verification code to:'
+ cta_html: Not the right address? %{cta_link_html}
+ cta_link: Clear your information and start over.
+ title: Where was my letter sent?
alert_info: 'We sent a letter with your verification code to:'
alert_rate_limit_warning_html: You can’t request more letters right now. Your
previous letter request was on %{date_letter_was_sent}.
@@ -190,14 +195,14 @@ en:
%{request_new_letter_link}.
title: Didn’t get your letter?
form:
- instructions: Enter the 10-character code from the letter you received.
otp_label: Verification code
- submit: Confirm account
+ submit: Submit
title: Confirm your account
- intro_html: 'If you have received your letter, please enter your verification
- code below.
If your letter hasn’t arrived yet, please be patient
- as letters take up to 10 days to arrive. Thank you for
- your patience.
'
+ intro: Welcome back. Enter the 10-character code from the letter you received.
+ last_letter_request_message_html: You last requested a letter on
+ %{date_letter_was_sent}. If your letter hasn’t arrived
+ yet, please be patient as letters take up to 10 days to
+ arrive. Thank you for your patience.
request_another_letter:
button: Request another letter
instructions_html: Request a new letter if you have issues with your current
@@ -206,7 +211,7 @@ en:
learn_more_link: Learn more about verifying your address by mail
title: Request another letter?
return_to_profile: Return to your profile
- title: Welcome back
+ title: Enter your verification code
wrong_address: Not the right address?
images:
come_back_later: Letter with a check mark
diff --git a/config/locales/idv/es.yml b/config/locales/idv/es.yml
index a6fd71e1b60..3d0bb260466 100644
--- a/config/locales/idv/es.yml
+++ b/config/locales/idv/es.yml
@@ -181,6 +181,11 @@ es:
state: Estado
zipcode: Código postal
gpo:
+ address_accordion:
+ body: 'Le enviamos una carta con su código de verificación a:'
+ cta_html: ¿La dirección es incorrecta? %{cta_link_html}
+ cta_link: Borre su información y comience nuevamente.
+ title: ¿A dónde enviaron mi carta?
alert_info: 'Enviamos una carta con su código de verificación a:'
alert_rate_limit_warning_html: No puede solicitar más cartas por ahora. La fecha
de su solicitud de carta anterior es el
@@ -198,14 +203,15 @@ es:
%{request_new_letter_link}.
title: '¿No recibió su carta?'
form:
- instructions: Introduzca el código de 10 caracteres de la carta que recibió.
otp_label: Código de verificación
- submit: Confirmar cuenta
+ submit: Enviar
title: Confirme su cuenta
- intro_html: 'Si ya recibió su carta, introduzca su código de verificación a
- continuación.
Si su carta aún no ha llegado, tenga paciencia, ya
- que las cartas tardan hasta 10 días en llegar. Gracias
- por su paciencia.
'
+ intro: Bienvenido de nuevo. Introduzca el código de 10 caracteres de la carta
+ que recibió.
+ last_letter_request_message_html: Usted solicitó una carta el
+ %{date_letter_was_sent}. Si aún no ha llegado, tenga
+ paciencia, ya que las cartas tardan hasta 10 días en
+ llegar. Gracias por su paciencia.
request_another_letter:
button: Solicitar otra carta
instructions_html: Solicite otra carta si tiene problemas con la carta actual o
@@ -215,7 +221,7 @@ es:
por correo
title: '¿Solicitar otra carta?'
return_to_profile: Vuelva a su perfil
- title: Bienvenido de nuevo
+ title: Introduzca su código de verificación
wrong_address: '¿No es la dirección correcta?'
images:
come_back_later: Carta con una marca de verificación
@@ -251,7 +257,7 @@ es:
learn_more_verify_by_mail: Obtenga más información sobre la verificación de su
dirección por correo
letter_on_the_way: Le enviaremos una carta
- resend: Envíeme otra carta
+ resend: Envíenme otra carta
start_over_html: Si esta no es la dirección correcta, tendrá que
%{start_over_link_html}.
start_over_link_text: empezar de nuevo y verificar con su nueva dirección
diff --git a/config/locales/idv/fr.yml b/config/locales/idv/fr.yml
index ab4e8a2887f..03dec851d84 100644
--- a/config/locales/idv/fr.yml
+++ b/config/locales/idv/fr.yml
@@ -191,7 +191,12 @@ fr:
state: État
zipcode: Code postal
gpo:
- alert_info: 'Nous avons envoyé une lettre avec votre code de vérification à :'
+ address_accordion:
+ body: 'Nous avons envoyé une lettre avec votre code de vérification à :'
+ cta_html: Ce n’est pas la bonne adresse? %{cta_link_html}
+ cta_link: Effacez vos renseignements et recommencez.
+ title: Où ma lettre a-t-elle été envoyée?
+ alert_info: 'Nous avons envoyé une lettre avec votre code de vérification à :'
alert_rate_limit_warning_html: Vous ne pouvez pas demander d’autres lettres pour
le moment. Votre demande de lettre précédente a été effectuée le
%{date_letter_was_sent}.
@@ -208,15 +213,16 @@ fr:
pouvez %{request_new_letter_link}.
title: Vous n’avez pas reçu votre lettre ?
form:
- instructions: Saisissez le code à 10 caractères que contient la lettre.
otp_label: Code de vérification
- submit: Confirmer le compte
+ submit: Valider
title: Confirmez votre compte
- intro_html: 'Si vous avez reçu votre lettre, veuillez saisir votre code de
- vérification ci-dessous.
Les lettres mettent jusqu’à 10
- jours pour arriver. Par conséquent, si votre lettre ne vous est
- pas encore parvenue, veuillez patienter. Nous vous remercions de votre
- patience.
'
+ intro: Bienvenue à nouveau. Saisissez le code à 10 caractères contenu dans le
+ courrier que vous avez reçu.
+ last_letter_request_message_html: Vous avez demandé pour la dernière fois de
+ recevoir un courrier le %{date_letter_was_sent}. Si
+ votre lettre n’est pas encore arrivée, veuillez patienter car elle peut
+ mettre jusqu’à 10 jours. Nous vous remercions de votre
+ patience.
request_another_letter:
button: Demander une autre lettre
instructions_html: Vous pouvez demander une nouvelle lettre si vous avez des
@@ -226,7 +232,7 @@ fr:
learn_more_link: En savoir plus sur la vérification de votre adresse par courrier
title: Vous voulez demander une autre lettre ?
return_to_profile: Retourner à votre profil
- title: Bienvenue de nouveau
+ title: Saisir votre code de vérification
wrong_address: Pas la bonne adresse ?
images:
come_back_later: Lettre avec une coche
diff --git a/config/locales/idv/zh.yml b/config/locales/idv/zh.yml
index 24c9df3b1ff..c53a80af69c 100644
--- a/config/locales/idv/zh.yml
+++ b/config/locales/idv/zh.yml
@@ -145,6 +145,11 @@ zh:
state: 州
zipcode: 邮编
gpo:
+ address_accordion:
+ body: '我们把带有你验证代码的信寄发到了:'
+ cta_html: 地址不对?%{cta_link_html}
+ cta_link: 清除我的信息并重新开始。
+ title: 我的信寄发到哪里了?
alert_info: '我们把带有你验证码的信件寄到了:'
alert_rate_limit_warning_html: 你现在不能再要求发信了。你此前曾在%{date_letter_was_sent} 要求过信件。
clear_and_start_over: 清除你的信息并重新开始。
@@ -157,20 +162,20 @@ zh:
request_new_letter_prompt_html: 如果你尚未收到信,可以 %{request_new_letter_link}。
title: 没收到信?
form:
- instructions: 输入你收到信中的由 10 个字符组成的代码。
otp_label: 验证码
- submit: 确认账户
+ submit: 提交
title: 确认你的账户
- intro_html:
- '如果你收到了信件,请在下面输入你的一次性代码 。
如果你的信件还没到,请耐心等待,因为信件最多需要
- 10 天才能送到。感谢你的耐心。
'
+ intro: 欢迎回来输入你收到信中的由 10 个字符组成的代码。
+ last_letter_request_message_html:
+ 你最近一次要求我们发信是%{date_letter_was_sent}。如果你的信件还没到,请耐心一点,因为信件有可能需要10
+ days才能送到。感谢你的耐心。
request_another_letter:
button: 要求再发一封信
instructions_html: 如果你目前的信有问题或者从未收到,请再要求发一封信。信件需要5 到 10 天到达。
learn_more_link: 对通过邮件验证你地址获得更多了解
title: 要求再发一封信?
return_to_profile: 返回你的用户资料
- title: 欢迎回来
+ title: 输入你的验证代码
wrong_address: 地址不对?
images:
come_back_later: 带有打勾符的信件
diff --git a/spec/features/idv/confirm_start_over_spec.rb b/spec/features/idv/confirm_start_over_spec.rb
index ab59f07e73f..66740bd61c4 100644
--- a/spec/features/idv/confirm_start_over_spec.rb
+++ b/spec/features/idv/confirm_start_over_spec.rb
@@ -14,7 +14,7 @@
gpo_verification_pending_at: 1.day.ago,
)
end
- let(:gpo_confirmation_code) do
+ let!(:gpo_confirmation_code) do
create(
:gpo_confirmation_code,
profile: profile,
@@ -52,7 +52,8 @@
it 'can cancel from confirmation screen' do
expect(current_path).to eq idv_verify_by_mail_enter_code_path
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.title')
+ click_on t('idv.gpo.address_accordion.cta_link')
expect(current_path).to eq idv_confirm_start_over_path
expect(page).to have_content(t('idv.cancel.description.gpo.start_over'))
@@ -65,7 +66,8 @@
end
it 'can return back to verify screen from confirm screen' do
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.title')
+ click_on t('idv.gpo.address_accordion.cta_link')
click_on t('forms.buttons.back')
expect(fake_analytics).to have_logged_event('IdV: gpo confirm start over visited')
diff --git a/spec/features/idv/in_person_spec.rb b/spec/features/idv/in_person_spec.rb
index 26b58c4e602..735a9410129 100644
--- a/spec/features/idv/in_person_spec.rb
+++ b/spec/features/idv/in_person_spec.rb
@@ -314,7 +314,8 @@
complete_enter_password_step
click_idv_continue
click_on t('account.index.verification.reactivate_button')
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.title')
+ click_on t('idv.gpo.address_accordion.cta_link')
click_idv_continue
expect(page).to have_current_path(idv_welcome_path)
diff --git a/spec/features/idv/steps/enter_code_step_spec.rb b/spec/features/idv/steps/enter_code_step_spec.rb
index 8d8f04f1514..7897d7258cc 100644
--- a/spec/features/idv/steps/enter_code_step_spec.rb
+++ b/spec/features/idv/steps/enter_code_step_spec.rb
@@ -12,11 +12,13 @@
:with_pii,
)
end
- let(:gpo_confirmation_code) do
+ let!(:gpo_confirmation_code) do
create(
:gpo_confirmation_code,
profile: profile,
otp_fingerprint: Pii::Fingerprinter.fingerprint(otp),
+ created_at: 2.days.ago,
+ updated_at: 2.days.ago,
)
end
let(:user) { profile.user }
@@ -165,7 +167,6 @@
expect(page).to have_content t('idv.messages.gpo.resend')
verify_no_rate_limit_banner
- gpo_confirmation_code
fill_in t('idv.gpo.form.otp_label'), with: otp
click_button t('idv.gpo.form.submit')
@@ -193,8 +194,7 @@
end
end
- it 'allows a user to cancel and start over in the footer' do
- gpo_confirmation_code
+ it 'allows a user to cancel and start over in the accordion' do
another_gpo_confirmation_code = create(
:gpo_confirmation_code,
profile: profile,
@@ -205,7 +205,7 @@
expect(current_path).to eq idv_verify_by_mail_enter_code_path
verify_rate_limit_banner_present(another_gpo_confirmation_code.updated_at)
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.cta_link')
expect(current_path).to eq idv_confirm_start_over_path
@@ -238,7 +238,8 @@
sign_in_live_with_2fa(user)
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.title')
+ click_on t('idv.gpo.address_accordion.cta_link')
expect(current_path).to eq idv_confirm_start_over_path
click_idv_continue
diff --git a/spec/features/idv/steps/request_letter_step_spec.rb b/spec/features/idv/steps/request_letter_step_spec.rb
index 3279bfbab07..4e3c353315e 100644
--- a/spec/features/idv/steps/request_letter_step_spec.rb
+++ b/spec/features/idv/steps/request_letter_step_spec.rb
@@ -112,6 +112,7 @@
context 'logged in with PIV/CAC and no password' do
it 'does not 500' do
create(:profile, :with_pii, user: user, gpo_verification_pending_at: 1.day.ago)
+ create(:gpo_confirmation_code, profile: user.pending_profile)
create(:piv_cac_configuration, user: user, x509_dn_uuid: 'helloworld', name: 'My PIV Card')
signin_with_piv(user)
@@ -204,7 +205,7 @@ def confirm_rate_limited
fill_in_code_with_last_phone_otp
click_submit_default
- expect(page).to have_content(t('idv.gpo.form.instructions'))
+ expect(page).to have_content(t('idv.gpo.intro'))
end
end
end
diff --git a/spec/support/idv_examples/clearing_and_restarting.rb b/spec/support/idv_examples/clearing_and_restarting.rb
index 9fc2a194a11..3379fab7257 100644
--- a/spec/support/idv_examples/clearing_and_restarting.rb
+++ b/spec/support/idv_examples/clearing_and_restarting.rb
@@ -1,6 +1,7 @@
RSpec.shared_examples 'clearing and restarting idv' do
it 'allows the user to retry verification with phone', js: true do
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.title')
+ click_on t('idv.gpo.address_accordion.cta_link')
click_idv_continue
expect(user.reload.pending_profile?).to eq(false)
@@ -15,7 +16,8 @@
end
it 'allows the user to retry verification with gpo', js: true do
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.title')
+ click_on t('idv.gpo.address_accordion.cta_link')
click_idv_continue
expect(user.reload.pending_profile?).to eq(false)
@@ -40,7 +42,8 @@
end
it 'deletes decrypted PII from the session and does not display it on the account page' do
- click_on t('idv.messages.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.title')
+ click_on t('idv.gpo.address_accordion.cta_link')
click_idv_continue
visit account_path
diff --git a/spec/support/idv_examples/verification_code_entry.rb b/spec/support/idv_examples/verification_code_entry.rb
index 2830aa78ced..766d4889a3a 100644
--- a/spec/support/idv_examples/verification_code_entry.rb
+++ b/spec/support/idv_examples/verification_code_entry.rb
@@ -50,7 +50,7 @@
sign_in_live_with_2fa(user)
expect(GpoConfirmation.count).to eq(0)
- expect(GpoConfirmationCode.count).to eq(0)
+ expect(GpoConfirmationCode.count).to eq(1)
click_on t('idv.messages.gpo.resend')
expect_step_indicator_current_step(t('step_indicator.flows.idv.get_a_letter'))
@@ -58,7 +58,7 @@
click_on t('idv.gpo.request_another_letter.button')
expect(GpoConfirmation.count).to eq(1)
- expect(GpoConfirmationCode.count).to eq(1)
+ expect(GpoConfirmationCode.count).to eq(2)
expect(current_path).to eq idv_letter_enqueued_path
confirmation_code = GpoConfirmationCode.first
From 20032ca21f1ad218428a1fa169d4319657dc9945 Mon Sep 17 00:00:00 2001
From: Alex Bradley
Date: Mon, 6 May 2024 11:38:27 -0400
Subject: [PATCH 20/22] Update "How verifying your identity works" for LQA
spanish translation (#10558)
changelog: User-Facing Inprovements, IdV, Update spanish LQA translation on agreement step
---
config/locales/doc_auth/es.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/config/locales/doc_auth/es.yml b/config/locales/doc_auth/es.yml
index e83e222e443..f1f4b4fc517 100644
--- a/config/locales/doc_auth/es.yml
+++ b/config/locales/doc_auth/es.yml
@@ -273,9 +273,9 @@ es:
bullet2: Ingresar su número de Seguro Social
bullet3: Hacer coincidir su número de teléfono
bullet4: Volver a ingresar su contraseña de %{app_name}
- consent: Al marcar esta casilla, usted permite que %{app_name} pida, utilice,
- conserve y divulgue su información personal. La usaremos para verificar
- su identidad.
+ consent: Al marcar esta casilla, usted permite que %{app_name} solicite,
+ utilice, conserve y comparta su información personal. La utilizaremos
+ para verificar su identidad.
getting_started: 'Necesitará:'
learn_more: Obtenga más información sobre nuestras medidas de privacidad y seguridad
switch_back: Vuelva a su computadora para finalizar la verificación de su identidad.
From 7a763eeb21e20f04a2cb3887401e8758ac6f2a48 Mon Sep 17 00:00:00 2001
From: Jonathan Hooper
Date: Mon, 6 May 2024 13:01:44 -0400
Subject: [PATCH 21/22] LG-12064 Update "Didn't get your letter?" screen
(#10357)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This commit makes changes to the "Didn't get your letter" screen in the welcome back flow. It updates the address and “Clear my information and start over” link to be in an accordion, makes content updates, and rearranges some of the elements.
[skip changelog]
---
.../_did_not_receive_letter.html.erb | 56 ++++++++++---------
config/locales/idv/en.yml | 16 ++----
config/locales/idv/es.yml | 22 +++-----
config/locales/idv/fr.yml | 20 +++----
config/locales/idv/zh.yml | 11 +---
.../idv/steps/enter_code_step_spec.rb | 13 ++++-
.../idv/steps/request_letter_step_spec.rb | 4 +-
.../by_mail/enter_code/index.html.erb_spec.rb | 40 +++++++------
8 files changed, 88 insertions(+), 94 deletions(-)
diff --git a/app/views/idv/by_mail/enter_code/_did_not_receive_letter.html.erb b/app/views/idv/by_mail/enter_code/_did_not_receive_letter.html.erb
index d6b970d9eca..de79f423d77 100644
--- a/app/views/idv/by_mail/enter_code/_did_not_receive_letter.html.erb
+++ b/app/views/idv/by_mail/enter_code/_did_not_receive_letter.html.erb
@@ -10,43 +10,49 @@
<% end %>
<% end %>
-<%= render AlertComponent.new(type: :info, class: 'margin-bottom-4', text_tag: 'div') do %>
-
- <%= t('idv.gpo.alert_info') %>
-
- <%= render 'shared/address', address: @gpo_verify_form.pii %>
-
+<%= render PageHeadingComponent.new.with_content(t('idv.gpo.did_not_receive_letter.title')) %>
+
+
+ <%= t(
+ 'idv.gpo.did_not_receive_letter.intro_html',
+ date_letter_was_sent: I18n.l(
+ @last_date_letter_was_sent,
+ format: :event_date,
+ ),
+ ) %>
+
+
+<%= render AccordionComponent.new(class: 'margin-bottom-4') do |c| %>
+ <% c.with_header { t('idv.gpo.address_accordion.title') } %>
+ <%= t('idv.gpo.address_accordion.body') %>
+ <%= render 'shared/address', address: @gpo_verify_form.pii %>
- <%= t('idv.gpo.wrong_address') %>
- <%= link_to t('idv.gpo.clear_and_start_over'), idv_confirm_start_over_path %>
+ <%= t(
+ 'idv.gpo.address_accordion.cta_html',
+ cta_link_html: link_to(
+ t('idv.gpo.address_accordion.cta_link'),
+ idv_confirm_start_over_path,
+ ),
+ ) %>
<% end %>
-<%= render PageHeadingComponent.new.with_content(t('idv.gpo.did_not_receive_letter.title')) %>
+
+ <%= t('idv.gpo.did_not_receive_letter.request_a_new_letter_html') %>
+
<% if @can_request_another_letter %>
- <%= t(
- 'idv.gpo.did_not_receive_letter.intro.request_new_letter_prompt_html',
- request_new_letter_link: link_to(
- t('idv.gpo.did_not_receive_letter.intro.request_new_letter_link'),
- idv_request_letter_path,
- ),
- ) %>
+ <%= link_to t('idv.messages.gpo.resend'), idv_request_letter_path, class: 'display-block margin-top-4' %>
<% end %>
-<%= t('idv.gpo.did_not_receive_letter.intro.be_patient_html') %>
-<%= t('idv.gpo.form.title') %>
+<%= t('idv.gpo.title') %>
-
- <%= t('idv.gpo.did_not_receive_letter.form.instructions') %>
-
+<%= t('idv.gpo.did_not_receive_letter.form.instructions') %>
<%= render 'form' %>
-<%= link_to t('idv.gpo.return_to_profile'), account_path %>
+
-
- <%= link_to t('idv.messages.clear_and_start_over'), idv_confirm_start_over_path %>
-
+<%= link_to t('idv.gpo.return_to_profile'), account_path %>
diff --git a/config/locales/idv/en.yml b/config/locales/idv/en.yml
index 8b22113f905..347960ac5d9 100644
--- a/config/locales/idv/en.yml
+++ b/config/locales/idv/en.yml
@@ -179,25 +179,21 @@ en:
cta_html: Not the right address? %{cta_link_html}
cta_link: Clear your information and start over.
title: Where was my letter sent?
- alert_info: 'We sent a letter with your verification code to:'
alert_rate_limit_warning_html: You can’t request more letters right now. Your
previous letter request was on %{date_letter_was_sent}.
- clear_and_start_over: Clear your information and start over
did_not_receive_letter:
form:
instructions: If you have your letter, enter the 10-character code from the
letter you received.
- intro:
- be_patient_html: Please note that letters take up to 10 days to
- arrive. Thank you for your patience.
- request_new_letter_link: request a new letter
- request_new_letter_prompt_html: If you haven’t received your letter, you may
- %{request_new_letter_link}.
+ intro_html: You last requested a letter on
+ %{date_letter_was_sent}.
+ request_a_new_letter_html: Request a new letter if it’s been over 10
+ days since you last requested a letter or if your
+ verification code has expired.
title: Didn’t get your letter?
form:
otp_label: Verification code
submit: Submit
- title: Confirm your account
intro: Welcome back. Enter the 10-character code from the letter you received.
last_letter_request_message_html: You last requested a letter on
%{date_letter_was_sent}. If your letter hasn’t arrived
@@ -212,14 +208,12 @@ en:
title: Request another letter?
return_to_profile: Return to your profile
title: Enter your verification code
- wrong_address: Not the right address?
images:
come_back_later: Letter with a check mark
messages:
activated_html: Your identity has been verified. If you need to change your
verified information, please %{link_html}.
activated_link: contact us
- clear_and_start_over: Clear my information and start over
come_back_later_html: Letters take 5 to 10 days to arrive
via USPS First-Class Mail.
Once your letter arrives, sign in to
%{app_name}, and enter your verification code when prompted.
diff --git a/config/locales/idv/es.yml b/config/locales/idv/es.yml
index 3d0bb260466..808c0b12a38 100644
--- a/config/locales/idv/es.yml
+++ b/config/locales/idv/es.yml
@@ -186,26 +186,22 @@ es:
cta_html: ¿La dirección es incorrecta? %{cta_link_html}
cta_link: Borre su información y comience nuevamente.
title: ¿A dónde enviaron mi carta?
- alert_info: 'Enviamos una carta con su código de verificación a:'
- alert_rate_limit_warning_html: No puede solicitar más cartas por ahora. La fecha
- de su solicitud de carta anterior es el
+ alert_rate_limit_warning_html: No puede solicitar más cartas ahora mismo. Su
+ solicitud de carta anterior la hizo el
%{date_letter_was_sent}.
- clear_and_start_over: Borre su información y empiece de nuevo
did_not_receive_letter:
form:
instructions: Si ya tiene su carta, introduzca el código de 10 caracteres de la
carta que recibió.
- intro:
- be_patient_html: Recuerde que las cartas tardan hasta 10 días
- en llegar. Gracias por su paciencia.
- request_new_letter_link: solicitar una carta nueva
- request_new_letter_prompt_html: Si no ha recibido su carta, puede
- %{request_new_letter_link}.
- title: '¿No recibió su carta?'
+ intro_html: La última vez que solicitó una carta fue el
+ %{date_letter_was_sent}.
+ request_a_new_letter_html: Solicite una nueva carta si han pasado más de
+ 10 días desde la última vez que la solicitó o si su
+ código de verificación ha caducado.
+ title: ¿No recibió su carta?
form:
otp_label: Código de verificación
submit: Enviar
- title: Confirme su cuenta
intro: Bienvenido de nuevo. Introduzca el código de 10 caracteres de la carta
que recibió.
last_letter_request_message_html: Usted solicitó una carta el
@@ -222,14 +218,12 @@ es:
title: '¿Solicitar otra carta?'
return_to_profile: Vuelva a su perfil
title: Introduzca su código de verificación
- wrong_address: '¿No es la dirección correcta?'
images:
come_back_later: Carta con una marca de verificación
messages:
activated_html: Se verificó su identidad. Si necesita cambiar la información
verificada, %{link_html}.
activated_link: contáctenos
- clear_and_start_over: Borrar mi información y empezar de nuevo
come_back_later_html: 'Las cartas tardan de 5 a 10 días en
llegar por First-Class Mail del Servicio Postal de los EE. UU.
(USPS).
Una vez que reciba su carta, inicie sesión en %{app_name}
diff --git a/config/locales/idv/fr.yml b/config/locales/idv/fr.yml
index 03dec851d84..7964f115072 100644
--- a/config/locales/idv/fr.yml
+++ b/config/locales/idv/fr.yml
@@ -196,26 +196,22 @@ fr:
cta_html: Ce n’est pas la bonne adresse? %{cta_link_html}
cta_link: Effacez vos renseignements et recommencez.
title: Où ma lettre a-t-elle été envoyée?
- alert_info: 'Nous avons envoyé une lettre avec votre code de vérification à :'
alert_rate_limit_warning_html: Vous ne pouvez pas demander d’autres lettres pour
le moment. Votre demande de lettre précédente a été effectuée le
%{date_letter_was_sent}.
- clear_and_start_over: Effacez vos renseignements et recommencez
did_not_receive_letter:
form:
- instructions: Si vous avez disposez de votre lettre, veuillez entrer le code à
- 10 caractères qu’elle contient.
- intro:
- be_patient_html: Veuillez noter que les lettres mettent jusqu’à 10
- jours pour arriver. Nous vous remercions de votre patience.
- request_new_letter_link: demander une nouvelle lettre
- request_new_letter_prompt_html: Si votre lettre n’est pas encore arrivée, vous
- pouvez %{request_new_letter_link}.
+ instructions: Si vous avez votre lettre, veuillez saisir le code à 10 caractères
+ qu’elle contient.
+ intro_html: Vous avez demandé pour la dernière fois de recevoir un courrier le
+ %{date_letter_was_sent}.
+ request_a_new_letter_html: Demandez à recevoir un nouveau courrier si plus de
+ 10 jours se sont écoulés depuis la dernière fois que
+ vous en avez demandé un ou si votre code de vérification a expiré.
title: Vous n’avez pas reçu votre lettre ?
form:
otp_label: Code de vérification
submit: Valider
- title: Confirmez votre compte
intro: Bienvenue à nouveau. Saisissez le code à 10 caractères contenu dans le
courrier que vous avez reçu.
last_letter_request_message_html: Vous avez demandé pour la dernière fois de
@@ -233,14 +229,12 @@ fr:
title: Vous voulez demander une autre lettre ?
return_to_profile: Retourner à votre profil
title: Saisir votre code de vérification
- wrong_address: Pas la bonne adresse ?
images:
come_back_later: Lettre avec une coche
messages:
activated_html: Votre identité a été vérifiée. Si vous souhaitez modifier les
informations qui ont été vérifiées, veuillez %{link_html}.
activated_link: nous contacter
- clear_and_start_over: Effacer mes renseignements et recommencer
come_back_later_html: '
Les lettres mettent 5 à 10 jours pour
arriver par courrier prioritaire via USPS.
Une fois votre lettre
arrivée, connectez-vous à %{app_name} et saisissez votre code de
diff --git a/config/locales/idv/zh.yml b/config/locales/idv/zh.yml
index c53a80af69c..3590abab316 100644
--- a/config/locales/idv/zh.yml
+++ b/config/locales/idv/zh.yml
@@ -150,21 +150,16 @@ zh:
cta_html: 地址不对?%{cta_link_html}
cta_link: 清除我的信息并重新开始。
title: 我的信寄发到哪里了?
- alert_info: '我们把带有你验证码的信件寄到了:'
alert_rate_limit_warning_html: 你现在不能再要求发信了。你此前曾在%{date_letter_was_sent} 要求过信件。
- clear_and_start_over: 清除你的信息并重新开始。
did_not_receive_letter:
form:
instructions: 如果你收到了信,请输入信中由 10 个字符组成的代码。
- intro:
- be_patient_html: 请注意信件最多需要 10 天才能送到。感谢你的耐心。
- request_new_letter_link: 要求再发一封信
- request_new_letter_prompt_html: 如果你尚未收到信,可以 %{request_new_letter_link}。
+ intro_html: 你最近一次要求我们发信是%{date_letter_was_sent}.
+ request_a_new_letter_html: 如果从你最近一次要求信件后 10 天已经过去了,或者你的验证代码已失效,请重新要求一封信。
title: 没收到信?
form:
otp_label: 验证码
submit: 提交
- title: 确认你的账户
intro: 欢迎回来输入你收到信中的由 10 个字符组成的代码。
last_letter_request_message_html:
你最近一次要求我们发信是%{date_letter_was_sent}。如果你的信件还没到,请耐心一点,因为信件有可能需要10
@@ -176,13 +171,11 @@ zh:
title: 要求再发一封信?
return_to_profile: 返回你的用户资料
title: 输入你的验证代码
- wrong_address: 地址不对?
images:
come_back_later: 带有打勾符的信件
messages:
activated_html: 你的身份已经验证。如要更改已验证过的你的信息,请 %{link_html}。
activated_link: 联系我们
- clear_and_start_over: 清除我的信息并重新开始。
come_back_later_html: 美国邮局平信一般需要 5 到 10 天 送达。
你的信件到达后,请登录 %{app_name},并按照提示输入你的验证码
。
come_back_later_no_sp_html: 你目前可以返回你的%{app_name} 账户 了。
diff --git a/spec/features/idv/steps/enter_code_step_spec.rb b/spec/features/idv/steps/enter_code_step_spec.rb
index 7897d7258cc..0c1d60940ed 100644
--- a/spec/features/idv/steps/enter_code_step_spec.rb
+++ b/spec/features/idv/steps/enter_code_step_spec.rb
@@ -179,12 +179,19 @@
sign_in_live_with_2fa(user)
expect(current_path).to eq idv_verify_by_mail_enter_code_path
- expect(page).to have_content t('idv.gpo.alert_info')
- expect(page).to have_content t('idv.gpo.wrong_address')
+ expect(page).to have_content t('idv.gpo.intro')
+ expect(page).to have_content(
+ strip_tags(
+ t(
+ 'idv.gpo.address_accordion.cta_html',
+ cta_link_html: t('idv.gpo.address_accordion.cta_link'),
+ ),
+ ),
+ )
expect(page).to have_content Idp::Constants::MOCK_IDV_APPLICANT_WITH_PHONE[:address1]
verify_no_rate_limit_banner
- click_on t('idv.gpo.clear_and_start_over')
+ click_on t('idv.gpo.address_accordion.cta_link')
expect(current_path).to eq idv_confirm_start_over_path
diff --git a/spec/features/idv/steps/request_letter_step_spec.rb b/spec/features/idv/steps/request_letter_step_spec.rb
index 4e3c353315e..6391530b29c 100644
--- a/spec/features/idv/steps/request_letter_step_spec.rb
+++ b/spec/features/idv/steps/request_letter_step_spec.rb
@@ -153,14 +153,14 @@ def sign_out
def confirm_rate_limited
expect(page).to have_current_path(idv_verify_by_mail_enter_code_path)
expect(page).not_to have_link(
- t('idv.gpo.did_not_receive_letter.intro.request_new_letter_link'),
+ t('idv.messages.gpo.resend'),
)
# does not allow the user to go to the resend page manually
visit idv_request_letter_path
expect(page).to have_current_path(idv_verify_by_mail_enter_code_path)
expect(page).not_to have_link(
- t('idv.gpo.did_not_receive_letter.intro.request_new_letter_link'),
+ t('idv.messages.gpo.resend'),
)
end
end
diff --git a/spec/views/idv/by_mail/enter_code/index.html.erb_spec.rb b/spec/views/idv/by_mail/enter_code/index.html.erb_spec.rb
index 91c7e113754..3c9dc04d08b 100644
--- a/spec/views/idv/by_mail/enter_code/index.html.erb_spec.rb
+++ b/spec/views/idv/by_mail/enter_code/index.html.erb_spec.rb
@@ -51,24 +51,26 @@
expect(rendered).to have_css('h1', text: t('idv.gpo.did_not_receive_letter.title'))
end
- it 'has a special intro paragraph' do
+ it 'has a special body text' do
expect(rendered).to have_content(
strip_tags(
t(
- 'idv.gpo.did_not_receive_letter.intro.request_new_letter_prompt_html',
- request_new_letter_link:
- t('idv.gpo.did_not_receive_letter.intro.request_new_letter_link'),
+ 'idv.gpo.did_not_receive_letter.intro_html',
+ date_letter_was_sent: I18n.l(
+ last_date_letter_was_sent,
+ format: :event_date,
+ ),
),
),
)
expect(rendered).to have_content(
- strip_tags(t('idv.gpo.did_not_receive_letter.intro.be_patient_html')),
+ strip_tags(t('idv.gpo.did_not_receive_letter.request_a_new_letter_html')),
)
end
it 'links to requesting a new letter' do
expect(rendered).to have_link(
- t('idv.gpo.did_not_receive_letter.intro.request_new_letter_link'),
+ t('idv.messages.gpo.resend'),
href: idv_request_letter_path,
)
end
@@ -79,25 +81,29 @@
)
end
- it 'does not link to requesting a new letter at the bottom of the page' do
- expect(rendered).not_to have_link(
- t('idv.messages.gpo.resend'),
- href: idv_request_letter_path,
- )
- end
-
context 'user is NOT allowed to request another GPO letter' do
let(:can_request_another_letter) { false }
- it 'still has a special intro' do
+ it 'still has a special body text' do
+ expect(rendered).to have_content(
+ strip_tags(
+ t(
+ 'idv.gpo.did_not_receive_letter.intro_html',
+ date_letter_was_sent: I18n.l(
+ last_date_letter_was_sent,
+ format: :event_date,
+ ),
+ ),
+ ),
+ )
expect(rendered).to have_content(
- strip_tags(t('idv.gpo.did_not_receive_letter.intro.be_patient_html')),
+ strip_tags(t('idv.gpo.did_not_receive_letter.request_a_new_letter_html')),
)
end
it 'does not link to requesting a new letter' do
- expect(rendered).not_to have_link(
- t('idv.gpo.did_not_receive_letter.intro.request_new_letter_link'),
+ expect(rendered).to_not have_link(
+ t('idv.messages.gpo.resend'),
href: idv_request_letter_path,
)
end
From e753c918b879712ae1d9f7638ada719d37807020 Mon Sep 17 00:00:00 2001
From: Doug Price
Date: Mon, 6 May 2024 16:15:00 -0400
Subject: [PATCH 22/22] LG-12553: A/B Test for 10-digit IdV OTP (#10480)
* LG-12553: A/B Test for 10-digit IdV OTP
This PR sets up an A/B test where one group gets the current six
alphanumeric character OTP, and the other group gets the new ten numeric
digit OTP under test.
The test bucket they are put in is logged in most IdV events.
changelog: User-Facing Improvements, Identity Verification, A/B test to try out 10-digit voice OTP for Identity Verification
---
.../concerns/idv/ab_test_analytics_concern.rb | 21 +++-
.../idv/otp_verification_controller.rb | 15 +++
app/controllers/idv/phone_controller.rb | 1 +
.../two_factor_authentication_controller.rb | 8 +-
.../idv/phone_confirmation_session.rb | 38 +++++--
app/services/idv/phone_step.rb | 1 +
.../idv/send_phone_confirmation_otp.rb | 21 +++-
app/views/idv/otp_verification/show.html.erb | 2 +-
config/application.yml.default | 2 +
config/initializers/ab_tests.rb | 11 ++
config/locales/telephony/en.yml | 9 +-
config/locales/telephony/es.yml | 10 +-
config/locales/telephony/fr.yml | 7 +-
config/locales/telephony/zh.yml | 8 +-
lib/identity_config.rb | 2 +
lib/telephony.rb | 3 +-
lib/telephony/otp_sender.rb | 9 +-
.../idv/otp_verification_controller_spec.rb | 31 ++---
.../idv/resend_otp_controller_spec.rb | 3 +-
...o_factor_authentication_controller_spec.rb | 1 +
...confirmation_otp_verification_form_spec.rb | 1 +
spec/i18n_spec.rb | 2 +
.../idv/phone_confirmation_session_spec.rb | 106 +++++++++++++++++-
.../idv/send_phone_confirmation_otp_spec.rb | 3 +
24 files changed, 259 insertions(+), 56 deletions(-)
diff --git a/app/controllers/concerns/idv/ab_test_analytics_concern.rb b/app/controllers/concerns/idv/ab_test_analytics_concern.rb
index 580cd6a0785..714eeb895da 100644
--- a/app/controllers/concerns/idv/ab_test_analytics_concern.rb
+++ b/app/controllers/concerns/idv/ab_test_analytics_concern.rb
@@ -6,7 +6,8 @@ module AbTestAnalyticsConcern
include OptInHelper
def ab_test_analytics_buckets
- buckets = {}
+ buckets = { ab_tests: {} }
+
if defined?(idv_session)
buckets[:skip_hybrid_handoff] = idv_session&.skip_hybrid_handoff
buckets = buckets.merge(opt_in_analytics_properties)
@@ -18,7 +19,23 @@ def ab_test_analytics_buckets
buckets = buckets.merge(lniv_args)
end
- buckets.merge(acuant_sdk_ab_test_analytics_args)
+ if defined?(idv_session)
+ phone_confirmation_session = idv_session.user_phone_confirmation_session ||
+ PhoneConfirmationSession.new(
+ code: nil,
+ phone: nil,
+ sent_at: nil,
+ delivery_method: :sms,
+ user: current_user,
+ )
+ buckets[:ab_tests].merge!(
+ phone_confirmation_session.ab_test_analytics_args,
+ )
+ end
+
+ buckets.merge!(acuant_sdk_ab_test_analytics_args)
+ buckets.delete(:ab_tests) if buckets[:ab_tests].blank?
+ buckets
end
end
end
diff --git a/app/controllers/idv/otp_verification_controller.rb b/app/controllers/idv/otp_verification_controller.rb
index 483dbf7e0a9..4253e861938 100644
--- a/app/controllers/idv/otp_verification_controller.rb
+++ b/app/controllers/idv/otp_verification_controller.rb
@@ -16,6 +16,7 @@ def show
# memoize the form so the ivar is available to the view
phone_confirmation_otp_verification_form
analytics.idv_phone_confirmation_otp_visit
+ @otp_code_length = code_length
end
def update
@@ -34,6 +35,7 @@ def update
flash[:success] = t('idv.messages.enter_password.phone_verified')
redirect_to idv_enter_password_url
else
+ @otp_code_length = code_length
handle_otp_confirmation_failure
end
end
@@ -96,5 +98,18 @@ def phone_confirmation_otp_verification_form
irs_attempts_api_tracker: irs_attempts_api_tracker,
)
end
+
+ def code_length
+ if ten_digit_otp?
+ 10
+ else
+ TwoFactorAuthenticatable::PROOFING_DIRECT_OTP_LENGTH
+ end
+ end
+
+ def ten_digit_otp?
+ AbTests::IDV_TEN_DIGIT_OTP.bucket(current_user.uuid) == :ten_digit_otp &&
+ idv_session.user_phone_confirmation_session.delivery_method == :voice
+ end
end
end
diff --git a/app/controllers/idv/phone_controller.rb b/app/controllers/idv/phone_controller.rb
index 3a15f231c48..e8972f9197c 100644
--- a/app/controllers/idv/phone_controller.rb
+++ b/app/controllers/idv/phone_controller.rb
@@ -257,6 +257,7 @@ def save_delivery_preference
phone: original_session.phone,
sent_at: original_session.sent_at,
delivery_method: original_session.delivery_method,
+ user: current_user,
)
end
end
diff --git a/app/controllers/users/two_factor_authentication_controller.rb b/app/controllers/users/two_factor_authentication_controller.rb
index 640c62f071b..5e5c5fdee73 100644
--- a/app/controllers/users/two_factor_authentication_controller.rb
+++ b/app/controllers/users/two_factor_authentication_controller.rb
@@ -312,10 +312,16 @@ def send_user_otp(method)
if UserSessionContext.authentication_or_reauthentication_context?(context)
Telephony.send_authentication_otp(**otp_params)
else
- Telephony.send_confirmation_otp(**otp_params)
+ Telephony.send_confirmation_otp(**otp_params, otp_length: otp_length)
end
end
+ def otp_length
+ bucket = AbTests::IDV_TEN_DIGIT_OTP.bucket(current_user.uuid)
+ length = bucket == :ten_digit_otp ? 'ten' : 'six'
+ I18n.t("telephony.format_length.#{length}")
+ end
+
def user_selected_default_number
delivery_params[:otp_make_default_number]
end
diff --git a/app/services/idv/phone_confirmation_session.rb b/app/services/idv/phone_confirmation_session.rb
index 5653bede092..fa269c829a1 100644
--- a/app/services/idv/phone_confirmation_session.rb
+++ b/app/services/idv/phone_confirmation_session.rb
@@ -2,36 +2,54 @@
module Idv
class PhoneConfirmationSession
- attr_reader :code, :phone, :sent_at, :delivery_method
+ attr_reader :code, :phone, :sent_at, :delivery_method, :user
- def self.generate_code
- OtpCodeGenerator.generate_alphanumeric_digits(
- TwoFactorAuthenticatable::PROOFING_DIRECT_OTP_LENGTH,
- )
+ def self.generate_code(user:, delivery_method:)
+ bucket = AbTests::IDV_TEN_DIGIT_OTP.bucket(user&.uuid)
+ if delivery_method == :voice && bucket == :ten_digit_otp
+ OtpCodeGenerator.generate_digits(10)
+ else # original, bucket defaults to :six_alphanumeric_otp
+ OtpCodeGenerator.generate_alphanumeric_digits(
+ TwoFactorAuthenticatable::PROOFING_DIRECT_OTP_LENGTH,
+ )
+ end
end
- def initialize(code:, phone:, sent_at:, delivery_method:)
+ def initialize(code:, phone:, sent_at:, delivery_method:, user:)
@code = code
@phone = phone
@sent_at = sent_at
@delivery_method = delivery_method.to_sym
+ @user = user
end
- def self.start(phone:, delivery_method:)
+ def self.start(phone:, delivery_method:, user:)
new(
- code: generate_code,
+ code: generate_code(user: user, delivery_method: delivery_method),
phone: phone,
sent_at: Time.zone.now,
delivery_method: delivery_method,
+ user: user,
)
end
+ def ab_test_analytics_args
+ return {} unless IdentityConfig.store.ab_testing_idv_ten_digit_otp_enabled
+
+ {
+ AbTests::IDV_TEN_DIGIT_OTP.experiment_name => {
+ bucket: AbTests::IDV_TEN_DIGIT_OTP.bucket(user.uuid),
+ },
+ }
+ end
+
def regenerate_otp
self.class.new(
- code: self.class.generate_code,
+ code: self.class.generate_code(user: user, delivery_method: delivery_method),
phone: phone,
sent_at: Time.zone.now,
delivery_method: delivery_method,
+ user: user,
)
end
@@ -62,6 +80,7 @@ def to_h
phone: phone,
sent_at: sent_at.to_i,
delivery_method: delivery_method,
+ user_id: user&.id,
}
end
@@ -71,6 +90,7 @@ def self.from_h(hash)
phone: hash[:phone],
sent_at: Time.zone.at(hash[:sent_at]),
delivery_method: hash[:delivery_method].to_sym,
+ user: hash[:user_id].nil? ? nil : User.find(hash[:user_id]),
)
end
end
diff --git a/app/services/idv/phone_step.rb b/app/services/idv/phone_step.rb
index 0bd91802d14..b12946bcf77 100644
--- a/app/services/idv/phone_step.rb
+++ b/app/services/idv/phone_step.rb
@@ -143,6 +143,7 @@ def start_phone_confirmation_session
idv_session.user_phone_confirmation_session = Idv::PhoneConfirmationSession.start(
phone: PhoneFormatter.format(applicant[:phone]),
delivery_method: otp_delivery_preference,
+ user: idv_session.current_user, # needed for 10-digit A/B test
)
end
diff --git a/app/services/idv/send_phone_confirmation_otp.rb b/app/services/idv/send_phone_confirmation_otp.rb
index a32b078c3f2..036ed2e6672 100644
--- a/app/services/idv/send_phone_confirmation_otp.rb
+++ b/app/services/idv/send_phone_confirmation_otp.rb
@@ -66,7 +66,8 @@ def send_otp
otp: code,
to: phone,
expiration: TwoFactorAuthenticatable::DIRECT_OTP_VALID_FOR_MINUTES,
- otp_format: I18n.t('telephony.format_type.character'),
+ otp_format: I18n.t("telephony.format_type.#{format}"),
+ otp_length: I18n.t("telephony.format_length.#{length}"),
channel: delivery_method,
domain: IdentityConfig.store.domain_name,
country_code: parsed_phone.country,
@@ -79,6 +80,24 @@ def send_otp
otp_sent_response
end
+ def bucket
+ @bucket ||= AbTests::IDV_TEN_DIGIT_OTP.bucket(
+ idv_session.user_phone_confirmation_session.user.uuid,
+ )
+ end
+
+ def format
+ return 'digit' if delivery_method == :voice && bucket == :ten_digit_otp
+
+ 'character'
+ end
+
+ def length
+ return 'ten' if delivery_method == :voice && bucket == :ten_digit_otp
+
+ 'six'
+ end
+
def otp_sent_response
FormResponse.new(
success: telephony_response.success?, extra: extra_analytics_attributes,
diff --git a/app/views/idv/otp_verification/show.html.erb b/app/views/idv/otp_verification/show.html.erb
index b0c444118d1..21e4785c254 100644
--- a/app/views/idv/otp_verification/show.html.erb
+++ b/app/views/idv/otp_verification/show.html.erb
@@ -21,7 +21,7 @@
value: @code,
numeric: false,
autofocus: true,
- code_length: TwoFactorAuthenticatable::PROOFING_DIRECT_OTP_LENGTH,
+ code_length: @otp_code_length,
optional_prefix: '#',
class: 'margin-bottom-5',
) %>
diff --git a/config/application.yml.default b/config/application.yml.default
index dcdbf572266..eb8cd243128 100644
--- a/config/application.yml.default
+++ b/config/application.yml.default
@@ -20,6 +20,8 @@ aamva_cert_enabled: true
aamva_supported_jurisdictions: '["AL","AR","AZ","CO","CT","DC","DE","FL","GA","HI","IA","ID","IL","IN","KS","KY","MA","MD","ME","MI","MO","MS","MT","NC","ND","NE","NJ","NM","NV","OH","OR","PA","RI","SC","SD","TN","TX","VA","VT","WA","WI","WV","WY"]'
aamva_verification_request_timeout: 5.0
aamva_verification_url: https://example.org:12345/verification/url
+ab_testing_idv_ten_digit_otp_enabled: false
+ab_testing_idv_ten_digit_otp_percent: 0
all_redirect_uris_cache_duration_minutes: 2
allowed_ialmax_providers: '[]'
allowed_verified_within_providers: '[]'
diff --git a/config/initializers/ab_tests.rb b/config/initializers/ab_tests.rb
index 096647a52c4..feb9607c48c 100644
--- a/config/initializers/ab_tests.rb
+++ b/config/initializers/ab_tests.rb
@@ -30,4 +30,15 @@ module AbTests
0,
},
).freeze
+
+ IDV_TEN_DIGIT_OTP = AbTestBucket.new(
+ experiment_name: 'idv_ten_digit_otp',
+ default_bucket: :six_alphanumeric_otp,
+ buckets: {
+ ten_digit_otp:
+ IdentityConfig.store.ab_testing_idv_ten_digit_otp_enabled ?
+ IdentityConfig.store.ab_testing_idv_ten_digit_otp_percent :
+ 0,
+ },
+ ).freeze
end
diff --git a/config/locales/telephony/en.yml b/config/locales/telephony/en.yml
index 2b5517c100b..129515e6c60 100644
--- a/config/locales/telephony/en.yml
+++ b/config/locales/telephony/en.yml
@@ -22,9 +22,9 @@ en:
%{app_name}: Your one-time code is %{code}. It expires in %{expiration} minutes. Don't share this code with anyone.
@%{domain} #%{code}
- voice: Hello! Your 6-%{format_type} %{app_name} one-time code is, %{code}. Your
- one-time code is, %{code}. Again, your one-time code is %{code}. This
- code expires in %{expiration} minutes.
+ voice: Hello! Your %{format_length}-%{format_type} %{app_name} one-time code is,
+ %{code}. Your one-time code is, %{code}. Again, your one-time code is
+ %{code}. This code expires in %{expiration} minutes.
doc_auth_link: |-
%{app_name}: %{link} You're verifying your identity to access %{sp_or_app_name}. Take a photo of your ID to continue.
error:
@@ -49,6 +49,9 @@ en:
unknown_failure: We are experiencing technical difficulties. Please try again later.
voice_unsupported: Invalid phone number. Check that you’ve entered the correct
country code or area code.
+ format_length:
+ six: '6'
+ ten: '10'
format_type:
character: character
digit: digit
diff --git a/config/locales/telephony/es.yml b/config/locales/telephony/es.yml
index dcf8f19afff..ad96bf227f8 100644
--- a/config/locales/telephony/es.yml
+++ b/config/locales/telephony/es.yml
@@ -23,9 +23,10 @@ es:
%{app_name}: La contraseña es %{code}. Esta contraseña puede usarse una vez y se vence en %{expiration} minutos. No la comparta con nadie.
@%{domain} #%{code}
- voice: 'Hola: Su código de un solo uso de seis %{format_type} de %{app_name} es
- %{code}. Su código de un solo uso es %{code}. De nuevo, su código de un
- solo uso es %{code}. Este código vence en %{expiration} minutos.'
+ voice: 'Hola: Su código de un solo uso de %{format_length} %{format_type} de
+ %{app_name} es %{code}. Su código de un solo uso es %{code}. De nuevo,
+ su código de un solo uso es %{code}. Este código vence en %{expiration}
+ minutos.'
doc_auth_link: '%{app_name}: %{link} Está verificando su identidad para acceder
a %{sp_or_app_name}. Tome una foto de su identificación para continuar.'
error:
@@ -53,6 +54,9 @@ es:
inténtelo de nuevo más tarde.
voice_unsupported: Número de teléfono no válido. Verifique haber ingresado el
código de país o de área correcto.
+ format_length:
+ six: seis
+ ten: diez
format_type:
character: carácter
digit: dígito
diff --git a/config/locales/telephony/fr.yml b/config/locales/telephony/fr.yml
index 41b46b14f3b..3075cd54a03 100644
--- a/config/locales/telephony/fr.yml
+++ b/config/locales/telephony/fr.yml
@@ -25,8 +25,8 @@ fr:
%{app_name} : Votre code à usage unique est %{code}. Il expire dans %{expiration} minutes. Ne partagez ce code avec personne.
@%{domain} #%{code}
- voice: Bonjour ! Votre code à usage unique de six %{format_type} pour
- %{app_name} est %{code}. Votre code à usage unique est %{code}. De
+ voice: Bonjour ! Votre code à usage unique de %{format_length} %{format_type}
+ pour %{app_name} est %{code}. Votre code à usage unique est %{code}. De
nouveau, votre code à usage unique est %{code}. Ce code expire dans
%{expiration} minutes.
doc_auth_link: "%{app_name} : %{link} Vous êtes en train de confirmer votre
@@ -57,6 +57,9 @@ fr:
plus tard.
voice_unsupported: Numéro de téléphone non valide. Vérifiez que vous avez saisi
le bon indicatif pays ou régional.
+ format_length:
+ six: six
+ ten: dix
format_type:
character: caractère
digit: chiffre
diff --git a/config/locales/telephony/zh.yml b/config/locales/telephony/zh.yml
index bc581007251..a3754af6aab 100644
--- a/config/locales/telephony/zh.yml
+++ b/config/locales/telephony/zh.yml
@@ -19,8 +19,9 @@ zh:
%{app_name}: 你的一次性代码是 %{code}。此代码在 %{expiration} 分钟后作废。请勿与任何人分享此代码。
@%{domain} #%{code}
- voice: 你好! 你的 6-%{format_type} %{app_name} 一次性代码是 %{code}。你的一次性代码是
- ,%{code}。重复一下,你的一次性代码是 %{code}。此代码 %{expiration} 分钟后会作废。
+ voice: 你好! 你的 %{format_length}-%{format_type} %{app_name} 一次性代码是
+ %{code}。你的一次性代码是 ,%{code}。重复一下,你的一次性代码是 %{code}。此代码 %{expiration}
+ 分钟后会作废。
doc_auth_link: |-
%{app_name}: %{link} 你在验证身份以访问 %{sp_or_app_name}。拍张你身份证件的照片以继续。
error:
@@ -38,6 +39,9 @@ zh:
timeout: 服务器反应时间过长。请再试一次。
unknown_failure: 我们目前遇到技术困难。 请稍后再试。
voice_unsupported: 电话号码有误。检查一下你是否输入了正确的国家代码或区域代码。
+ format_length:
+ six: '6'
+ ten: '10'
format_type:
character: 字符
digit: 数码
diff --git a/lib/identity_config.rb b/lib/identity_config.rb
index 5dee8f89ef1..86055f454c1 100644
--- a/lib/identity_config.rb
+++ b/lib/identity_config.rb
@@ -35,6 +35,8 @@ def self.store
config.add(:aamva_supported_jurisdictions, type: :json)
config.add(:aamva_verification_request_timeout, type: :float)
config.add(:aamva_verification_url)
+ config.add(:ab_testing_idv_ten_digit_otp_enabled, type: :boolean)
+ config.add(:ab_testing_idv_ten_digit_otp_percent, type: :integer)
config.add(:account_reset_token_valid_for_days, type: :integer)
config.add(:account_reset_wait_period_days, type: :integer)
config.add(:account_reset_fraud_user_wait_period_days, type: :integer, allow_nil: true)
diff --git a/lib/telephony.rb b/lib/telephony.rb
index 5ae161b5a1e..ed0b9cdff7a 100644
--- a/lib/telephony.rb
+++ b/lib/telephony.rb
@@ -60,13 +60,14 @@ def self.send_authentication_otp(to:, otp:, expiration:, otp_format:,
).send_authentication_otp
end
- def self.send_confirmation_otp(to:, otp:, expiration:, otp_format:,
+ def self.send_confirmation_otp(to:, otp:, expiration:, otp_format:, otp_length:,
channel:, domain:, country_code:, extra_metadata:)
OtpSender.new(
to: to,
otp: otp,
expiration: expiration,
otp_format: otp_format,
+ otp_length: otp_length,
channel: channel,
domain: domain,
country_code: country_code,
diff --git a/lib/telephony/otp_sender.rb b/lib/telephony/otp_sender.rb
index cb12ee43882..7453e2be81a 100644
--- a/lib/telephony/otp_sender.rb
+++ b/lib/telephony/otp_sender.rb
@@ -2,14 +2,16 @@
module Telephony
class OtpSender
- attr_reader :recipient_phone, :otp, :expiration, :otp_format, :channel, :domain, :country_code,
- :extra_metadata
+ attr_reader :recipient_phone, :otp, :expiration, :otp_format, :otp_length, :channel,
+ :domain, :country_code, :extra_metadata
def initialize(to:, otp:, expiration:, otp_format:,
- channel:, domain:, country_code:, extra_metadata:)
+ channel:, domain:, country_code:, extra_metadata:,
+ otp_length: I18n.t('telephony.format_length.six'))
@recipient_phone = to
@otp = otp
@otp_format = otp_format
+ @otp_length = otp_length
@expiration = expiration
@channel = channel.to_sym
@domain = domain
@@ -58,6 +60,7 @@ def confirmation_message
"telephony.confirmation_otp.#{channel}",
app_name: APP_NAME,
code: otp_transformed_for_channel,
+ format_length: otp_length,
format_type: otp_format,
expiration: expiration,
domain: domain,
diff --git a/spec/controllers/idv/otp_verification_controller_spec.rb b/spec/controllers/idv/otp_verification_controller_spec.rb
index 9f11d4505bb..b4834386c63 100644
--- a/spec/controllers/idv/otp_verification_controller_spec.rb
+++ b/spec/controllers/idv/otp_verification_controller_spec.rb
@@ -9,16 +9,13 @@
let(:user_phone_confirmation) { false }
let(:phone_confirmation_otp_code) { '777777' }
let(:phone_confirmation_otp_sent_at) { Time.zone.now }
- let(:phone_confirmation_session_properties) do
- {
- code: phone_confirmation_otp_code,
- phone: phone,
- delivery_method: :sms,
- }
- end
+ let(:delivery_method) { :sms }
let(:user_phone_confirmation_session) do
Idv::PhoneConfirmationSession.new(
- **phone_confirmation_session_properties,
+ code: phone_confirmation_otp_code,
+ phone: phone,
+ delivery_method: delivery_method,
+ user: user,
sent_at: phone_confirmation_otp_sent_at,
)
end
@@ -140,13 +137,7 @@
end
context 'the user uses voice otp' do
- let(:phone_confirmation_session_properties) do
- {
- code: phone_confirmation_otp_code,
- phone: phone,
- delivery_method: :voice,
- }
- end
+ let(:delivery_method) { :voice }
it 'does not save the phone number if the feature flag is off' do
put :update, params: otp_code_param
@@ -213,15 +204,9 @@
end
context 'when the phone otp code has expired' do
- let(:expired_phone_confirmation_otp_sent_at) do
+ let(:phone_confirmation_otp_sent_at) do
# Set time to a long time ago
- phone_confirmation_otp_sent_at - 900000000
- end
- let(:user_phone_confirmation_session) do
- Idv::PhoneConfirmationSession.new(
- **phone_confirmation_session_properties,
- sent_at: expired_phone_confirmation_otp_sent_at,
- )
+ Time.zone.now - 900000000
end
it 'captures failure event' do
diff --git a/spec/controllers/idv/resend_otp_controller_spec.rb b/spec/controllers/idv/resend_otp_controller_spec.rb
index 51b922161ee..fd937efe100 100644
--- a/spec/controllers/idv/resend_otp_controller_spec.rb
+++ b/spec/controllers/idv/resend_otp_controller_spec.rb
@@ -1,7 +1,7 @@
require 'rails_helper'
RSpec.describe Idv::ResendOtpController do
- let(:user) { build(:user) }
+ let(:user) { create(:user) }
let(:phone) { '+1 (225) 555-5000' }
let(:user_phone_confirmation) { false }
@@ -10,6 +10,7 @@
Idv::PhoneConfirmationSession.start(
phone: phone,
delivery_method: delivery_method,
+ user: user,
)
end
diff --git a/spec/controllers/users/two_factor_authentication_controller_spec.rb b/spec/controllers/users/two_factor_authentication_controller_spec.rb
index e7704848410..8c0139e4cd4 100644
--- a/spec/controllers/users/two_factor_authentication_controller_spec.rb
+++ b/spec/controllers/users/two_factor_authentication_controller_spec.rb
@@ -549,6 +549,7 @@ def index
expiration: 10,
channel: :sms,
otp_format: 'digit',
+ otp_length: '6',
domain: IdentityConfig.store.domain_name,
country_code: 'US',
extra_metadata: {
diff --git a/spec/forms/idv/phone_confirmation_otp_verification_form_spec.rb b/spec/forms/idv/phone_confirmation_otp_verification_form_spec.rb
index e2bb44aa4ab..0071e983840 100644
--- a/spec/forms/idv/phone_confirmation_otp_verification_form_spec.rb
+++ b/spec/forms/idv/phone_confirmation_otp_verification_form_spec.rb
@@ -11,6 +11,7 @@
phone: phone,
sent_at: phone_confirmation_otp_sent_at,
delivery_method: :sms,
+ user: user,
)
end
let(:max_attempts) { 2 }
diff --git a/spec/i18n_spec.rb b/spec/i18n_spec.rb
index 7380a505340..991dc4143b4 100644
--- a/spec/i18n_spec.rb
+++ b/spec/i18n_spec.rb
@@ -127,6 +127,8 @@ class BaseTask
{ key: 'notices.signed_up_but_unconfirmed.resend_confirmation_email', locales: %i[zh] },
{ key: 'openid_connect.authorization.errors.no_valid_vtr', locales: %i[zh] },
{ key: 'telephony.account_deleted_notice', locales: %i[zh] },
+ { key: 'telephony.format_length.six', locales: %i[zh] },
+ { key: 'telephony.format_length.ten', locales: %i[zh] },
{ key: 'titles.idv.canceled', locales: %i[zh] },
{ key: 'titles.piv_cac_setup.upsell', locales: %i[zh] },
{ key: 'two_factor_authentication.auth_app.change_nickname', locales: %i[zh] },
diff --git a/spec/services/idv/phone_confirmation_session_spec.rb b/spec/services/idv/phone_confirmation_session_spec.rb
index 1c2ceb9d648..3b883084853 100644
--- a/spec/services/idv/phone_confirmation_session_spec.rb
+++ b/spec/services/idv/phone_confirmation_session_spec.rb
@@ -1,14 +1,19 @@
require 'rails_helper'
RSpec.describe Idv::PhoneConfirmationSession do
+ let(:user) { create(:user) }
+ let(:six_char_alphanumeric) { /[a-z0-9]{6}/i }
+ let(:ten_digit_numeric) { /[0-9]{10}/i }
+
describe '.start' do
it 'starts a session for voice' do
result = described_class.start(
delivery_method: 'voice',
phone: '+1 (202) 123-4567',
+ user: user,
)
- expect(result.code).to match(/[a-z0-9]{6}/i)
+ expect(result.code).to match(six_char_alphanumeric)
expect(result.phone).to eq('+1 (202) 123-4567')
expect(result.sent_at).to be_within(1.second).of(Time.zone.now)
expect(result.delivery_method).to eq(:voice)
@@ -20,9 +25,10 @@
result = described_class.start(
delivery_method: 'sms',
phone: '+1 (202) 123-4567',
+ user: user,
)
- expect(result.code).to match(/[a-z0-9]{6}/i)
+ expect(result.code).to match(six_char_alphanumeric)
expect(result.phone).to eq('+1 (202) 123-4567')
expect(result.sent_at).to be_within(1.second).of(Time.zone.now)
expect(result.delivery_method).to eq(:sms)
@@ -31,11 +37,73 @@
end
end
+ describe '.generate_code' do
+ let(:ab_test_enabled) { false }
+ before do
+ allow(IdentityConfig.store).to receive(:ab_testing_idv_ten_digit_otp_enabled).
+ and_return(ab_test_enabled)
+ end
+
+ context 'A/B test not enabled' do
+ it 'generates a six-character alphanumeric code' do
+ code = described_class.generate_code(user: user, delivery_method: :voice)
+
+ expect(code).to match(six_char_alphanumeric)
+ end
+ end
+ context '10-digit A/B test enabled' do
+ let(:ab_test_enabled) { true }
+
+ context '10-digit A/B test puts user in :six_alphanumeric_otp bucket' do
+ before do
+ stub_const(
+ 'AbTests::IDV_TEN_DIGIT_OTP',
+ FakeAbTestBucket.new.tap { |ab| ab.assign(user.uuid => :six_alphanumeric_otp) },
+ )
+ end
+
+ it 'generates a six-character alphanumeric code for sms' do
+ code = described_class.generate_code(user: user, delivery_method: :sms)
+
+ expect(code).to match(six_char_alphanumeric)
+ end
+
+ it 'generates a six-character alphanumeric code for voice' do
+ code = described_class.generate_code(user: user, delivery_method: :voice)
+
+ expect(code).to match(six_char_alphanumeric)
+ end
+ end
+
+ context '10-digit A/B test puts user in :ten_digit_otp bucket' do
+ before do
+ stub_const(
+ 'AbTests::IDV_TEN_DIGIT_OTP',
+ FakeAbTestBucket.new.tap { |ab| ab.assign(user.uuid => :ten_digit_otp) },
+ )
+ end
+
+ it 'generates a six-character alphanumeric code for sms' do
+ code = described_class.generate_code(user: user, delivery_method: :sms)
+
+ expect(code).to match(six_char_alphanumeric)
+ end
+
+ it 'generates a ten-digit numeric code for voice' do
+ code = described_class.generate_code(user: user, delivery_method: :voice)
+
+ expect(code).to match(ten_digit_numeric)
+ end
+ end
+ end
+ end
+
describe '#regenerate_otp' do
it 'returns a copy with a new OTP and expiration' do
original_session = described_class.start(
delivery_method: 'sms',
phone: '+1 (202) 123-4567',
+ user: user,
)
new_session = original_session.regenerate_otp
@@ -57,6 +125,7 @@
phone: '+1 (202) 123-4567',
sent_at: Time.zone.now,
delivery_method: :sms,
+ user: user,
)
end
@@ -94,7 +163,11 @@
describe '#expired?' do
it 'returns false if the OTP is not expired' do
- otp_object = described_class.start(phone: '+1 (225) 123-4567', delivery_method: :sms)
+ otp_object = described_class.start(
+ phone: '+1 (225) 123-4567',
+ delivery_method: :sms,
+ user: user,
+ )
expect(otp_object.expired?).to eq(false)
@@ -104,11 +177,36 @@
end
it 'returns true if the OTP is expired' do
- otp_object = described_class.start(phone: '+1 (225) 123-4567', delivery_method: :sms)
+ otp_object = described_class.start(
+ phone: '+1 (225) 123-4567',
+ delivery_method: :sms,
+ user: user,
+ )
travel_to 11.minutes.from_now do
expect(otp_object.expired?).to eq(true)
end
end
end
+
+ describe '#to_h and .from_h' do
+ let(:test_session) do
+ described_class.new(
+ code: 'ABC',
+ phone: '4105551212',
+ sent_at: Time.zone.now,
+ delivery_method: :sms,
+ user: user,
+ )
+ end
+
+ it 'correctly restores the phone confirmation session from hash' do
+ deserialized_session = described_class.from_h(test_session.to_h)
+ expect(deserialized_session.code).to eq(test_session.code)
+ expect(deserialized_session.phone).to eq(test_session.phone)
+ expect(deserialized_session.sent_at).to be_within(1).of(test_session.sent_at)
+ expect(deserialized_session.delivery_method).to eq(test_session.delivery_method)
+ expect(deserialized_session.user.id).to eq(user.id)
+ end
+ end
end
diff --git a/spec/services/idv/send_phone_confirmation_otp_spec.rb b/spec/services/idv/send_phone_confirmation_otp_spec.rb
index 4fd7b6dc590..78d10f72e1e 100644
--- a/spec/services/idv/send_phone_confirmation_otp_spec.rb
+++ b/spec/services/idv/send_phone_confirmation_otp_spec.rb
@@ -11,6 +11,7 @@
phone: phone,
sent_at: Time.zone.now,
delivery_method: delivery_preference,
+ user: user,
)
end
let(:idv_session) do
@@ -60,6 +61,7 @@
expiration: 10,
channel: :sms,
otp_format: 'character',
+ otp_length: '6',
domain: IdentityConfig.store.domain_name,
country_code: 'US',
extra_metadata: {
@@ -93,6 +95,7 @@
expiration: 10,
channel: :voice,
otp_format: 'character',
+ otp_length: '6',
domain: IdentityConfig.store.domain_name,
country_code: 'US',
extra_metadata: {