devise_invitable 1.7.5 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of devise_invitable might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -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 +28 -28
- 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 +120 -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"
|