Skip to content

Commit b66353a

Browse files
feat: tranlate devise to pt-BR (#290)
* tranlate devise to pt * set pt-BR as fallback for en in i18n settings * file created for config * Added gem devise-i18n and config to use English translation in tests
1 parent 9cfeab6 commit b66353a

File tree

10 files changed

+192
-1
lines changed

10 files changed

+192
-1
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ gem "bootsnap", "1.18.3", require: false
2323
gem "devise", "4.9.4"
2424
# devise-api authenticate API requests [https://github.com/nejdetkadir/devise-api]
2525
gem "devise-api", github: "nejdetkadir/devise-api", branch: "main"
26+
# Add devise-i18n for automatic translation of Devise views and messages
27+
gem "devise-i18n", "~> 1.10"
2628
# Enumerations for Ruby with some magic powers!
2729
gem "enumerate_it", "4.0.0"
2830
# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]

Gemfile.lock

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@ GEM
153153
railties (>= 4.1.0)
154154
responders
155155
warden (~> 1.2.3)
156+
devise-i18n (1.13.0)
157+
devise (>= 4.9.0)
158+
rails-i18n
156159
diff-lcs (1.5.1)
157160
docile (1.4.0)
158161
dotenv (3.1.2)
@@ -403,6 +406,9 @@ GEM
403406
rails-html-sanitizer (1.6.0)
404407
loofah (~> 2.21)
405408
nokogiri (~> 1.14)
409+
rails-i18n (7.0.10)
410+
i18n (>= 0.7, < 2)
411+
railties (>= 6.0.0, < 8)
406412
railties (7.1.3.4)
407413
actionpack (= 7.1.3.4)
408414
activesupport (= 7.1.3.4)
@@ -589,6 +595,7 @@ DEPENDENCIES
589595
debug (= 1.9.2)
590596
devise (= 4.9.4)
591597
devise-api!
598+
devise-i18n (~> 1.10)
592599
dotenv-rails (= 3.1.2)
593600
enumerate_it (= 4.0.0)
594601
factory_bot_rails (= 6.4.3)

config/initializers/i18n.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# frozen_string_literal: true
2+
3+
I18n.load_path += Rails.root.glob("/config/locales/**/*.{rb,yml}")
4+
I18n.available_locales = %i[pt-BR en]
5+
I18n.default_locale = :"pt-BR"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ en:
2828
password_change:
2929
subject: "Password Changed"
3030
omniauth_callbacks:
31-
failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
31+
failure: 'Could not authenticate you from %{kind} because "%{reason}".'
3232
success: "Successfully authenticated from %{kind} account."
3333
passwords:
3434
no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."

config/locales/pt-BR/devise.yml

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
pt-BR:
2+
activerecord:
3+
attributes:
4+
user:
5+
confirmation_sent_at: Confirmação enviada em
6+
confirmation_token: Token de confirmação
7+
confirmed_at: Confirmado em
8+
created_at: Criado em
9+
current_password: Senha atual
10+
current_sign_in_at: Atualmente logado em
11+
current_sign_in_ip: IP do acesso atual
12+
email: E-mail
13+
encrypted_password: Senha criptografada
14+
failed_attempts: Tentativas sem sucesso
15+
last_sign_in_at: Último acesso em
16+
last_sign_in_ip: Último IP de acesso
17+
locked_at: Bloqueado em
18+
password: Senha
19+
password_confirmation: Confirme sua senha
20+
remember_created_at: Lembrar criado em
21+
remember_me: Lembre-se de mim
22+
reset_password_sent_at: Resetar senha enviado em
23+
reset_password_token: Resetar token de senha
24+
sign_in_count: Contagem de acessos
25+
unconfirmed_email: E-mail não confirmado
26+
unlock_token: Token de desbloqueio
27+
updated_at: Atualizado em
28+
models:
29+
user:
30+
one: Usuário
31+
other: Usuários
32+
devise:
33+
confirmations:
34+
confirmed: A sua conta foi confirmada com sucesso.
35+
new:
36+
resend_confirmation_instructions: Reenviar instruções de confirmação
37+
send_instructions: Dentro de minutos, você receberá um email com as instruções de confirmação da sua conta.
38+
send_paranoid_instructions: Se o seu e-mail existir em nosso banco de dados, você receberá um email com instruções sobre como confirmar sua conta em alguns minutos.
39+
failure:
40+
already_authenticated: Você já está autenticado.
41+
inactive: A sua conta ainda não foi ativada.
42+
invalid: "%{authentication_keys} ou senha inválidos."
43+
last_attempt: Você tem mais uma única tentativa antes de sua conta ser bloqueada.
44+
locked: A sua conta está bloqueada.
45+
not_found_in_database: "%{authentication_keys} ou senha inválidos."
46+
timeout: A sua sessão expirou, por favor, faça login novamente para continuar.
47+
unauthenticated: Para continuar, faça login ou registre-se.
48+
unconfirmed: Antes de continuar, confirme a sua conta.
49+
mailer:
50+
confirmation_instructions:
51+
action: Confirmar minha conta
52+
greeting: Bem-vindo %{recipient}!
53+
instruction: "Você pode confirmar sua conta através do link abaixo:"
54+
subject: Instruções de confirmação
55+
email_changed:
56+
greeting: Olá %{recipient}!
57+
message: Estamos entrando em contato para notificá-lo de que seu e-mail está sendo alterado para %{email}.
58+
message_unconfirmed: Estamos entrando em contato para notificá-lo de que seu e-mail está sendo alterado para %{email}.
59+
subject: E-mail alterado
60+
password_change:
61+
greeting: Olá %{recipient}!
62+
message: Estamos entrando em contato para notificá-lo de que sua senha foi alterada.
63+
subject: Senha alterada
64+
reset_password_instructions:
65+
action: Redefinir minha senha
66+
greeting: Olá %{recipient}!
67+
instruction: Alguém fez o pedido para redefinir sua senha, e você pode fazer isso clicando no link abaixo.
68+
instruction_2: Se você não fez este pedido, por favor ignore este e-mail.
69+
instruction_3: Sua senha não será alterada até que você acesse o link acima e crie uma nova.
70+
subject: Instruções de redefinição de senha
71+
unlock_instructions:
72+
action: Desbloquear minha conta
73+
greeting: Olá %{recipient}!
74+
instruction: "Clique no link abaixo para desbloquear sua conta:"
75+
message: Sua conta foi bloqueada devido ao excessivo número de tentativas acesso inválidas.
76+
subject: Instruções de desbloqueio
77+
omniauth_callbacks:
78+
failure: Não foi possível autorizar de uma conta de %{kind} porque "%{reason}".
79+
success: Autorizado com sucesso de uma conta de %{kind}.
80+
passwords:
81+
edit:
82+
change_my_password: Alterar minha senha
83+
change_your_password: Alterar sua senha
84+
confirm_new_password: Confirme sua nova senha
85+
new_password: Nova senha
86+
new:
87+
forgot_your_password: Esqueceu sua senha?
88+
send_me_reset_password_instructions: Enviar instruções para redefinição da senha
89+
no_token: Você não pode acessar esta página sem estar logado. Se você veio de um email de redefinição de senha, por favor certifique-se de ter digitado a URL corretamente.
90+
send_instructions: Dentro de minutos, você receberá um e-mail com as instruções de redefinição da sua senha.
91+
send_paranoid_instructions: Se o seu email existir em nosso banco de dados, você receberá um email com um link para recuperação da senha.
92+
updated: A sua senha foi alterada com sucesso. Você está autenticado.
93+
updated_not_active: Sua senha foi alterada com sucesso.
94+
registrations:
95+
destroyed: Adeus! A sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve.
96+
edit:
97+
are_you_sure: Você tem certeza?
98+
cancel_my_account: Cancelar minha conta
99+
currently_waiting_confirmation_for_email: "No momento esperando por: %{email}"
100+
leave_blank_if_you_don_t_want_to_change_it: deixe em branco caso não queira alterá-la
101+
title: Editar %{resource}
102+
unhappy: Não está contente?
103+
update: Atualizar
104+
we_need_your_current_password_to_confirm_your_changes: precisamos da sua senha atual para confirmar suas mudanças
105+
new:
106+
sign_up: Inscrever-se
107+
signed_up: Bem vindo! Você realizou seu registro com sucesso.
108+
signed_up_but_inactive: Você se inscreveu com sucesso, porém nós não podemos autenticá-lo porque sua conta ainda não foi ativada.
109+
signed_up_but_locked: Você se inscreveu com sucesso. Porém nós não podemos autenticá-lo porque sua conta está bloqueada.
110+
signed_up_but_unconfirmed: Uma mensagem com um link de confirmação foi enviada para o seu e-mail. Por favor, acesse o link para ativar sua conta.
111+
update_needs_confirmation: Sua conta foi atualizada com sucesso, mas nós precisamos verificar o novo endereço de email. Por favor, verifique seu e-mail e clique no link de confirmação para finalizar confirmando o seu novo e-mail.
112+
updated: A sua conta foi atualizada com sucesso.
113+
updated_but_not_signed_in: Sua conta foi atualizada com sucesso, uma vez que sua senha foi alterada será necessário realizar o login novamente.
114+
sessions:
115+
already_signed_out: Logout efetuado com sucesso.
116+
new:
117+
sign_in: Login
118+
signed_in: Login efetuado com sucesso.
119+
signed_out: Logout efetuado com sucesso.
120+
shared:
121+
links:
122+
back: Voltar
123+
didn_t_receive_confirmation_instructions: Não recebeu instruções de confirmação?
124+
didn_t_receive_unlock_instructions: Não recebeu instruções de desbloqueio?
125+
forgot_your_password: Esqueceu sua senha?
126+
sign_in: Login
127+
sign_in_with_provider: Entrar com %{provider}
128+
sign_up: Inscrever-se
129+
minimum_password_length:
130+
one: "(Mínimo de %{count} caractere)"
131+
other: "(Mínimo de %{count} caracteres)"
132+
unlocks:
133+
new:
134+
resend_unlock_instructions: Reenviar instruções de desbloqueio
135+
send_instructions: Dentro de minutos, você receberá um e-mail com instruções de desbloqueio da sua conta.
136+
send_paranoid_instructions: Se sua conta existir em nosso banco de dados, você receberá em breve um e-mail com instruções para desbloquear ela.
137+
unlocked: A sua conta foi desbloqueada com sucesso. Efetue login para continuar.
138+
errors:
139+
messages:
140+
already_confirmed: já foi confirmado
141+
confirmation_period_expired: É necessário ser confirmado dentro do período %{period}, por favor requisite um novo usuário.
142+
expired: expirou, por favor solicite uma nova
143+
not_found: não encontrado
144+
not_locked: não foi bloqueado
145+
not_saved:
146+
one: "Não foi possível salvar %{resource}: 1 erro"
147+
other: "Não foi possível salvar %{resource}: %{count} erros."
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
pt-BR:
2+
devise:
3+
api:
4+
error_response:
5+
invalid_authentication: "E-mail ou senha inválidos"
6+
invalid_token: "Token inválido"
7+
expired_token: "O token expirou"
8+
expired_refresh_token: "O token de atualização expirou"
9+
revoked_token: "O token foi revogado"
10+
refresh_token_disabled: "O token de atualização está desabilitado para esta aplicação"
11+
sign_up_disabled: "O cadastro está desabilitado para esta aplicação"
12+
invalid_refresh_token: "Token de atualização inválido"
13+
invalid_email: "E-mail inválido"
14+
invalid_resource_owner: "Usuário inválido"
15+
resource_owner_create_error: "Não foi possível criar o usuário"
16+
devise_api_token_create_error: "Não foi possível criar o token"
17+
devise_api_token_revoke_error: "Não foi possível revogar o token"
18+
lockable:
19+
locked: "Sua conta está bloqueada"
20+
confirmable:
21+
unconfirmed: "Você precisa confirmar sua conta antes de continuar"
22+
registerable:
23+
signed_up_but_unconfirmed: "Uma mensagem com o link de confirmação foi enviada para o seu e-mail. Por favor, siga o link para ativar sua conta"

spec/rails_helper.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@
4646
# You can uncomment this line to turn off ActiveRecord support entirely.
4747
# config.use_active_record = false
4848

49+
# Config for run test translated to english
50+
config.around do |example|
51+
I18n.with_locale(:en) do
52+
example.run
53+
end
54+
end
55+
4956
# RSpec Rails can automatically mix in different behaviours to your tests
5057
# based on their file location, for example enabling you to call `get` and
5158
# `post` in specs under `spec/controllers`.

0 commit comments

Comments
 (0)