devise_invitable 1.7.4 → 2.0.3

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.

Files changed (83) hide show
  1. checksums.yaml +5 -5
  2. data/{CHANGELOG → CHANGELOG.md} +54 -19
  3. data/README.rdoc +98 -111
  4. data/app/controllers/devise/invitations_controller.rb +41 -41
  5. data/app/controllers/devise_invitable/registrations_controller.rb +11 -11
  6. data/app/views/devise/invitations/edit.html.erb +14 -8
  7. data/app/views/devise/invitations/new.html.erb +11 -7
  8. data/app/views/devise/mailer/invitation_instructions.html.erb +2 -2
  9. data/app/views/devise/mailer/invitation_instructions.text.erb +2 -2
  10. data/config/locales/ar.yml +23 -0
  11. data/config/locales/da.yml +41 -0
  12. data/config/locales/de.yml +31 -0
  13. data/config/locales/en.yml +1 -1
  14. data/config/locales/es.yml +31 -0
  15. data/config/locales/et.yml +23 -0
  16. data/config/locales/fa.yml +31 -0
  17. data/config/locales/fr.yml +34 -0
  18. data/config/locales/it.yml +31 -0
  19. data/config/locales/ja.yml +32 -0
  20. data/config/locales/ko.yml +24 -0
  21. data/config/locales/nl.yml +32 -0
  22. data/config/locales/no.yml +17 -0
  23. data/config/locales/pl.yml +31 -0
  24. data/config/locales/pt-BR.yml +23 -0
  25. data/config/locales/pt.yml +23 -0
  26. data/config/locales/ru.yml +23 -0
  27. data/config/locales/tr.yml +24 -0
  28. data/config/locales/ua.yml +31 -0
  29. data/config/locales/vi.yml +25 -0
  30. data/config/locales/zh-HK.yml +31 -0
  31. data/config/locales/zh-TW.yml +31 -0
  32. data/lib/devise_invitable.rb +5 -4
  33. data/lib/devise_invitable/controllers/helpers.rb +3 -4
  34. data/lib/devise_invitable/inviter.rb +4 -3
  35. data/lib/devise_invitable/mailer.rb +1 -1
  36. data/lib/devise_invitable/mapping.rb +6 -5
  37. data/lib/devise_invitable/models.rb +48 -32
  38. data/lib/devise_invitable/parameter_sanitizer.rb +18 -18
  39. data/lib/devise_invitable/routes.rb +5 -5
  40. data/lib/devise_invitable/version.rb +1 -1
  41. data/lib/generators/active_record/devise_invitable_generator.rb +3 -3
  42. data/lib/generators/active_record/templates/migration.rb +0 -1
  43. data/lib/generators/devise_invitable/devise_invitable_generator.rb +4 -8
  44. data/lib/generators/devise_invitable/install_generator.rb +11 -14
  45. data/lib/generators/devise_invitable/templates/simple_form_for/invitations/edit.html.erb +10 -6
  46. data/lib/generators/devise_invitable/templates/simple_form_for/invitations/new.html.erb +10 -6
  47. data/lib/generators/devise_invitable/views_generator.rb +6 -6
  48. data/test/functional/registrations_controller_test.rb +24 -25
  49. data/test/generators/views_generator_test.rb +7 -6
  50. data/test/generators_test.rb +3 -2
  51. data/test/integration/invitation_remove_test.rb +8 -8
  52. data/test/integration/invitation_test.rb +46 -46
  53. data/test/integration_tests_helper.rb +8 -9
  54. data/test/model_tests_helper.rb +5 -5
  55. data/test/models/invitable_test.rb +123 -108
  56. data/test/models_test.rb +3 -3
  57. data/test/orm/active_record.rb +5 -1
  58. data/test/orm/mongoid.rb +2 -2
  59. data/test/rails_app/app/controllers/admins_controller.rb +4 -3
  60. data/test/rails_app/app/controllers/application_controller.rb +11 -10
  61. data/test/rails_app/app/controllers/free_invitations_controller.rb +12 -9
  62. data/test/rails_app/app/controllers/users_controller.rb +2 -2
  63. data/test/rails_app/app/models/admin.rb +7 -10
  64. data/test/rails_app/app/models/octopussy.rb +4 -4
  65. data/test/rails_app/app/models/user.rb +20 -20
  66. data/test/rails_app/app/views/admins/new.html.erb +9 -5
  67. data/test/rails_app/app/views/devise/sessions/new.html.erb +14 -6
  68. data/test/rails_app/app/views/free_invitations/new.html.erb +9 -5
  69. data/test/rails_app/app/views/layouts/application.html.erb +3 -4
  70. data/test/rails_app/app/views/users/invitations/new.html.erb +15 -9
  71. data/test/rails_app/config/application.rb +7 -6
  72. data/test/rails_app/config/boot.rb +2 -2
  73. data/test/rails_app/config/credentials.yml.enc +1 -0
  74. data/test/rails_app/config/initializers/devise.rb +4 -3
  75. data/test/rails_app/config/initializers/secret_token.rb +3 -1
  76. data/test/rails_app/config/initializers/session_store.rb +1 -1
  77. data/test/rails_app/config/initializers/wrap_parameters.rb +1 -1
  78. data/test/rails_app/config/master.key +1 -0
  79. data/test/rails_app/config/routes.rb +3 -3
  80. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -2
  81. data/test/routes_test.rb +4 -4
  82. data/test/test_helper.rb +6 -19
  83. metadata +48 -23
