devise_invitable 1.7.5 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of devise_invitable might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.rdoc +98 -111
- data/app/controllers/devise/invitations_controller.rb +41 -40
- data/app/controllers/devise_invitable/registrations_controller.rb +11 -11
- data/app/views/devise/invitations/edit.html.erb +14 -8
- data/app/views/devise/invitations/new.html.erb +11 -7
- data/app/views/devise/mailer/invitation_instructions.html.erb +1 -1
- data/app/views/devise/mailer/invitation_instructions.text.erb +1 -1
- data/config/locales/ar.yml +23 -0
- data/config/locales/da.yml +41 -0
- data/config/locales/de.yml +31 -0
- data/config/locales/es.yml +31 -0
- data/config/locales/et.yml +23 -0
- data/config/locales/fa.yml +31 -0
- data/config/locales/fr.yml +34 -0
- data/config/locales/it.yml +31 -0
- data/config/locales/ja.yml +31 -0
- data/config/locales/ko.yml +24 -0
- data/config/locales/nl.yml +32 -0
- data/config/locales/no.yml +17 -0
- data/config/locales/pl.yml +31 -0
- data/config/locales/pt-BR.yml +23 -0
- data/config/locales/pt.yml +23 -0
- data/config/locales/ru.yml +23 -0
- data/config/locales/tr.yml +24 -0
- data/config/locales/ua.yml +31 -0
- data/config/locales/vi.yml +25 -0
- data/config/locales/zh-HK.yml +31 -0
- data/config/locales/zh-TW.yml +31 -0
- data/lib/devise_invitable.rb +5 -4
- data/lib/devise_invitable/controllers/helpers.rb +3 -4
- data/lib/devise_invitable/inviter.rb +4 -3
- data/lib/devise_invitable/mailer.rb +1 -1
- data/lib/devise_invitable/mapping.rb +6 -5
- data/lib/devise_invitable/models.rb +29 -27
- data/lib/devise_invitable/models/authenticatable.rb +7 -1
- data/lib/devise_invitable/parameter_sanitizer.rb +18 -18
- data/lib/devise_invitable/routes.rb +5 -5
- data/lib/devise_invitable/version.rb +1 -1
- data/lib/generators/active_record/devise_invitable_generator.rb +3 -3
- data/lib/generators/active_record/templates/migration.rb +0 -1
- data/lib/generators/devise_invitable/devise_invitable_generator.rb +4 -8
- data/lib/generators/devise_invitable/install_generator.rb +11 -14
- data/lib/generators/devise_invitable/templates/simple_form_for/invitations/edit.html.erb +10 -6
- data/lib/generators/devise_invitable/templates/simple_form_for/invitations/new.html.erb +10 -6
- data/lib/generators/devise_invitable/views_generator.rb +6 -6
- data/test/functional/registrations_controller_test.rb +24 -25
- data/test/generators/views_generator_test.rb +7 -6
- data/test/generators_test.rb +3 -2
- data/test/integration/invitation_remove_test.rb +8 -8
- data/test/integration/invitation_test.rb +46 -46
- data/test/integration_tests_helper.rb +8 -9
- data/test/model_tests_helper.rb +5 -5
- data/test/models/invitable_test.rb +126 -110
- data/test/models_test.rb +3 -3
- data/test/orm/active_record.rb +2 -2
- data/test/orm/mongoid.rb +2 -2
- data/test/rails_app/app/controllers/admins_controller.rb +4 -3
- data/test/rails_app/app/controllers/application_controller.rb +11 -10
- data/test/rails_app/app/controllers/free_invitations_controller.rb +12 -9
- data/test/rails_app/app/controllers/users_controller.rb +2 -2
- data/test/rails_app/app/models/admin.rb +7 -10
- data/test/rails_app/app/models/octopussy.rb +4 -4
- data/test/rails_app/app/models/user.rb +20 -20
- data/test/rails_app/app/views/admins/new.html.erb +9 -5
- data/test/rails_app/app/views/devise/sessions/new.html.erb +14 -6
- data/test/rails_app/app/views/free_invitations/new.html.erb +9 -5
- data/test/rails_app/app/views/layouts/application.html.erb +3 -4
- data/test/rails_app/app/views/users/invitations/new.html.erb +15 -9
- data/test/rails_app/config/application.rb +6 -6
- data/test/rails_app/config/boot.rb +2 -2
- data/test/rails_app/config/credentials.yml.enc +1 -0
- data/test/rails_app/config/initializers/devise.rb +4 -3
- data/test/rails_app/config/initializers/secret_token.rb +3 -1
- data/test/rails_app/config/initializers/session_store.rb +1 -1
- data/test/rails_app/config/initializers/wrap_parameters.rb +1 -1
- data/test/rails_app/config/master.key +1 -0
- data/test/rails_app/config/routes.rb +3 -3
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -2
- data/test/routes_test.rb +4 -4
- data/test/test_helper.rb +6 -19
- metadata +46 -22
@@ -1,8 +1,8 @@
|
|
1
1
|
class Devise::InvitationsController < DeviseController
|
2
|
-
prepend_before_action :authenticate_inviter!, :
|
3
|
-
prepend_before_action :has_invitations_left?, :
|
4
|
-
prepend_before_action :require_no_authentication, :
|
5
|
-
prepend_before_action :resource_from_invitation_token, :
|
2
|
+
prepend_before_action :authenticate_inviter!, only: [:new, :create]
|
3
|
+
prepend_before_action :has_invitations_left?, only: [:create]
|
4
|
+
prepend_before_action :require_no_authentication, only: [:edit, :update, :destroy]
|
5
|
+
prepend_before_action :resource_from_invitation_token, only: [:edit, :destroy]
|
6
6
|
|
7
7
|
if respond_to? :helper_method
|
8
8
|
helper_method :after_sign_in_path_for
|
@@ -23,12 +23,12 @@ class Devise::InvitationsController < DeviseController
|
|
23
23
|
|
24
24
|
if resource_invited
|
25
25
|
if is_flashing_format? && self.resource.invitation_sent_at
|
26
|
-
set_flash_message :notice, :send_instructions, :
|
26
|
+
set_flash_message :notice, :send_instructions, email: self.resource.email
|
27
27
|
end
|
28
28
|
if self.method(:after_invite_path_for).arity == 1
|
29
|
-
respond_with resource, :
|
29
|
+
respond_with resource, location: after_invite_path_for(current_inviter)
|
30
30
|
else
|
31
|
-
respond_with resource, :
|
31
|
+
respond_with resource, location: after_invite_path_for(current_inviter, resource)
|
32
32
|
end
|
33
33
|
else
|
34
34
|
respond_with_navigational(resource) { render :new }
|
@@ -51,18 +51,19 @@ class Devise::InvitationsController < DeviseController
|
|
51
51
|
yield resource if block_given?
|
52
52
|
|
53
53
|
if invitation_accepted
|
54
|
-
if
|
54
|
+
if resource.class.allow_insecure_sign_in_after_accept
|
55
55
|
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
|
56
56
|
set_flash_message :notice, flash_message if is_flashing_format?
|
57
|
+
resource.after_database_authentication
|
57
58
|
sign_in(resource_name, resource)
|
58
|
-
respond_with resource, :
|
59
|
+
respond_with resource, location: after_accept_path_for(resource)
|
59
60
|
else
|
60
61
|
set_flash_message :notice, :updated_not_active if is_flashing_format?
|
61
|
-
respond_with resource, :
|
62
|
+
respond_with resource, location: new_session_path(resource_name)
|
62
63
|
end
|
63
64
|
else
|
64
65
|
resource.invitation_token = raw_invitation_token
|
65
|
-
respond_with_navigational(resource){ render :edit }
|
66
|
+
respond_with_navigational(resource) { render :edit }
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
@@ -75,42 +76,42 @@ class Devise::InvitationsController < DeviseController
|
|
75
76
|
|
76
77
|
protected
|
77
78
|
|
78
|
-
|
79
|
-
|
80
|
-
|
79
|
+
def invite_resource(&block)
|
80
|
+
resource_class.invite!(invite_params, current_inviter, &block)
|
81
|
+
end
|
81
82
|
|
82
|
-
|
83
|
-
|
84
|
-
|
83
|
+
def accept_resource
|
84
|
+
resource_class.accept_invitation!(update_resource_params)
|
85
|
+
end
|
85
86
|
|
86
|
-
|
87
|
-
|
88
|
-
|
87
|
+
def current_inviter
|
88
|
+
authenticate_inviter!
|
89
|
+
end
|
89
90
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
91
|
+
def has_invitations_left?
|
92
|
+
unless current_inviter.nil? || current_inviter.has_invitations_left?
|
93
|
+
self.resource = resource_class.new
|
94
|
+
set_flash_message :alert, :no_invitations_remaining if is_flashing_format?
|
95
|
+
respond_with_navigational(resource) { render :new }
|
96
|
+
end
|
95
97
|
end
|
96
|
-
end
|
97
98
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
99
|
+
def resource_from_invitation_token
|
100
|
+
unless params[:invitation_token] && self.resource = resource_class.find_by_invitation_token(params[:invitation_token], true)
|
101
|
+
set_flash_message(:alert, :invitation_token_invalid) if is_flashing_format?
|
102
|
+
redirect_to after_sign_out_path_for(resource_name)
|
103
|
+
end
|
102
104
|
end
|
103
|
-
end
|
104
105
|
|
105
|
-
|
106
|
-
|
107
|
-
|
106
|
+
def invite_params
|
107
|
+
devise_parameter_sanitizer.sanitize(:invite)
|
108
|
+
end
|
108
109
|
|
109
|
-
|
110
|
-
|
111
|
-
|
110
|
+
def update_resource_params
|
111
|
+
devise_parameter_sanitizer.sanitize(:accept_invitation)
|
112
|
+
end
|
112
113
|
|
113
|
-
|
114
|
-
|
115
|
-
|
114
|
+
def translation_scope
|
115
|
+
'devise.invitations'
|
116
|
+
end
|
116
117
|
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
class DeviseInvitable::RegistrationsController < Devise::RegistrationsController
|
2
2
|
protected
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
def build_resource(hash = {})
|
5
|
+
if hash[:email]
|
6
|
+
self.resource = resource_class.where(email: hash[:email]).first
|
7
|
+
if self.resource && self.resource.respond_to?(:invited_to_sign_up?) && self.resource.invited_to_sign_up?
|
8
|
+
self.resource.attributes = hash
|
9
|
+
self.resource.send_confirmation_instructions if self.resource.confirmation_required_for_invited?
|
10
|
+
self.resource.accept_invitation
|
11
|
+
else
|
12
|
+
self.resource = nil
|
13
|
+
end
|
13
14
|
end
|
15
|
+
self.resource ||= super
|
14
16
|
end
|
15
|
-
self.resource ||= super
|
16
|
-
end
|
17
17
|
end
|
@@ -1,16 +1,22 @@
|
|
1
|
-
<h2><%= t
|
1
|
+
<h2><%= t "devise.invitations.edit.header" %></h2>
|
2
2
|
|
3
|
-
<%= form_for
|
4
|
-
<%=
|
3
|
+
<%= form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :put }) do |f| %>
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
<%= f.hidden_field :invitation_token, readonly: true %>
|
6
6
|
|
7
7
|
<% if f.object.class.require_password_on_accepting %>
|
8
|
-
|
9
|
-
|
8
|
+
<div class="field">
|
9
|
+
<%= f.label :password %><br />
|
10
|
+
<%= f.password_field :password %>
|
11
|
+
</div>
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
<div class="field">
|
14
|
+
<%= f.label :password_confirmation %><br />
|
15
|
+
<%= f.password_field :password_confirmation %>
|
16
|
+
</div>
|
13
17
|
<% end %>
|
14
18
|
|
15
|
-
<
|
19
|
+
<div class="actions">
|
20
|
+
<%= f.submit t("devise.invitations.edit.submit_button") %>
|
21
|
+
</div>
|
16
22
|
<% end %>
|
@@ -1,12 +1,16 @@
|
|
1
1
|
<h2><%= t "devise.invitations.new.header" %></h2>
|
2
2
|
|
3
|
-
<%= form_for
|
4
|
-
<%=
|
3
|
+
<%= form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %>
|
4
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
5
5
|
|
6
|
-
<% resource.class.invite_key_fields.each do |field| -%>
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
<% resource.class.invite_key_fields.each do |field| -%>
|
7
|
+
<div class="field">
|
8
|
+
<%= f.label field %><br />
|
9
|
+
<%= f.text_field field %>
|
10
|
+
</div>
|
11
|
+
<% end -%>
|
10
12
|
|
11
|
-
<
|
13
|
+
<div class="actions">
|
14
|
+
<%= f.submit t("devise.invitations.new.submit_button") %>
|
15
|
+
</div>
|
12
16
|
<% end %>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<p><%= t("devise.mailer.invitation_instructions.someone_invited_you", url: root_url) %></p>
|
4
4
|
|
5
|
-
<p><%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, :
|
5
|
+
<p><%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token) %></p>
|
6
6
|
|
7
7
|
<% if @resource.invitation_due_at %>
|
8
8
|
<p><%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :'devise.mailer.invitation_instructions.accept_until_format')) %></p>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<%= t("devise.mailer.invitation_instructions.someone_invited_you", url: root_url) %>
|
4
4
|
|
5
|
-
<%= accept_invitation_url(@resource, :
|
5
|
+
<%= accept_invitation_url(@resource, invitation_token: @token) %>
|
6
6
|
|
7
7
|
<% if @resource.invitation_due_at %>
|
8
8
|
<%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :'devise.mailer.invitation_instructions.accept_until_format')) %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
ar:
|
2
|
+
devise:
|
3
|
+
failure:
|
4
|
+
invited: 'لديك دعوة معلّقة، يجب عليك قبولها للإنتهاء من إنشاء حسابك.'
|
5
|
+
invitations:
|
6
|
+
send_instructions: 'تم إرسال الدعوة إلى البريد الإلكتروني %{email}.'
|
7
|
+
invitation_token_invalid: 'كود الدعوة غير صحيح'
|
8
|
+
updated: 'تم تحديد كلمة المرور الخاص بك، انت الآن مسجل دخول.'
|
9
|
+
no_invitations_remaining: "لم يبق لديك دعوات"
|
10
|
+
invitation_removed: 'تم حذف دعوتك.'
|
11
|
+
new:
|
12
|
+
header: "ارسال الدعوة"
|
13
|
+
submit_button: "ارسل الدعوة"
|
14
|
+
edit:
|
15
|
+
header: "تحديد كلمة المرور"
|
16
|
+
submit_button: "حدد كلمة المرور"
|
17
|
+
mailer:
|
18
|
+
invitation_instructions:
|
19
|
+
subject: 'تعليمات الدعوة'
|
20
|
+
hello: 'مرحبا %{email}'
|
21
|
+
someone_invited_you: 'تم إرسال دعوة لك إلى %{url}, يمكنك الموافقة من خلال الرابط في الأسفل'
|
22
|
+
accept: 'قبول الدعوة'
|
23
|
+
ignore: "إذا كنت لا تريد قبول الدعوة، الرجاء تجاهل هذا البريد.<br />لن يتم إنشاء حساب خاص بك إلا إذا دخلت على الرابط أعلاه وحددت كلمة مرور خاص بك."
|
@@ -0,0 +1,41 @@
|
|
1
|
+
da:
|
2
|
+
activerecord:
|
3
|
+
attributes:
|
4
|
+
user:
|
5
|
+
invitation_token: Invitationsnøgle
|
6
|
+
invitation_created_at: Invitation oprettet
|
7
|
+
invitation_sent_at: Invitation sendt
|
8
|
+
invitation_accepted_at: Invitation accepteret
|
9
|
+
invitation_limit: Invitationsbegrænsning
|
10
|
+
invited_by: Inviteret af
|
11
|
+
invitations_count: Antal invitationer
|
12
|
+
devise:
|
13
|
+
failure:
|
14
|
+
invited: "Du har allerede en ventende invitation, som du bedes acceptere for at oprette en konto."
|
15
|
+
invitations:
|
16
|
+
send_instructions: "Der er sendt en invitationsmail til %{email}."
|
17
|
+
invitation_token_invalid: "Den angivne invitationsnøgle er ikke gyldig."
|
18
|
+
updated: "Din adgangskode er gemt, og du er nu logget ind."
|
19
|
+
updated_not_active: "Din adgangskode er gemt, og du kan nu logge ind på din konto."
|
20
|
+
no_invitations_remaining: "Ikke flere invitationer tilbage"
|
21
|
+
invitation_removed: "Din invitation er blevet fjernet."
|
22
|
+
new:
|
23
|
+
header: "Send en invitation"
|
24
|
+
submit_button: "Send mail"
|
25
|
+
edit:
|
26
|
+
header: "Vælg din adgangskode"
|
27
|
+
submit_button: "Gem adgangskode"
|
28
|
+
mailer:
|
29
|
+
invitation_instructions:
|
30
|
+
subject: "Invitation til at oprette en konto"
|
31
|
+
hello: "Hej %{email}"
|
32
|
+
someone_invited_you: "Du er blevet inviteret til at oprette en konto på %{url}, og du kan gøre det via linket herunder."
|
33
|
+
accept: "Accepter invitation"
|
34
|
+
accept_until: "Invitation gælder indtil %{due_date}."
|
35
|
+
ignore: "Hvis du ikke vil tage imod invitationen om at oprette en konto, kan du blot ignorere denne mail.<br />\nDer vil ikke blive oprettet nogen konto, medmindre du følger linket herover og derefter opretter en adgangskode."
|
36
|
+
time:
|
37
|
+
formats:
|
38
|
+
devise:
|
39
|
+
mailer:
|
40
|
+
invitation_instructions:
|
41
|
+
accept_until_format: "%e. %B %Y kl. %H.%M"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
de:
|
2
|
+
devise:
|
3
|
+
failure:
|
4
|
+
invited: "Du hast bereits eine Einladung erhalten. Nimm die Einladung an um dein Nutzerkonto zu erstellen."
|
5
|
+
invitations:
|
6
|
+
send_instructions: "Eine Einladung wurde an %{email} verschickt."
|
7
|
+
invitation_token_invalid: "Der Einladungs-Code ist ungültig!"
|
8
|
+
updated: "Dein Passwort wurde gesetzt. Du bist nun angemeldet."
|
9
|
+
updated_not_active: "Dein Passwort wurde gesetzt."
|
10
|
+
no_invitations_remaining: "Es gibt keine weiteren Einladungen"
|
11
|
+
invitation_removed: "Deine Einladung wurde gelöscht."
|
12
|
+
new:
|
13
|
+
header: "Einladung schicken"
|
14
|
+
submit_button: "Einladung schicken"
|
15
|
+
edit:
|
16
|
+
header: "Setze ein Passwort"
|
17
|
+
submit_button: "Passwort setzen"
|
18
|
+
mailer:
|
19
|
+
invitation_instructions:
|
20
|
+
subject: "Einladung"
|
21
|
+
hello: "Hallo %{email}"
|
22
|
+
someone_invited_you: "Jemand hat dich zu %{url} eingeladen. Du kannst die Einladung mit dem Link unten annehmen."
|
23
|
+
accept: "Einladung annehmen"
|
24
|
+
accept_until: "Diese Einladung ist gültig bis zum %{due_date}."
|
25
|
+
ignore: "Wenn du die Einladung nicht annehmen willst, ignoriere diese E-Mail einfach.<br />\nEs wird kein Benutzerkonto erstellt solange du nicht die Einladung mi↪ttels des Links oben annimmst."
|
26
|
+
time:
|
27
|
+
formats:
|
28
|
+
devise:
|
29
|
+
mailer:
|
30
|
+
invitation_instructions:
|
31
|
+
accept_until_format: "%d. %B %Y %H:%M"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
es:
|
2
|
+
devise:
|
3
|
+
failure:
|
4
|
+
invited: "Tienes una invitación pendiente, acéptala para acabar de crear tu cuenta."
|
5
|
+
invitations:
|
6
|
+
send_instructions: "Se ha enviado una invitación a %{email}."
|
7
|
+
invitation_token_invalid: "¡La invitación no es válida!"
|
8
|
+
updated: "Se ha configurado su contraseña y ha ingresado al sistema"
|
9
|
+
updated_not_active: "Su contraseña se ha configurado correctamente."
|
10
|
+
no_invitations_remaining: "No quedan invitaciones"
|
11
|
+
invitation_removed: "Se ha retirado su invitación"
|
12
|
+
new:
|
13
|
+
header: "Enviar Invitación"
|
14
|
+
submit_button: "Envía una invitación"
|
15
|
+
edit:
|
16
|
+
header: "Establecer contraseña"
|
17
|
+
submit_button: "Guardar mi contraseña"
|
18
|
+
mailer:
|
19
|
+
invitation_instructions:
|
20
|
+
subject: "Instruciones de la invitación"
|
21
|
+
hello: "Hola %{email}"
|
22
|
+
someone_invited_you: "Has sido invitado a %{url}, puedes aceptarlo siguiendo el siguiente enlace"
|
23
|
+
accept: "Aceptar la invitación"
|
24
|
+
accept_until: "Esta invitación expirará en %{due_date}."
|
25
|
+
ignore: "Si no le interesa esta invitación, simplemente ignore este correo. No se creará tu cuenta hasta que accedas al enlace anterior y crees una contraseña."
|
26
|
+
time:
|
27
|
+
formats:
|
28
|
+
devise:
|
29
|
+
mailer:
|
30
|
+
invitation_instructions:
|
31
|
+
accept_until_format: "%d de %B de %Y, %H:%M"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
et:
|
2
|
+
devise:
|
3
|
+
failure:
|
4
|
+
invited: 'Sul on kutse ootel - aktsepteeri, et konto loomine lõpule viia.'
|
5
|
+
invitations:
|
6
|
+
send_instructions: 'Kutse on saadetud emailile %{email}.'
|
7
|
+
invitation_token_invalid: 'Antud kutse ei ole kehtiv!'
|
8
|
+
updated: 'Sinu salasõna on edukalt sätitud. Oled nüüd sisse logitud.'
|
9
|
+
no_invitations_remaining: "Kutseid pole rohkem järgi."
|
10
|
+
invitation_removed: 'Sinu kutse eemaldati.'
|
11
|
+
new:
|
12
|
+
header: "Kutse saatmine"
|
13
|
+
submit_button: "Saada kutse"
|
14
|
+
edit:
|
15
|
+
header: "Salasõna sättimine"
|
16
|
+
submit_button: "Säti mu salasõna"
|
17
|
+
mailer:
|
18
|
+
invitation_instructions:
|
19
|
+
subject: 'Kutse juhised'
|
20
|
+
hello: 'Tere, %{email}'
|
21
|
+
someone_invited_you: 'Keegi kutsus Sind aadressile %{url}. Kutse saad vastu võtta allolevalt lingilt.'
|
22
|
+
accept: 'Võta kutse vastu'
|
23
|
+
ignore: "Kui Sa ei soovi kutset vastu võtta, siis lihtsalt ignoreeri seda emaili.<br />Sinu kontot ei looda enne, kui oled ülalolevat linki külastanud ja oma salasõna määranud."
|
@@ -0,0 +1,31 @@
|
|
1
|
+
fa:
|
2
|
+
devise:
|
3
|
+
failure:
|
4
|
+
invited: "شما یک دعوت نامه در حال انتظار دارید، با قبول آن حساب خود را بسازید."
|
5
|
+
invitations:
|
6
|
+
send_instructions: "یک ایمیل دعوت نامه به %{email} ارسال شد."
|
7
|
+
invitation_token_invalid: "کد دعوت نامه معتبر نیست!"
|
8
|
+
updated: "رمز عبور شما ذخیره شد. شما وارد سایت شدید!"
|
9
|
+
updated_not_active: "رمز عبور شما ذخیره شد."
|
10
|
+
no_invitations_remaining: "دعوت نامه ای نمانده"
|
11
|
+
invitation_removed: "دعوت نامه شما حذف شده."
|
12
|
+
new:
|
13
|
+
header: "فرستادن دعوت نامه"
|
14
|
+
submit_button: "فرستادن دعوت نامه"
|
15
|
+
edit:
|
16
|
+
header: "رمز عبور انتخاب کنید"
|
17
|
+
submit_button: "رمز عبور ذخیره کن"
|
18
|
+
mailer:
|
19
|
+
invitation_instructions:
|
20
|
+
subject: "شما دعوت شدید!"
|
21
|
+
hello: "سلام %{email}"
|
22
|
+
someone_invited_you: "شما به %{url} دعوت شدید. لینک زیر را استفاده کنید تا حساب شما فعال شود."
|
23
|
+
accept: "قبول دعوت"
|
24
|
+
accept_until: "این دعوت نامه تا تاریخ %{due_date} اعتبار دارد."
|
25
|
+
ignore: "اگر نمی خواهید این دعوت را قبول کنید, لطفا این ایمیل را نادیده بگیرید.<br />تا وقتی که بر روی لینک بالا کلیک نکنید، حساب شما ساخته نخواهد شد."
|
26
|
+
time:
|
27
|
+
formats:
|
28
|
+
devise:
|
29
|
+
mailer:
|
30
|
+
invitation_instructions:
|
31
|
+
accept_until_format: "%B %d, %Y %I:%M %p"
|
@@ -0,0 +1,34 @@
|
|
1
|
+
fr:
|
2
|
+
devise:
|
3
|
+
failure:
|
4
|
+
invited: "Vous avez une invitation en attente, acceptez-la pour terminer la création de votre compte."
|
5
|
+
invitations:
|
6
|
+
send_instructions: "Un e-mail d'invitation a été envoyé à %{email}."
|
7
|
+
invitation_token_invalid: "Le jeton d'invitation fourni n'est pas valide!"
|
8
|
+
updated: 'Votre mot de passe a été défini avec succès. Vous êtes maintenant connecté.'
|
9
|
+
updated_not_active: "Votre mot de passe a été défini avec succès."
|
10
|
+
no_invitations_remaining: "Il n'y a plus d'invitations restantes"
|
11
|
+
invitation_removed: 'Votre invitation a été supprimée.'
|
12
|
+
new:
|
13
|
+
header: Nouvel utilisateur
|
14
|
+
legend: Envoyer l’invitation
|
15
|
+
submit_button: Envoyer
|
16
|
+
edit:
|
17
|
+
header: Confirmation
|
18
|
+
submit_button: Confirmer
|
19
|
+
new_password: Mot de passe
|
20
|
+
new_password_confirmation: Confirmation du mot de passe
|
21
|
+
mailer:
|
22
|
+
invitation_instructions:
|
23
|
+
subject: 'Vous avez reçu une invitation'
|
24
|
+
hello: 'Bonjour %{email}'
|
25
|
+
someone_invited_you: "Vous avez été invité à rejoindre %{url}, vous pouvez accepter cette invitation via le lien ci-dessous."
|
26
|
+
accept: "Accepter l'invitation"
|
27
|
+
accept_until: "Cette invitation sera valable jusqu'au %{due_date}."
|
28
|
+
ignore: "Si vous ne souhaitez pas accepter cette invitation, veuillez ignorer cet e-mail.<br />Votre compte ne sera pas créé tant que vous n'accéderez pas au lien ci-dessous et que vous ayez défini votre mot de passe."
|
29
|
+
time:
|
30
|
+
formats:
|
31
|
+
devise:
|
32
|
+
mailer:
|
33
|
+
invitation_instructions:
|
34
|
+
accept_until_format: "%B %d, %Y %I:%M %p"
|