@@ -1,8 +1,8 @@
1
1
  class Devise::InvitationsController < DeviseController
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]
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, :email => self.resource.email
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, :location => after_invite_path_for(current_inviter)
29
+ respond_with resource, location: after_invite_path_for(current_inviter)
30
30
  else
31
- respond_with resource, :location => after_invite_path_for(current_inviter, 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 }
@@ -37,7 +37,6 @@ class Devise::InvitationsController < DeviseController
37
37
 
38
38
  # GET /resource/invitation/accept?invitation_token=abcdef
39
39
  def edit
40
- sign_out send("current_#{resource_name}") if send("#{resource_name}_signed_in?")
41
40
  set_minimum_password_length
42
41
  resource.invitation_token = params[:invitation_token]
43
42
  render :edit
@@ -52,18 +51,19 @@ class Devise::InvitationsController < DeviseController
52
51
  yield resource if block_given?
53
52
 
54
53
  if invitation_accepted
55
- if Devise.allow_insecure_sign_in_after_accept
54
+ if resource.class.allow_insecure_sign_in_after_accept
56
55
  flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
57
56
  set_flash_message :notice, flash_message if is_flashing_format?
57
+ resource.after_database_authentication
58
58
  sign_in(resource_name, resource)
59
- respond_with resource, :location => after_accept_path_for(resource)
59
+ respond_with resource, location: after_accept_path_for(resource)
60
60
  else
61
61
  set_flash_message :notice, :updated_not_active if is_flashing_format?
62
- respond_with resource, :location => new_session_path(resource_name)
62
+ respond_with resource, location: new_session_path(resource_name)
63
63
  end
64
64
  else
65
65
  resource.invitation_token = raw_invitation_token
66
- respond_with_navigational(resource){ render :edit }
66
+ respond_with_navigational(resource) { render :edit }
67
67
  end
68
68
  end
69
69
 
@@ -76,42 +76,42 @@ class Devise::InvitationsController < DeviseController
76
76
 
77
77
  protected
78
78
 
79
- def invite_resource(&block)
80
- resource_class.invite!(invite_params, current_inviter, &block)
81
- end
79
+ def invite_resource(&block)
80
+ resource_class.invite!(invite_params, current_inviter, &block)
81
+ end
82
82
 
83
- def accept_resource
84
- resource_class.accept_invitation!(update_resource_params)
85
- end
83
+ def accept_resource
84
+ resource_class.accept_invitation!(update_resource_params)
85
+ end
86
86
 
87
- def current_inviter
88
- authenticate_inviter!
89
- end
87
+ def current_inviter
88
+ authenticate_inviter!
89
+ end
90
90
 
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 }
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
96
97
  end
97
- end
98
98
 
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)
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
103
104
  end
104
- end
105
105
 
106
- def invite_params
107
- devise_parameter_sanitizer.sanitize(:invite)
108
- end
106
+ def invite_params
107
+ devise_parameter_sanitizer.sanitize(:invite)
108
+ end
109
109
 
110
- def update_resource_params
111
- devise_parameter_sanitizer.sanitize(:accept_invitation)
112
- end
110
+ def update_resource_params
111
+ devise_parameter_sanitizer.sanitize(:accept_invitation)
112
+ end
113
113
 
114
- def translation_scope
115
- 'devise.invitations'
116
- end
114
+ def translation_scope
115
+ 'devise.invitations'
116
+ end
117
117
  end
@@ -1,17 +1,17 @@
1
1
  class DeviseInvitable::RegistrationsController < Devise::RegistrationsController
2
2
  protected
3
3
 
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
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 'devise.invitations.edit.header' %></h2>
1
+ <h2><%= t "devise.invitations.edit.header" %></h2>
2
2
 
3
- <%= form_for resource, :as => resource_name, :url => invitation_path(resource_name), :html => { :method => :put } do |f| %>
4
- <%= devise_error_messages! %>
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
- <p><%= f.label :password %><br />
9
- <%= f.password_field :password %></p>
8
+ <div class="field">
9
+ <%= f.label :password %><br />
10
+ <%= f.password_field :password %>
11
+ </div>
10
12
 
11
- <p><%= f.label :password_confirmation %><br />
12
- <%= f.password_field :password_confirmation %></p>
13
+ <div class="field">
14
+ <%= f.label :password_confirmation %><br />
15
+ <%= f.password_field :password_confirmation %>
16
+ </div>
13
17
  <% end %>
14
18
 
15
- <p><%= f.submit t("devise.invitations.edit.submit_button") %></p>
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 resource, :as => resource_name, :url => invitation_path(resource_name), :html => {:method => :post} do |f| %>
4
- <%= devise_error_messages! %>
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
- <p><%= f.label field %><br />
8
- <%= f.text_field field %></p>
9
- <% end -%>
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
- <p><%= f.submit t("devise.invitations.new.submit_button") %></p>
13
+ <div class="actions">
14
+ <%= f.submit t("devise.invitations.new.submit_button") %>
15
+ </div>
12
16
  <% end %>
@@ -2,10 +2,10 @@
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, :invitation_token => @token) %></p>
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>
9
9
  <% end %>
10
10
 
11
- <p><%= t("devise.mailer.invitation_instructions.ignore").html_safe %></p>
11
+ <p><%= t("devise.mailer.invitation_instructions.ignore") %></p>
@@ -2,10 +2,10 @@
2
2
 
3
3
  <%= t("devise.mailer.invitation_instructions.someone_invited_you", url: root_url) %>
4
4
 
5
- <%= accept_invitation_url(@resource, :invitation_token => @token) %>
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')) %>
9
9
  <% end %>
10
10
 
11
- <%= strip_tags t("devise.mailer.invitation_instructions.ignore") %>
11
+ <%= t("devise.mailer.invitation_instructions.ignore") %>
@@ -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"
@@ -22,7 +22,7 @@ en:
22
22
  someone_invited_you: "Someone has invited you to %{url}, you can accept it through the link below."
23
23
  accept: "Accept invitation"
24
24
  accept_until: "This invitation will be due in %{due_date}."
25
- ignore: "If you don't want to accept the invitation, please ignore this email.<br />\nYour account won't be created until you access the link above and set your password."
25
+ ignore: "If you don't want to accept the invitation, please ignore this email. Your account won't be created until you access the link above and set your password."
26
26
  time:
27
27
  formats:
28
28
  devise:
@@ -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: "Estimada/o %{nombre}"
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"