diff --git a/app/views/profiles/_event_table.html.haml b/app/views/profiles/_event_table.html.haml
index 9f525547dd9a5c22c54693d0cf55df8bed73a004..076f94bf624eaad3628a982b73435a737679114f 100644
--- a/app/views/profiles/_event_table.html.haml
+++ b/app/views/profiles/_event_table.html.haml
@@ -1,14 +1,12 @@
%h5.prepend-top-0
- History of authentications
+ = _("History of authentications")
%ul.content-list
- events.each do |event|
%li
%span.description
= audit_icon(event.details[:with], class: "append-right-5")
- Signed in with
- = event.details[:with]
- authentication
+ = _("Signed in with %{event_details} authentication") % { event_details: event.details[:with] }
%span.float-right= time_ago_with_tooltip(event.created_at)
= paginate events, theme: "gitlab"
diff --git a/app/views/profiles/accounts/show.html.haml b/app/views/profiles/accounts/show.html.haml
index 2220b4eee96e3f16e90603f60c77dfe27194fffa..5e4c8e2f6695aed713411a1629bc6e5d190888f8 100644
--- a/app/views/profiles/accounts/show.html.haml
+++ b/app/views/profiles/accounts/show.html.haml
@@ -1,37 +1,38 @@
-- page_title "Account"
+- page_title _("Account")
- @content_class = "limit-container-width" unless fluid_layout
- if current_user.ldap_user?
.alert.alert-info
- Some options are unavailable for LDAP accounts
+ = _('Some options are unavailable for LDAP accounts')
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Two-Factor Authentication
+ = _('Two-Factor Authentication')
%p
- Increase your account's security by enabling Two-Factor Authentication (2FA).
+ = _("Increase your account's security by enabling Two-Factor Authentication (2FA).")
.col-lg-8
%p
- Status: #{current_user.two_factor_enabled? ? 'Enabled' : 'Disabled'}
+ = _("Status:")
+ #{current_user.two_factor_enabled? ? _('Enabled') : _('Disabled')}
- if current_user.two_factor_enabled?
- = link_to 'Manage two-factor authentication', profile_two_factor_auth_path, class: 'btn btn-info'
+ = link_to _('Manage two-factor authentication'), profile_two_factor_auth_path, class: 'btn btn-info'
- else
.append-bottom-10
- = link_to 'Enable two-factor authentication', profile_two_factor_auth_path, class: 'btn btn-success'
+ = link_to _('Enable two-factor authentication'), profile_two_factor_auth_path, class: 'btn btn-success'
%hr
- if button_based_providers.any?
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Social sign-in
+ = _('Social sign-in')
%p
- Activate signin with one of the following services
+ = _('Activate signin with one of the following services')
.col-lg-8
%label.label-bold
- Connected Accounts
- %p Click on icon to activate signin with one of the following services
+ = _('Connected Accounts')
+ %p= _('Click on icon to activate signin with one of the following services')
- button_based_providers.each do |provider|
.provider-btn-group
.provider-btn-image
@@ -39,23 +40,23 @@
- if auth_active?(provider)
- if unlink_allowed?(provider)
= link_to unlink_profile_account_path(provider: provider), method: :delete, class: 'provider-btn' do
- Disconnect
+ = _('Disconnect')
- else
%a.provider-btn
- Active
+ = _('Active')
- else
= link_to omniauth_authorize_path(:user, provider), method: :post, class: 'provider-btn not-active' do
- Connect
+ = _('Connect')
%hr
- if current_user.can_change_username?
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0.warning-title
- Change username
+ = _('Change username')
%p
- Changing your username can have unintended side effects.
+ = _('Changing your username can have unintended side effects.')
= succeed '.' do
- = link_to 'Learn more', help_page_path('user/profile/index', anchor: 'changing-your-username'), target: '_blank'
+ = link_to _('Learn more'), help_page_path('user/profile/index', anchor: 'changing-your-username'), target: '_blank'
.col-lg-8
- data = { initial_username: current_user.username, root_url: root_url, action_url: update_username_profile_path(format: :json) }
#update-username{ data: data }
diff --git a/app/views/profiles/active_sessions/_active_session.html.haml b/app/views/profiles/active_sessions/_active_session.html.haml
index 23ef31a0c85d7d5a818af59782eaee1f3aea89fe..70b7d0326bc4166436369e393217473c41e03060 100644
--- a/app/views/profiles/active_sessions/_active_session.html.haml
+++ b/app/views/profiles/active_sessions/_active_session.html.haml
@@ -8,10 +8,10 @@
%div
%strong= active_session.ip_address
- if is_current_session
- %div This is your current session
+ %div= _('This is your current session')
- else
%div
- Last accessed on
+ = _('Last accessed on')
= l(active_session.updated_at, format: :short)
%div
@@ -20,12 +20,11 @@
%strong= active_session.os
%div
- %strong Signed in
- on
+ = _("%{strong_start}Signed in%{strong_end} on").html_safe % { strong_start: ''.html_safe, strong_end: ''.html_safe }
= l(active_session.created_at, format: :short)
- unless is_current_session
.float-right
- = link_to profile_active_session_path(active_session.session_id), data: { confirm: 'Are you sure? The device will be signed out of GitLab.' }, method: :delete, class: "btn btn-danger prepend-left-10" do
- %span.sr-only Revoke
- Revoke
+ = link_to profile_active_session_path(active_session.session_id), data: { confirm: _('Are you sure? The device will be signed out of GitLab.') }, method: :delete, class: "btn btn-danger prepend-left-10" do
+ %span.sr-only= _('Revoke')
+ = _('Revoke')
diff --git a/app/views/profiles/active_sessions/index.html.haml b/app/views/profiles/active_sessions/index.html.haml
index 8688a52843d84e0e5506b69f6c8a6ac7b53395db..d651319fc3f1fda81c9c4435d0e1924661a0d171 100644
--- a/app/views/profiles/active_sessions/index.html.haml
+++ b/app/views/profiles/active_sessions/index.html.haml
@@ -1,4 +1,4 @@
-- page_title 'Active Sessions'
+- page_title _('Active Sessions')
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -6,7 +6,7 @@
%h4.prepend-top-0
= page_title
%p
- This is a list of devices that have logged into your account. Revoke any sessions that you do not recognize.
+ = _('This is a list of devices that have logged into your account. Revoke any sessions that you do not recognize.')
.col-lg-8
.append-bottom-default
diff --git a/app/views/profiles/audit_log.html.haml b/app/views/profiles/audit_log.html.haml
index a924369050bf7d0e4e427e25c69600cd7db8c421..571f7e4ff1190b747ccfaf79b720c8b8bae71771 100644
--- a/app/views/profiles/audit_log.html.haml
+++ b/app/views/profiles/audit_log.html.haml
@@ -1,4 +1,4 @@
-- page_title "Authentication log"
+- page_title _("Authentication log")
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -6,6 +6,6 @@
%h4.prepend-top-0
= page_title
%p
- This is a security log of important events involving your account.
+ = _("This is a security log of important events involving your account.")
.col-lg-8
= render 'event_table', events: @events
diff --git a/app/views/profiles/chat_names/_chat_name.html.haml b/app/views/profiles/chat_names/_chat_name.html.haml
index 9e82e47c1e17d69011c4fb417bcf2272677bc91f..6c976e80c9dad90d211809b37bafacbec080f2bf 100644
--- a/app/views/profiles/chat_names/_chat_name.html.haml
+++ b/app/views/profiles/chat_names/_chat_name.html.haml
@@ -6,7 +6,7 @@
- if can?(current_user, :read_project, project)
= link_to project.full_name, project_path(project)
- else
- .light N/A
+ .light= _('N/A')
%td
%strong
- if can?(current_user, :admin_project, project)
@@ -21,7 +21,7 @@
- if chat_name.last_used_at
= time_ago_with_tooltip(chat_name.last_used_at)
- else
- Never
+ = _('Never')
%td
- = link_to 'Remove', profile_chat_name_path(chat_name), method: :delete, class: 'btn btn-danger float-right', data: { confirm: 'Are you sure you want to revoke this nickname?' }
+ = link_to _('Remove'), profile_chat_name_path(chat_name), method: :delete, class: 'btn btn-danger float-right', data: { confirm: _('Are you sure you want to revoke this nickname?') }
diff --git a/app/views/profiles/chat_names/index.html.haml b/app/views/profiles/chat_names/index.html.haml
index 4b6e419af502b116056a42591d3f3e3903cf8d1f..d0052fd23cd8b4a0e2cefa1de715077f02739ca1 100644
--- a/app/views/profiles/chat_names/index.html.haml
+++ b/app/views/profiles/chat_names/index.html.haml
@@ -1,4 +1,4 @@
-- page_title 'Chat'
+- page_title _('Chat')
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -6,25 +6,25 @@
%h4.prepend-top-0
= page_title
%p
- You can see your Chat accounts.
+ = _('You can see your Chat accounts.')
.col-lg-8
- %h5 Active chat names (#{@chat_names.size})
+ %h5= _('Active chat names (%{size})') % { size: @chat_names.size }
- if @chat_names.present?
.table-responsive
%table.table.chat-names
%thead
%tr
- %th Project
- %th Service
- %th Team domain
- %th Nickname
- %th Last used
+ %th= _('Project')
+ %th= _('Service')
+ %th= _('Team domain')
+ %th= _('Nickname')
+ %th= _('Last used')
%th
%tbody
= render @chat_names
- else
.settings-message.text-center
- You don't have any active chat names.
+ = _("You don't have any active chat names.")
diff --git a/app/views/profiles/chat_names/new.html.haml b/app/views/profiles/chat_names/new.html.haml
index d86941b7a29dd53b4ca07f9512e86763b270f560..632d90ce176f4d7908d440affe7f55a1067ee3d8 100644
--- a/app/views/profiles/chat_names/new.html.haml
+++ b/app/views/profiles/chat_names/new.html.haml
@@ -1,15 +1,15 @@
-%h3.page-title Authorization required
+%h3.page-title= _('Authorization required')
%main{ :role => "main" }
%p.h4
- Authorize
+ = _("Authorize")
%strong.text-info= @chat_name_params[:chat_name]
- to use your account?
+ = s_("Authorize|to use your account?")
%hr
.actions
= form_tag profile_chat_names_path, method: :post do
= hidden_field_tag :token, @chat_name_token.token
- = submit_tag "Authorize", class: "btn btn-success wide float-left"
+ = submit_tag _("Authorize"), class: "btn btn-success wide float-left"
= form_tag deny_profile_chat_names_path, method: :delete do
= hidden_field_tag :token, @chat_name_token.token
- = submit_tag "Deny", class: "btn btn-danger prepend-left-10"
+ = submit_tag _("Deny"), class: "btn btn-danger prepend-left-10"
diff --git a/app/views/profiles/emails/index.html.haml b/app/views/profiles/emails/index.html.haml
index 04a19ab14dd0fe9501f3a75d040f2a0e5c67a13e..bd9e57a0037532b04274b138a2550445b87c6fb8 100644
--- a/app/views/profiles/emails/index.html.haml
+++ b/app/views/profiles/emails/index.html.haml
@@ -1,4 +1,4 @@
-- page_title "Emails"
+- page_title _("Emails")
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -6,50 +6,51 @@
%h4.prepend-top-0
= page_title
%p
- Control emails linked to your account
+ = _('Control emails linked to your account')
.col-lg-8
%h4.prepend-top-0
- Add email address
+ = _('Add email address')
= form_for 'email', url: profile_emails_path do |f|
.form-group
= f.label :email, class: 'label-bold'
= f.text_field :email, class: 'form-control'
.prepend-top-default
- = f.submit 'Add email address', class: 'btn btn-create'
+ = f.submit _('Add email address'), class: 'btn btn-create'
%hr
%h4.prepend-top-0
Linked emails (#{@emails.count + 1})
.account-well.append-bottom-default
%ul
%li
- Your Primary Email will be used for avatar detection and web based operations, such as edits and merges.
+ = _("Your Primary Email will be used for avatar detection and web based operations, such as edits and merges.")
%li
- Your Notification Email will be used for account notifications.
+ = _("Your Notification Email will be used for account notifications.")
%li
- Your Public Email will be displayed on your public profile.
+ = _("Your Public Email will be displayed on your public profile.")
%li
- All email addresses will be used to identify your commits.
+ = _("All email addresses will be used to identify your commits.")
%ul.content-list
%li
= render partial: 'shared/email_with_badge', locals: { email: @primary_email, verified: current_user.confirmed? }
%span.float-right
- %span.badge.badge-success Primary email
+ %span.badge.badge-success= _("Primary email")
- if @primary_email === current_user.public_email
- %span.badge.badge-info Public email
+ %span.badge.badge-info= _("Public email")
- if @primary_email === current_user.notification_email
- %span.badge.badge-info Notification email
+ %span.badge.badge-info= _("Notification email")
- @emails.each do |email|
%li
= render partial: 'shared/email_with_badge', locals: { email: email.email, verified: email.confirmed? }
%span.float-right
- if email.email === current_user.public_email
- %span.badge.badge-info Public email
+ %span.badge.badge-info= _("Public email")
- if email.email === current_user.notification_email
- %span.badge.badge-info Notification email
+ %span.badge.badge-info= _("Notification email")
- unless email.confirmed?
- - confirm_title = "#{email.confirmation_sent_at ? 'Resend' : 'Send'} confirmation email"
+ - confirm_action = email.confirmation_sent_at ? _('Resend') : _('Send')
+ - confirm_title = _("%{confirm_action} confirmation email") % { confirm_action: confirm_action }
= link_to confirm_title, resend_confirmation_instructions_profile_email_path(email), method: :put, class: 'btn btn-sm btn-warning prepend-left-10'
- = link_to profile_email_path(email), data: { confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-sm btn-danger prepend-left-10' do
- %span.sr-only Remove
+ = link_to profile_email_path(email), data: { confirm: _('Are you sure?')}, method: :delete, class: 'btn btn-sm btn-danger prepend-left-10' do
+ %span.sr-only= _("Remove")
= icon('trash')
diff --git a/app/views/profiles/gpg_keys/_form.html.haml b/app/views/profiles/gpg_keys/_form.html.haml
index aa9b0aad034a37e0047b5239316daf2cb1d1c2d4..63ecbdce64117d3efadcad41ce941d18ad6b985d 100644
--- a/app/views/profiles/gpg_keys/_form.html.haml
+++ b/app/views/profiles/gpg_keys/_form.html.haml
@@ -4,7 +4,7 @@
.form-group
= f.label :key, class: 'label-bold'
- = f.text_area :key, class: "form-control", rows: 8, required: true, placeholder: "Don't paste the private part of the GPG key. Paste the public part which begins with '-----BEGIN PGP PUBLIC KEY BLOCK-----'."
+ = f.text_area :key, class: "form-control", rows: 8, required: true, placeholder: _("Don't paste the private part of the GPG key. Paste the public part which begins with '-----BEGIN PGP PUBLIC KEY BLOCK-----'.")
.prepend-top-default
- = f.submit 'Add key', class: "btn btn-create"
+ = f.submit _('Add key'), class: "btn btn-create"
diff --git a/app/views/profiles/gpg_keys/_key.html.haml b/app/views/profiles/gpg_keys/_key.html.haml
index d1fd7bc8e71f62ba81aedc6100e276cab0d77e05..6e5b96eb2c1291eb92702c11da5258ef38729075 100644
--- a/app/views/profiles/gpg_keys/_key.html.haml
+++ b/app/views/profiles/gpg_keys/_key.html.haml
@@ -9,17 +9,17 @@
%code= key.fingerprint
- if key.subkeys.present?
.subkeys
- %span.bold Subkeys:
+ %span.bold= _("Subkeys:")
%ul.subkeys-list
- key.subkeys.each do |subkey|
%li
%code= subkey.fingerprint
.float-right
%span.key-created-at
- created #{time_ago_with_tooltip(key.created_at)}
- = link_to profile_gpg_key_path(key), data: { confirm: 'Are you sure? Removing this GPG key does not affect already signed commits.' }, method: :delete, class: "btn btn-danger prepend-left-10" do
- %span.sr-only Remove
+ = _("created %{time_ago}").html_safe % { time_ago: time_ago_with_tooltip(key.created_at) }
+ = link_to profile_gpg_key_path(key), data: { confirm: _('Are you sure? Removing this GPG key does not affect already signed commits.') }, method: :delete, class: "btn btn-danger prepend-left-10" do
+ %span.sr-only= _("Remove")
= icon('trash')
- = link_to revoke_profile_gpg_key_path(key), data: { confirm: 'Are you sure? All commits that were signed with this GPG key will be unverified.' }, method: :put, class: "btn btn-danger prepend-left-10" do
- %span.sr-only Revoke
- Revoke
+ = link_to revoke_profile_gpg_key_path(key), data: { confirm: _('Are you sure? All commits that were signed with this GPG key will be unverified.') }, method: :put, class: "btn btn-danger prepend-left-10" do
+ %span.sr-only= _("Revoke")
+ = _("Revoke")
diff --git a/app/views/profiles/gpg_keys/_key_table.html.haml b/app/views/profiles/gpg_keys/_key_table.html.haml
index b9b60c218fd62264d560720d61b7ae36f2252c01..4117f56ce385fe99db7c1056b88855a2618d71ff 100644
--- a/app/views/profiles/gpg_keys/_key_table.html.haml
+++ b/app/views/profiles/gpg_keys/_key_table.html.haml
@@ -6,6 +6,6 @@
- else
%p.settings-message.text-center
- if is_admin
- There are no GPG keys associated with this account.
+ = _("There are no GPG keys associated with this account.")
- else
- There are no GPG keys with access to your account.
+ = _("There are no GPG keys with access to your account.")
diff --git a/app/views/profiles/gpg_keys/index.html.haml b/app/views/profiles/gpg_keys/index.html.haml
index 1d2e41cb437d4def8b9c5ef696eae5648b77ca1c..3c8508d598cc33acc2711dfbb80db88feee52933 100644
--- a/app/views/profiles/gpg_keys/index.html.haml
+++ b/app/views/profiles/gpg_keys/index.html.haml
@@ -1,4 +1,4 @@
-- page_title "GPG Keys"
+- page_title _("GPG Keys")
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -6,16 +6,16 @@
%h4.prepend-top-0
= page_title
%p
- GPG keys allow you to verify signed commits.
+ = _("GPG keys allow you to verify signed commits.")
.col-lg-8
%h5.prepend-top-0
- Add a GPG key
+ = _("Add a GPG key")
%p.profile-settings-content
- Before you can add a GPG key you need to
- = link_to 'generate it.', help_page_path('user/project/repository/gpg_signed_commits/index.md')
+ - link_to_generate = link_to(_('generate it'), help_page_path('user/project/repository/gpg_signed_commits/index.md'))
+ = _("Before you can add a GPG key you need to %{link_to_generate}.").html_safe % { link_to_generate: link_to_generate }
= render 'form'
%hr
%h5
- Your GPG keys (#{@gpg_keys.count})
+ = _("Your GPG keys (%{count})") % { count: @gpg_keys.count }
.append-bottom-default
= render 'key_table'
diff --git a/app/views/profiles/keys/_key.html.haml b/app/views/profiles/keys/_key.html.haml
index 6941aca7243f305032b5e377feef184ab381e949..156cdb24697b5ad8d91a6785f2cd601254e11116 100644
--- a/app/views/profiles/keys/_key.html.haml
+++ b/app/views/profiles/keys/_key.html.haml
@@ -13,12 +13,12 @@
.description
= key.fingerprint
.last-used-at
- last used:
+ = _("last used:")
= key.last_used_at ? time_ago_with_tooltip(key.last_used_at) : 'n/a'
.float-right
%span.key-created-at
- created #{time_ago_with_tooltip(key.created_at)}
+ = _("created %{time_ago}").html_safe % { time_ago: time_ago_with_tooltip(key.created_at) }
- unless key.is_a? LDAPKey
- = link_to path_to_key(key, is_admin), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-transparent prepend-left-10" do
- %span.sr-only Remove
+ = link_to path_to_key(key, is_admin), data: { confirm: _('Are you sure?')}, method: :delete, class: "btn btn-transparent prepend-left-10" do
+ %span.sr-only= _("Remove")
= icon('trash')
diff --git a/app/views/profiles/keys/_key_details.html.haml b/app/views/profiles/keys/_key_details.html.haml
index 61c2634e9f22fbc8614afa77ca8ee4afe761ae52..4addd995ebf407b14dfd77109f00189e519a1cc0 100644
--- a/app/views/profiles/keys/_key_details.html.haml
+++ b/app/views/profiles/keys/_key_details.html.haml
@@ -3,26 +3,26 @@
.col-md-4
.card
.card-header
- SSH Key
+ = _("SSH Key")
%ul.content-list
%li
- %span.light Title:
+ %span.light= _("Title:")
%strong= @key.title
%li
- %span.light Created on:
+ %span.light= _("Created on:")
%strong= @key.created_at.to_s(:medium)
%li
- %span.light Last used on:
- %strong= @key.last_used_at.try(:to_s, :medium) || 'N/A'
+ %span.light= _("Last used on:")
+ %strong= @key.last_used_at.try(:to_s, :medium) || _('N/A')
.col-md-8
= form_errors(@key, type: 'key') unless @key.valid?
%p
- %span.light Fingerprint:
+ %span.light= _("Fingerprint:")
%code.key-fingerprint= @key.fingerprint
%pre.well-pre
= @key.key
.col-md-12
.float-right
- unless @key.is_a? LDAPKey
- = link_to 'Remove', path_to_key(@key, is_admin), data: {confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove delete-key"
+ = link_to 'Remove', path_to_key(@key, is_admin), data: {confirm: _('Are you sure?')}, method: :delete, class: "btn btn-remove delete-key"
diff --git a/app/views/profiles/keys/_key_table.html.haml b/app/views/profiles/keys/_key_table.html.haml
index e088140fdd2aeba36ac44d037628d13a7e7f9d5e..e24f2e41c4e41b8d1676f0d873746e5b27ea2091 100644
--- a/app/views/profiles/keys/_key_table.html.haml
+++ b/app/views/profiles/keys/_key_table.html.haml
@@ -6,6 +6,6 @@
- else
%p.settings-message.text-center
- if is_admin
- There are no SSH keys associated with this account.
+ = _("There are no SSH keys associated with this account.")
- else
- There are no SSH keys with access to your account.
+ = _("There are no SSH keys with access to your account.")
diff --git a/app/views/profiles/keys/index.html.haml b/app/views/profiles/keys/index.html.haml
index 55ca8d0ebd483c4cf3eb753fc646436c9039bd30..33ca72089035308a1cbb8d2775f50a69bc9d9674 100644
--- a/app/views/profiles/keys/index.html.haml
+++ b/app/views/profiles/keys/index.html.haml
@@ -1,4 +1,4 @@
-- page_title "SSH Keys"
+- page_title _("SSH Keys")
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -6,10 +6,10 @@
%h4.prepend-top-0
= page_title
%p
- SSH keys allow you to establish a secure connection between your computer and GitLab.
+ = _("SSH keys allow you to establish a secure connection between your computer and GitLab.")
.col-lg-8
%h5.prepend-top-0
- Add an SSH key
+ = _("Add an SSH key")
%p.profile-settings-content
- generate_link_url = help_page_path("ssh/README", anchor: 'generating-a-new-ssh-key-pair')
- existing_link_url = help_page_path("ssh/README", anchor: 'locating-an-existing-ssh-key-pair')
@@ -19,6 +19,6 @@
= render 'form'
%hr
%h5
- Your SSH keys (#{@keys.count})
+ = _("Your SSH keys (%{count})") % { count: @keys.count }
.append-bottom-default
= render 'key_table'
diff --git a/app/views/profiles/keys/show.html.haml b/app/views/profiles/keys/show.html.haml
index 28be6172219acf88049cc41eff59335e227a21d8..b8dd743c6b81d19010a47620c8d3c977d6dfba2a 100644
--- a/app/views/profiles/keys/show.html.haml
+++ b/app/views/profiles/keys/show.html.haml
@@ -1,5 +1,5 @@
-- add_to_breadcrumbs "SSH Keys", profile_keys_path
+- add_to_breadcrumbs _("SSH Keys"), profile_keys_path
- breadcrumb_title @key.title
-- page_title @key.title, "SSH Keys"
+- page_title @key.title, _("SSH Keys")
- @content_class = "limit-container-width" unless fluid_layout
= render "key_details"
diff --git a/app/views/profiles/notifications/show.html.haml b/app/views/profiles/notifications/show.html.haml
index 712eb2a4573f9149c25e3c50db99acd49462fae0..d7bedd80e36da26bebdd509aff2195b64be86ed4 100644
--- a/app/views/profiles/notifications/show.html.haml
+++ b/app/views/profiles/notifications/show.html.haml
@@ -1,4 +1,4 @@
-- page_title "Notifications"
+- page_title _("Notifications")
- @content_class = "limit-container-width" unless fluid_layout
%div
@@ -14,19 +14,19 @@
%h4.prepend-top-0
= page_title
%p
- You can specify notification level per group or per project.
+ = _("You can specify notification level per group or per project.")
%p
- By default, all projects and groups will use the global notifications setting.
+ = _("By default, all projects and groups will use the global notifications setting.")
.col-lg-8
%h5.prepend-top-0
- Global notification settings
+ = _("Global notification settings")
= form_for @user, url: profile_notifications_path, method: :put, html: { class: 'update-notifications prepend-top-default' } do |f|
.form-group
= f.label :notification_email, class: "label-bold"
= f.select :notification_email, @user.all_emails, { include_blank: false }, class: "select2"
- = label_tag :global_notification_level, "Global notification level", class: "label-bold"
+ = label_tag :global_notification_level, _("Global notification level"), class: "label-bold"
%br
.clearfix
.form-group.float-left.global-notification-setting
@@ -37,19 +37,19 @@
= form_for @user, url: profile_notifications_path, method: :put do |f|
%label{ for: 'user_notified_of_own_activity' }
= f.check_box :notified_of_own_activity
- %span Receive notifications about your own activity
+ %span= _("Receive notifications about your own activity")
%hr
%h5
- Groups (#{@group_notifications.count})
+ = _("Groups (%{count})") % { count: @group_notifications.count }
%div
%ul.bordered-list
- @group_notifications.each do |setting|
= render 'group_settings', setting: setting, group: setting.source
%h5
- Projects (#{@project_notifications.count})
+ = _("Projects (%{count})") % { count: @project_notifications.count }
%p.account-well
- To specify the notification level per project of a group you belong to, you need to visit project page and change notification level there.
+ = _("To specify the notification level per project of a group you belong to, you need to visit project page and change notification level there.")
.append-bottom-default
%ul.bordered-list
- @project_notifications.each do |setting|
diff --git a/app/views/profiles/passwords/edit.html.haml b/app/views/profiles/passwords/edit.html.haml
index 9c8cc9c059be24e1332fb237245c34d5ac1425c8..f66c965edbe5dc0833655f6af46c3e9f3a66b69f 100644
--- a/app/views/profiles/passwords/edit.html.haml
+++ b/app/views/profiles/passwords/edit.html.haml
@@ -1,5 +1,5 @@
-- breadcrumb_title "Edit Password"
-- page_title "Password"
+- breadcrumb_title _("Edit Password")
+- page_title _("Password")
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -7,12 +7,12 @@
%h4.prepend-top-0
= page_title
%p
- After a successful password update, you will be redirected to the login page where you can log in with your new password.
+ = _("After a successful password update, you will be redirected to the login page where you can log in with your new password.")
.col-lg-8
%h5.prepend-top-0
- Change your password
+ = _("Change your password")
- unless @user.password_automatically_set?
- or recover your current one
+ = _("or recover your current one")
= form_for @user, url: profile_password_path, method: :put, html: {class: "update-password"} do |f|
= form_errors(@user)
@@ -21,14 +21,14 @@
= f.label :current_password, class: 'label-bold'
= f.password_field :current_password, required: true, class: 'form-control'
%p.form-text.text-muted
- You must provide your current password in order to change it.
+ = _("You must provide your current password in order to change it.")
.form-group
- = f.label :password, 'New password', class: 'label-bold'
+ = f.label :password, _('New password'), class: 'label-bold'
= f.password_field :password, required: true, class: 'form-control'
.form-group
= f.label :password_confirmation, class: 'label-bold'
= f.password_field :password_confirmation, required: true, class: 'form-control'
.prepend-top-default.append-bottom-default
- = f.submit 'Save password', class: "btn btn-create append-right-10"
+ = f.submit _('Save password'), class: "btn btn-create append-right-10"
- unless @user.password_automatically_set?
- = link_to "I forgot my password", reset_profile_password_path, method: :put, class: "account-btn-link"
+ = link_to _("I forgot my password"), reset_profile_password_path, method: :put, class: "account-btn-link"
diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml
index 2176d7f8a31313a18d43eaa9540d3d0a3ec04288..ea4d45baae6689a0a04bf2c79358abd4651312aa 100644
--- a/app/views/profiles/passwords/new.html.haml
+++ b/app/views/profiles/passwords/new.html.haml
@@ -1,12 +1,10 @@
-- page_title "New Password"
-- header_title "New Password"
-%h3.page-title Setup new password
+- page_title _("New Password")
+- header_title _("New Password")
+%h3.page-title= _("Setup new password")
%hr
= form_for @user, url: profile_password_path, method: :post do |f|
%p.slead
- Please set a new password before proceeding.
- %br
- After a successful password update you will be redirected to login screen.
+ = _("Please set a new password before proceeding. %{newline} After a successful password update you will be redirected to login screen.").html_safe % { newline: '
'.html_safe }
= form_errors(@user)
@@ -22,4 +20,4 @@
.col-sm-10
= f.password_field :password_confirmation, required: true, class: 'form-control'
.form-actions
- = f.submit 'Set new password', class: "btn btn-create"
+ = f.submit _('Set new password'), class: "btn btn-create"
diff --git a/app/views/profiles/personal_access_tokens/index.html.haml b/app/views/profiles/personal_access_tokens/index.html.haml
index c10d4ea1a4df048253b8d3cacb090159d7a4fc19..10f28e665ec73d8025b35e8298d969299b92769b 100644
--- a/app/views/profiles/personal_access_tokens/index.html.haml
+++ b/app/views/profiles/personal_access_tokens/index.html.haml
@@ -1,5 +1,5 @@
-- breadcrumb_title "Access Tokens"
-- page_title "Personal Access Tokens"
+- breadcrumb_title _("Access Tokens")
+- page_title _("Personal Access Tokens")
- @content_class = "limit-container-width" unless fluid_layout
.row.prepend-top-default
@@ -7,22 +7,22 @@
%h4.prepend-top-0
= page_title
%p
- You can generate a personal access token for each application you use that needs access to the GitLab API.
+ = _("You can generate a personal access token for each application you use that needs access to the GitLab API.")
%p
- You can also use personal access tokens to authenticate against Git over HTTP.
- They are the only accepted password when you have Two-Factor Authentication (2FA) enabled.
+ = _("You can also use personal access tokens to authenticate against Git over HTTP. They are the only accepted password when you have Two-Factor Authentication (2FA) enabled.")
.col-lg-8
- if @new_personal_access_token
.created-personal-access-token-container
%h5.prepend-top-0
- Your New Personal Access Token
+ = _("Your New Personal Access Token")
.form-group
.input-group
= text_field_tag 'created-personal-access-token', @new_personal_access_token, readonly: true, class: "form-control js-select-on-focus", 'aria-describedby' => "created-personal-access-token-help-block"
%span.input-group-append
- = clipboard_button(text: @new_personal_access_token, title: "Copy personal access token to clipboard", placement: "left", class: "input-group-text btn-default btn-clipboard")
- %span#created-personal-access-token-help-block.form-text.text-muted.text-danger Make sure you save it - you won't be able to access it again.
+ = clipboard_button(text: @new_personal_access_token, title: _("Copy personal access token to clipboard"), placement: "left", class: "input-group-text btn-default btn-clipboard")
+ %span#created-personal-access-token-help-block.form-text.text-muted.text-danger
+ = _("Make sure you save it - you won't be able to access it again.")
%hr
@@ -34,35 +34,34 @@
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Feed token
+ = _("Feed token")
%p
- Your feed token is used to authenticate you when your RSS reader loads a personalized RSS feed or when when your calendar application loads a personalized calendar, and is included in those feed URLs.
+ = _("Your feed token is used to authenticate you when your RSS reader loads a personalized RSS feed or when when your calendar application loads a personalized calendar, and is included in those feed URLs.")
%p
- It cannot be used to access any other data.
+ = _("It cannot be used to access any other data.")
.col-lg-8.feed-token-reset
- = label_tag :feed_token, 'Feed token', class: "label-bold"
+ = label_tag :feed_token, _('Feed token'), class: "label-bold"
= text_field_tag :feed_token, current_user.feed_token, class: 'form-control', readonly: true, onclick: 'this.select()'
%p.form-text.text-muted
- Keep this token secret. Anyone who gets ahold of it can read activity and issue RSS feeds or your calendar feed as if they were you.
- You should
- = link_to 'reset it', [:reset, :feed_token, :profile], method: :put, data: { confirm: 'Are you sure? Any RSS or calendar URLs currently in use will stop working.' }
- if that ever happens.
+ = _("Keep this token secret. Anyone who gets ahold of it can read activity and issue RSS feeds or your calendar feed as if they were you.")
+ - link_to_reset_it = link_to(_('reset it'), [:reset, :feed_token, :profile], method: :put, data: { confirm: _('Are you sure? Any RSS or calendar URLs currently in use will stop working.') })
+ = _("You should %{link_to_reset_it} if that ever happens.").html_safe % { link_to_reset_it: link_to_reset_it }
+
- if incoming_email_token_enabled?
%hr
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Incoming email token
+ = _("Incoming email token")
%p
- Your incoming email token is used to authenticate you when you create a new issue by email, and is included in your personal project-specific email addresses.
+ = _("Your incoming email token is used to authenticate you when you create a new issue by email, and is included in your personal project-specific email addresses.")
%p
- It cannot be used to access any other data.
+ = _("It cannot be used to access any other data.")
.col-lg-8.incoming-email-token-reset
- = label_tag :incoming_email_token, 'Incoming email token', class: "label-bold"
+ = label_tag :incoming_email_token, _('Incoming email token'), class: "label-bold"
= text_field_tag :incoming_email_token, current_user.incoming_email_token, class: 'form-control', readonly: true, onclick: 'this.select()'
%p.form-text.text-muted
- Keep this token secret. Anyone who gets ahold of it can create issues as if they were you.
- You should
- = link_to 'reset it', [:reset, :incoming_email_token, :profile], method: :put, data: { confirm: 'Are you sure? Any issue email addresses currently in use will stop working.' }
- if that ever happens.
+ = _("Keep this token secret. Anyone who gets ahold of it can create issues as if they were you.")
+ - link_to_reset_it = link_to(_('reset it'), [:reset, :incoming_email_token, :profile], method: :put, data: { confirm: _('Are you sure? Any issue email addresses currently in use will stop working.') })
+ = _("You should %{link_to_reset_it} if that ever happens.").html_safe % { link_to_reset_it: link_to_reset_it }
diff --git a/app/views/profiles/preferences/show.html.haml b/app/views/profiles/preferences/show.html.haml
index fd6dd74e1c50ece2567b6055bb854a77322628d7..f35261df12f6d4d93b0fca6943ef6964a7994770 100644
--- a/app/views/profiles/preferences/show.html.haml
+++ b/app/views/profiles/preferences/show.html.haml
@@ -1,11 +1,11 @@
-- page_title 'Preferences'
+- page_title _('Preferences')
- @content_class = "limit-container-width" unless fluid_layout
= form_for @user, url: profile_preferences_path, remote: true, method: :put, html: { class: 'row prepend-top-default js-preferences-form' } do |f|
.col-lg-4.application-theme
%h4.prepend-top-0
= s_('Preferences|Navigation theme')
- %p Customize the appearance of the application header and navigation sidebar.
+ %p= _("Customize the appearance of the application header and navigation sidebar.")
.col-lg-8.application-theme
- Gitlab::Themes.each do |theme|
= label_tag do
@@ -18,11 +18,11 @@
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Syntax highlighting theme
+ = _("Syntax highlighting theme")
%p
- This setting allows you to customize the appearance of the syntax.
+ = _("This setting allows you to customize the appearance of the syntax.")
= succeed '.' do
- = link_to 'Learn more', help_page_path('user/profile/preferences', anchor: 'syntax-highlighting-theme'), target: '_blank'
+ = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'syntax-highlighting-theme'), target: '_blank'
.col-lg-8.syntax-theme
- Gitlab::ColorSchemes.each do |scheme|
= label_tag do
@@ -35,27 +35,27 @@
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Behavior
+ = _("Behavior")
%p
- This setting allows you to customize the behavior of the system layout and default views.
+ = _("This setting allows you to customize the behavior of the system layout and default views.")
= succeed '.' do
- = link_to 'Learn more', help_page_path('user/profile/preferences', anchor: 'behavior'), target: '_blank'
+ = link_to _('Learn more'), help_page_path('user/profile/preferences', anchor: 'behavior'), target: '_blank'
.col-lg-8
.form-group
= f.label :layout, class: 'label-bold' do
- Layout width
+ = _("Layout width")
= f.select :layout, layout_choices, {}, class: 'form-control'
.form-text.text-muted
- Choose between fixed (max. 1200px) and fluid (100%) application layout.
+ = _('Choose between fixed (max. 1200px) and fluid (100%%) application layout.')
.form-group
= f.label :dashboard, class: 'label-bold' do
- Default dashboard
+ = _("Default dashboard")
= f.select :dashboard, dashboard_choices, {}, class: 'form-control'
.form-group
= f.label :project_view, class: 'label-bold' do
- Project overview content
+ = _("Project overview content")
= f.select :project_view, project_view_choices, {}, class: 'form-control'
.form-text.text-muted
- Choose what content you want to see on a project’s overview page
+ = _("Choose what content you want to see on a project’s overview page")
.form-group
- = f.submit 'Save changes', class: 'btn btn-save'
+ = f.submit _('Save changes'), class: 'btn btn-save'
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index 6f08a294c5d98b3c82e4566c5f95edc075cf5868..df3850de7679227eee7e98764b8c43674ed98ece 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -1,4 +1,4 @@
-- breadcrumb_title "Edit Profile"
+- breadcrumb_title _("Edit Profile")
- @content_class = "limit-container-width" unless fluid_layout
= bootstrap_form_for @user, url: profile_path, method: :put, html: { multipart: true, class: 'edit-user prepend-top-default js-quick-submit' }, authenticity_token: true do |f|
@@ -7,16 +7,16 @@
.row
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Public Avatar
+ = _("Public Avatar")
%p
- if @user.avatar?
- You can change your avatar here
+ = _("You can change your avatar here")
- if gravatar_enabled?
- or remove the current avatar to revert to #{link_to Gitlab.config.gravatar.host, 'https://' + Gitlab.config.gravatar.host}
+ #{ _("or remove the current avatar to revert to") } #{link_to Gitlab.config.gravatar.host, 'https://' + Gitlab.config.gravatar.host}
- else
- You can upload an avatar here
+ = _("You can upload an avatar here")
- if gravatar_enabled?
- or change it at #{link_to Gitlab.config.gravatar.host, 'https://' + Gitlab.config.gravatar.host}
+ #{ _("or change it at") } #{link_to Gitlab.config.gravatar.host, 'https://' + Gitlab.config.gravatar.host}
.col-lg-8
.clearfix.avatar-image.append-bottom-default
= link_to avatar_icon_for_user(@user, 400), target: '_blank', rel: 'noopener noreferrer' do
@@ -66,57 +66,56 @@
.row
.col-lg-4.profile-settings-sidebar
%h4.prepend-top-0
- Main settings
+ = _("Main settings")
%p
- This information will appear on your profile.
+ = _("This information will appear on your profile.")
- if current_user.ldap_user?
- Some options are unavailable for LDAP accounts
+ = _("Some options are unavailable for LDAP accounts")
.col-lg-8
.row
- if @user.read_only_attribute?(:name)
- = f.text_field :name, required: true, readonly: true, wrapper: { class: 'col-md-9' },
- help: "Your name was automatically set based on your #{ attribute_provider_label(:name) } account, so people you know can recognize you."
+ = f.text_field :name, required: true, readonly: true, wrapper: { class: 'col-md-9' }, help: _("Your name was automatically set based on your %{name} account, so people you know can recognize you.") % { name: attribute_provider_label(:name) }
- else
- = f.text_field :name, required: true, wrapper: { class: 'col-md-9' }, help: "Enter your name, so people you know can recognize you."
- = f.text_field :id, readonly: true, label: 'User ID', wrapper: { class: 'col-md-3' }
+ = f.text_field :name, required: true, wrapper: { class: 'col-md-9' }, help: _("Enter your name, so people you know can recognize you.")
+ = f.text_field :id, readonly: true, label: _('User ID'), wrapper: { class: 'col-md-3' }
- if @user.read_only_attribute?(:email)
- = f.text_field :email, required: true, readonly: true, help: "Your email address was automatically set based on your #{ attribute_provider_label(:email) } account."
+ = f.text_field :email, required: true, readonly: true, help: _("Your email address was automatically set based on your %{email} account.") % { email: attribute_provider_label(:email) }
- else
= f.text_field :email, required: true, value: (@user.email unless @user.temp_oauth_email?),
help: user_email_help_text(@user)
= f.select :public_email, options_for_select(@user.all_emails, selected: @user.public_email),
- { help: 'This email will be displayed on your public profile.', include_blank: 'Do not show on profile' },
+ { help: _('This email will be displayed on your public profile.'), include_blank: _('Do not show on profile') },
control_class: 'select2'
= f.select :preferred_language, Gitlab::I18n::AVAILABLE_LANGUAGES.map { |value, label| [label, value] },
- { help: 'This feature is experimental and translations are not complete yet.' },
+ { help: _('This feature is experimental and translations are not complete yet.') },
control_class: 'select2'
= f.text_field :skype
= f.text_field :linkedin
= f.text_field :twitter
- = f.text_field :website_url, label: 'Website'
+ = f.text_field :website_url, label: _('Website')
- if @user.read_only_attribute?(:location)
- = f.text_field :location, readonly: true, help: "Your location was automatically set based on your #{ attribute_provider_label(:location) } account."
+ = f.text_field :location, readonly: true, help: _("Your location was automatically set based on your %{location} account.") % { location: attribute_provider_label(:location) }
- else
= f.text_field :location
= f.text_field :organization
- = f.text_area :bio, rows: 4, maxlength: 250, help: 'Tell us about yourself in fewer than 250 characters.'
+ = f.text_area :bio, rows: 4, maxlength: 250, help: _('Tell us about yourself in fewer than 250 characters.')
%hr
- %h5 Private profile
+ %h5= _("Private profile")
- private_profile_label = capture do
- Don't display activity-related personal information on your profile
+ = _("Don't display activity-related personal information on your profile")
= link_to icon('question-circle'), help_page_path('user/profile/index.md', anchor: 'private-profile')
= f.check_box :private_profile, label: private_profile_label
.prepend-top-default.append-bottom-default
- = f.submit 'Update profile settings', class: 'btn btn-success'
- = link_to 'Cancel', user_path(current_user), class: 'btn btn-cancel'
+ = f.submit _('Update profile settings'), class: 'btn btn-success'
+ = link_to _('Cancel'), user_path(current_user), class: 'btn btn-cancel'
.modal.modal-profile-crop
.modal-dialog
.modal-content
.modal-header
%h4.modal-title
- Position and size your new avatar
+ = _("Position and size your new avatar")
%button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') }
%span{ "aria-hidden": true } ×
.modal-body
@@ -130,4 +129,4 @@
%span.fa.fa-search-minus
.modal-footer
%button.btn.btn-primary.js-upload-user-avatar{ type: 'button' }
- Set new profile picture
+ = _("Set new profile picture")
diff --git a/app/views/profiles/two_factor_auths/_codes.html.haml b/app/views/profiles/two_factor_auths/_codes.html.haml
index 93722d7b034349318cd0d42f634a21ca17d3eff6..98bc83c9ddc6cb658fe86ad558a7333106c0178e 100644
--- a/app/views/profiles/two_factor_auths/_codes.html.haml
+++ b/app/views/profiles/two_factor_auths/_codes.html.haml
@@ -1,8 +1,5 @@
%p.slead
- Should you ever lose your phone, each of these recovery codes can be used one
- time each to regain access to your account. Please save them in a safe place, or you
- %b will
- lose access to your account.
+ = _("Should you ever lose your phone, each of these recovery codes can be used one time each to regain access to your account. Please save them in a safe place, or you %{bold_start}will%{bold_end} lose access to your account.").html_safe % { bold_start: ''.html_safe, bold_end: ''.html_safe }
.codes.card
%ul
@@ -10,4 +7,4 @@
%li
%span.monospace= code
-= link_to 'Proceed', profile_account_path, class: 'btn btn-success'
+= link_to _('Proceed'), profile_account_path, class: 'btn btn-success'
diff --git a/app/views/profiles/two_factor_auths/codes.html.haml b/app/views/profiles/two_factor_auths/codes.html.haml
index addf356697ad4f41fcbc51a08f3781d416d423fb..5ce95fe4c13ead105b47a662af1385cde6a966d8 100644
--- a/app/views/profiles/two_factor_auths/codes.html.haml
+++ b/app/views/profiles/two_factor_auths/codes.html.haml
@@ -1,5 +1,5 @@
-- page_title 'Recovery Codes', 'Two-factor Authentication'
+- page_title _('Recovery Codes'), _('Two-factor Authentication')
-%h3.page-title Two-factor Authentication Recovery codes
+%h3.page-title= _('Two-factor Authentication Recovery codes')
%hr
= render 'codes'
diff --git a/app/views/profiles/two_factor_auths/create.html.haml b/app/views/profiles/two_factor_auths/create.html.haml
index e330aadac133eb91d3cfce012f5a5fa48cb134a2..44d96afecc50233505c04e0f5d850bcc3fe98023 100644
--- a/app/views/profiles/two_factor_auths/create.html.haml
+++ b/app/views/profiles/two_factor_auths/create.html.haml
@@ -1,6 +1,6 @@
-- page_title 'Two-factor Authentication', 'Account'
+- page_title _('Two-factor Authentication'), _('Account')
.alert.alert-success
- Congratulations! You have enabled Two-factor Authentication!
+ = _("Congratulations! You have enabled Two-factor Authentication!")
= render 'codes'
diff --git a/app/views/profiles/two_factor_auths/show.html.haml b/app/views/profiles/two_factor_auths/show.html.haml
index cd10b8758f60917909e8cd40e105e5f7b8a378fc..7fa2e00a102429fb6e960ac030d433d416ca6207 100644
--- a/app/views/profiles/two_factor_auths/show.html.haml
+++ b/app/views/profiles/two_factor_auths/show.html.haml
@@ -1,49 +1,50 @@
-- page_title 'Two-Factor Authentication', 'Account'
-- add_to_breadcrumbs("Two-Factor Authentication", profile_account_path)
+- page_title _('Two-Factor Authentication'), _('Account')
+- add_to_breadcrumbs(_("Two-Factor Authentication"), profile_account_path)
- @content_class = "limit-container-width" unless fluid_layout
.js-two-factor-auth{ 'data-two-factor-skippable' => "#{two_factor_skippable?}", 'data-two_factor_skip_url' => skip_profile_two_factor_auth_path }
.row.prepend-top-default
.col-lg-4
%h4.prepend-top-0
- Register Two-Factor Authentication App
+ = _("Register Two-Factor Authentication App")
%p
- Use an app on your mobile device to enable two-factor authentication (2FA).
+ = _("Use an app on your mobile device to enable two-factor authentication (2FA).")
.col-lg-8
- if current_user.two_factor_otp_enabled?
%p
- You've already enabled two-factor authentication using mobile authenticator applications. In order to register a different device, you must first disable two-factor authentication.
+ = _("You've already enabled two-factor authentication using mobile authenticator applications. In order to register a different device, you must first disable two-factor authentication.")
%p
- If you lose your recovery codes you can generate new ones, invalidating all previous codes.
+ = _("If you lose your recovery codes you can generate new ones, invalidating all previous codes.")
%div
- = link_to 'Disable two-factor authentication', profile_two_factor_auth_path,
+ = link_to _('Disable two-factor authentication'), profile_two_factor_auth_path,
method: :delete,
- data: { confirm: "Are you sure? This will invalidate your registered applications and U2F devices." },
+ data: { confirm: _("Are you sure? This will invalidate your registered applications and U2F devices.") },
class: 'btn btn-danger append-right-10'
= form_tag codes_profile_two_factor_auth_path, {style: 'display: inline-block', method: :post} do |f|
- = submit_tag 'Regenerate recovery codes', class: 'btn'
+ = submit_tag _('Regenerate recovery codes'), class: 'btn'
- else
%p
- Download the Google Authenticator application from App Store or Google Play Store and scan this code.
- More information is available in the #{link_to('documentation', help_page_path('user/profile/account/two_factor_authentication'))}.
+ = _("Download the Google Authenticator application from App Store or Google Play Store and scan this code.")
+ - link_to_documentation = link_to(_('documentation'), help_page_path('user/profile/account/two_factor_authentication'))
+ = _("More information is available in the %{link_to_documentation}.").html_safe % { link_to_documentation: link_to_documentation }
.row.append-bottom-10
.col-md-4
= raw @qr_code
.col-md-8
.account-well
%p.prepend-top-0.append-bottom-0
- Can't scan the code?
+ = _("Can't scan the code?")
%p.prepend-top-0.append-bottom-0
- To add the entry manually, provide the following details to the application on your phone.
+ = _("To add the entry manually, provide the following details to the application on your phone.")
%p.prepend-top-0.append-bottom-0
- Account:
+ = _("Account:")
= @account_string
%p.prepend-top-0.append-bottom-0
- Key:
+ = _("Key:")
= current_user.otp_secret.scan(/.{4}/).join(' ')
%p.two-factor-new-manual-content
- Time based: Yes
+ = _("Time based: Yes")
= form_tag profile_two_factor_auth_path, method: :post do |f|
- if @error
.alert.alert-danger
@@ -52,20 +53,18 @@
= label_tag :pin_code, nil, class: "label-bold"
= text_field_tag :pin_code, nil, class: "form-control", required: true
.prepend-top-default
- = submit_tag 'Register with two-factor app', class: 'btn btn-success'
+ = submit_tag _('Register with two-factor app'), class: 'btn btn-success'
%hr
.row.prepend-top-default
.col-lg-4
%h4.prepend-top-0
- Register Universal Two-Factor (U2F) Device
+ = _("Register Universal Two-Factor (U2F) Device")
%p
- Use a hardware device to add the second factor of authentication.
+ = _("Use a hardware device to add the second factor of authentication.")
%p
- As U2F devices are only supported by a few browsers, we require that you set up a
- two-factor authentication app before a U2F device. That way you'll always be able to
- log in - even when you're using an unsupported browser.
+ = _("As U2F devices are only supported by a few browsers, we require that you set up a two-factor authentication app before a U2F device. That way you'll always be able to log in - even when you're using an unsupported browser.")
.col-lg-8
- if @u2f_registration.errors.present?
= form_errors(@u2f_registration)
@@ -73,7 +72,7 @@
%hr
- %h5 U2F Devices (#{@u2f_registrations.length})
+ %h5= _("U2F Devices (%{length})") % { length: @u2f_registrations.length }
- if @u2f_registrations.present?
.table-responsive
@@ -84,16 +83,16 @@
%col{ width: "20%" }
%thead
%tr
- %th Name
- %th Registered On
+ %th= _('Name')
+ %th= _('Registered On')
%th
%tbody
- @u2f_registrations.each do |registration|
%tr
%td= registration.name.presence || ""
%td= registration.created_at.to_date.to_s(:medium)
- %td= link_to "Delete", profile_u2f_registration_path(registration), method: :delete, class: "btn btn-danger float-right", data: { confirm: "Are you sure you want to delete this device? This action cannot be undone." }
+ %td= link_to _("Delete"), profile_u2f_registration_path(registration), method: :delete, class: "btn btn-danger float-right", data: { confirm: _("Are you sure you want to delete this device? This action cannot be undone.") }
- else
.settings-message.text-center
- You don't have any U2F devices registered yet.
+ = _("You don't have any U2F devices registered yet.")
diff --git a/app/views/shared/_personal_access_tokens_form.html.haml b/app/views/shared/_personal_access_tokens_form.html.haml
index 58d310fac16b59667ed72849da83befcfbeb05dc..d6b8fd50060cfdbd4ef305f3e74dbcfc142c547e 100644
--- a/app/views/shared/_personal_access_tokens_form.html.haml
+++ b/app/views/shared/_personal_access_tokens_form.html.haml
@@ -1,9 +1,9 @@
-- type = impersonation ? "impersonation" : "personal access"
+- type = impersonation ? _("impersonation") : _("personal access")
%h5.prepend-top-0
- Add a #{type} token
+ = _("Add a %{type} token") % {type: type}
%p.profile-settings-content
- Pick a name for the application, and we'll give you a unique #{type} token.
+ = _("Pick a name for the application, and we'll give you a unique %{type} token.") % {type: type}
= form_for token, url: path, method: :post, html: { class: 'js-requires-input' } do |f|
@@ -26,4 +26,4 @@
= render 'shared/tokens/scopes_form', prefix: 'personal_access_token', token: token, scopes: scopes
.prepend-top-default
- = f.submit "Create #{type} token", class: "btn btn-create"
+ = f.submit _("Create %{type} token") % {type: type}, class: "btn btn-create"
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 0ea8789d6cbfc5b9435051434d264fa0aa5b3903..90051586b76dcdf8e2b9ccb1594b8341416db4af 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -108,6 +108,9 @@ msgstr ""
msgid "%{commit_author_link} authored %{commit_timeago}"
msgstr ""
+msgid "%{confirm_action} confirmation email"
+msgstr ""
+
msgid "%{counter_storage} (%{counter_repositories} repositories, %{counter_build_artifacts} build artifacts, %{counter_lfs_objects} LFS)"
msgstr ""
@@ -154,6 +157,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts
msgstr[0] ""
msgstr[1] ""
+msgid "%{strong_start}Signed in%{strong_end} on"
+msgstr ""
+
msgid "%{text} %{files}"
msgid_plural "%{text} %{files} files"
msgstr[0] ""
@@ -369,12 +375,21 @@ msgstr ""
msgid "Account and limit"
msgstr ""
+msgid "Account:"
+msgstr ""
+
+msgid "Activate signin with one of the following services"
+msgstr ""
+
msgid "Active"
msgstr ""
msgid "Active Sessions"
msgstr ""
+msgid "Active chat names (%{size})"
+msgstr ""
+
msgid "Activity"
msgstr ""
@@ -399,9 +414,24 @@ msgstr ""
msgid "Add Readme"
msgstr ""
+msgid "Add a %{type} token"
+msgstr ""
+
+msgid "Add a GPG key"
+msgstr ""
+
msgid "Add additional text to appear in all email communications. %{character_limit} character limit"
msgstr ""
+msgid "Add an SSH key"
+msgstr ""
+
+msgid "Add email address"
+msgstr ""
+
+msgid "Add key"
+msgstr ""
+
msgid "Add new application"
msgstr ""
@@ -498,12 +528,18 @@ msgstr ""
msgid "Advanced settings"
msgstr ""
+msgid "After a successful password update, you will be redirected to the login page where you can log in with your new password."
+msgstr ""
+
msgid "All"
msgstr ""
msgid "All changes are committed"
msgstr ""
+msgid "All email addresses will be used to identify your commits."
+msgstr ""
+
msgid "All features are enabled for blank projects, from templates, or when importing, but you can disable them afterward in the project settings."
msgstr ""
@@ -705,6 +741,9 @@ msgstr ""
msgid "Archived project! Repository and other project resources are read-only"
msgstr ""
+msgid "Are you sure you want to delete this device? This action cannot be undone."
+msgstr ""
+
msgid "Are you sure you want to delete this pipeline schedule?"
msgstr ""
@@ -726,15 +765,39 @@ msgstr ""
msgid "Are you sure you want to reset the health check token?"
msgstr ""
+msgid "Are you sure you want to revoke this nickname?"
+msgstr ""
+
msgid "Are you sure you want to unlock %{path_lock_path}?"
msgstr ""
msgid "Are you sure?"
msgstr ""
+msgid "Are you sure? All commits that were signed with this GPG key will be unverified."
+msgstr ""
+
+msgid "Are you sure? Any RSS or calendar URLs currently in use will stop working."
+msgstr ""
+
+msgid "Are you sure? Any issue email addresses currently in use will stop working."
+msgstr ""
+
+msgid "Are you sure? Removing this GPG key does not affect already signed commits."
+msgstr ""
+
+msgid "Are you sure? The device will be signed out of GitLab."
+msgstr ""
+
+msgid "Are you sure? This will invalidate your registered applications and U2F devices."
+msgstr ""
+
msgid "Artifacts"
msgstr ""
+msgid "As U2F devices are only supported by a few browsers, we require that you set up a two-factor authentication app before a U2F device. That way you'll always be able to log in - even when you're using an unsupported browser."
+msgstr ""
+
msgid "Ascending"
msgstr ""
@@ -807,6 +870,9 @@ msgstr ""
msgid "Authorization code:"
msgstr ""
+msgid "Authorization required"
+msgstr ""
+
msgid "Authorization was granted by entering your username and password in the application."
msgstr ""
@@ -822,6 +888,9 @@ msgstr ""
msgid "Authorized applications (%{size})"
msgstr ""
+msgid "Authorize|to use your account?"
+msgstr ""
+
msgid "Authors: %{authors}"
msgstr ""
@@ -969,9 +1038,15 @@ msgstr ""
msgid "Badges|Your badges"
msgstr ""
+msgid "Before you can add a GPG key you need to %{link_to_generate}."
+msgstr ""
+
msgid "Begin with the selected commit"
msgstr ""
+msgid "Behavior"
+msgstr ""
+
msgid "Below are examples of regex for existing tools:"
msgstr ""
@@ -1223,6 +1298,9 @@ msgstr ""
msgid "Business metrics (Custom)"
msgstr ""
+msgid "By default, all projects and groups will use the global notifications setting."
+msgstr ""
+
msgid "ByAuthor|by"
msgstr ""
@@ -1295,6 +1373,9 @@ msgstr ""
msgid "Can't find HEAD commit for this branch"
msgstr ""
+msgid "Can't scan the code?"
+msgstr ""
+
msgid "Cancel"
msgstr ""
@@ -1319,6 +1400,12 @@ msgstr ""
msgid "Change this value to influence how frequently the GitLab UI polls for updates."
msgstr ""
+msgid "Change username"
+msgstr ""
+
+msgid "Change your password"
+msgstr ""
+
msgid "ChangeTypeActionLabel|Pick into branch"
msgstr ""
@@ -1340,6 +1427,9 @@ msgstr ""
msgid "Changes are shown as if the source revision was being merged into the target revision."
msgstr ""
+msgid "Changing your username can have unintended side effects."
+msgstr ""
+
msgid "Charts"
msgstr ""
@@ -1379,12 +1469,18 @@ msgstr ""
msgid "Choose between clone or fetch to get the recent application code"
msgstr ""
+msgid "Choose between fixed (max. 1200px) and fluid (100%%) application layout."
+msgstr ""
+
msgid "Choose file..."
msgstr ""
msgid "Choose the top-level group for your repository imports."
msgstr ""
+msgid "Choose what content you want to see on a project’s overview page"
+msgstr ""
+
msgid "Choose which groups you wish to synchronize to this secondary node."
msgstr ""
@@ -1499,6 +1595,9 @@ msgstr ""
msgid "Click any project name in the project list below to navigate to the project milestone."
msgstr ""
+msgid "Click on icon to activate signin with one of the following services"
+msgstr ""
+
msgid "Click the Download button and wait for downloading to complete."
msgstr ""
@@ -2079,6 +2178,9 @@ msgstr ""
msgid "Configure the way a user creates a new account."
msgstr ""
+msgid "Congratulations! You have enabled Two-factor Authentication!"
+msgstr ""
+
msgid "Connect"
msgstr ""
@@ -2091,6 +2193,9 @@ msgstr ""
msgid "Connect your external repositories, and CI/CD pipelines will run for new commits. A GitLab project will be created with only CI/CD features enabled."
msgstr ""
+msgid "Connected Accounts"
+msgstr ""
+
msgid "Connecting..."
msgstr ""
@@ -2178,6 +2283,9 @@ msgstr ""
msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready."
msgstr ""
+msgid "Control emails linked to your account"
+msgstr ""
+
msgid "Control the display of third party offers."
msgstr ""
@@ -2214,6 +2322,9 @@ msgstr ""
msgid "Copy incoming email address to clipboard"
msgstr ""
+msgid "Copy personal access token to clipboard"
+msgstr ""
+
msgid "Copy reference to clipboard"
msgstr ""
@@ -2226,6 +2337,9 @@ msgstr ""
msgid "Create"
msgstr ""
+msgid "Create %{type} token"
+msgstr ""
+
msgid "Create New Directory"
msgstr ""
@@ -2364,6 +2478,9 @@ msgstr ""
msgid "Customize how Google Code email addresses and usernames are imported into GitLab. In the next step, you'll be able to select the projects you want to import."
msgstr ""
+msgid "Customize the appearance of the application header and navigation sidebar."
+msgstr ""
+
msgid "Cycle Analytics"
msgstr ""
@@ -2412,6 +2529,9 @@ msgstr ""
msgid "Default classification label"
msgstr ""
+msgid "Default dashboard"
+msgstr ""
+
msgid "Default: Directly import the Google Code email address or username"
msgstr ""
@@ -2609,12 +2729,21 @@ msgstr ""
msgid "Disable group Runners"
msgstr ""
+msgid "Disable two-factor authentication"
+msgstr ""
+
+msgid "Disabled"
+msgstr ""
+
msgid "Discard changes"
msgstr ""
msgid "Discard draft"
msgstr ""
+msgid "Disconnect"
+msgstr ""
+
msgid "Discover GitLab Geo."
msgstr ""
@@ -2630,6 +2759,9 @@ msgstr ""
msgid "Dismiss Merge Request promotion"
msgstr ""
+msgid "Do not show on profile"
+msgstr ""
+
msgid "Do you want to customize how Google Code email addresses and usernames are imported into GitLab?"
msgstr ""
@@ -2639,6 +2771,12 @@ msgstr ""
msgid "Domain"
msgstr ""
+msgid "Don't display activity-related personal information on your profile"
+msgstr ""
+
+msgid "Don't paste the private part of the GPG key. Paste the public part which begins with '-----BEGIN PGP PUBLIC KEY BLOCK-----'."
+msgstr ""
+
msgid "Don't show again"
msgstr ""
@@ -2657,6 +2795,9 @@ msgstr ""
msgid "Download tar.gz"
msgstr ""
+msgid "Download the Google Authenticator application from App Store or Google Play Store and scan this code."
+msgstr ""
+
msgid "Download zip"
msgstr ""
@@ -2690,9 +2831,15 @@ msgstr ""
msgid "Edit Label"
msgstr ""
+msgid "Edit Password"
+msgstr ""
+
msgid "Edit Pipeline Schedule %{id}"
msgstr ""
+msgid "Edit Profile"
+msgstr ""
+
msgid "Edit Snippet"
msgstr ""
@@ -2771,6 +2918,9 @@ msgstr ""
msgid "Enable the Performance Bar for a given group."
msgstr ""
+msgid "Enable two-factor authentication"
+msgstr ""
+
msgid "Enabled"
msgstr ""
@@ -2780,6 +2930,9 @@ msgstr ""
msgid "Enter in your Bitbucket Server URL and personal access token below"
msgstr ""
+msgid "Enter your name, so people you know can recognize you."
+msgstr ""
+
msgid "Environments"
msgstr ""
@@ -3053,6 +3206,9 @@ msgstr ""
msgid "February"
msgstr ""
+msgid "Feed token"
+msgstr ""
+
msgid "Fields on this page are now uneditable, you can configure"
msgstr ""
@@ -3083,6 +3239,9 @@ msgstr ""
msgid "Find the newly extracted Takeout/Google Code Project Hosting/GoogleCodeProjectHosting.json file."
msgstr ""
+msgid "Fingerprint:"
+msgstr ""
+
msgid "Fingerprints"
msgstr ""
@@ -3178,6 +3337,9 @@ msgstr ""
msgid "GPG Keys"
msgstr ""
+msgid "GPG keys allow you to verify signed commits."
+msgstr ""
+
msgid "General"
msgstr ""
@@ -3523,6 +3685,12 @@ msgstr ""
msgid "Gitea Import"
msgstr ""
+msgid "Global notification level"
+msgstr ""
+
+msgid "Global notification settings"
+msgstr ""
+
msgid "Go Back"
msgstr ""
@@ -3646,6 +3814,9 @@ msgstr ""
msgid "Groups"
msgstr ""
+msgid "Groups (%{count})"
+msgstr ""
+
msgid "Groups can also be nested by creating %{subgroup_docs_link_start}subgroups%{subgroup_docs_link_end}."
msgstr ""
@@ -3759,6 +3930,9 @@ msgstr ""
msgid "History"
msgstr ""
+msgid "History of authentications"
+msgstr ""
+
msgid "Housekeeping successfully started"
msgstr ""
@@ -3768,6 +3942,9 @@ msgstr ""
msgid "I accept the|Terms of Service and Privacy Policy"
msgstr ""
+msgid "I forgot my password"
+msgstr ""
+
msgid "ID"
msgstr ""
@@ -3834,6 +4011,9 @@ msgstr ""
msgid "If you already have files you can push them using the %{link_to_cli} below."
msgstr ""
+msgid "If you lose your recovery codes you can generate new ones, invalidating all previous codes."
+msgstr ""
+
msgid "If your HTTP repository is not publicly accessible, add authentication information to the URL: https://username:password@gitlab.company.com/group/project.git."
msgstr ""
@@ -3918,9 +4098,15 @@ msgstr ""
msgid "Include the username in the URL if required: https://username@gitlab.company.com/group/project.git."
msgstr ""
+msgid "Incoming email token"
+msgstr ""
+
msgid "Incompatible Project"
msgstr ""
+msgid "Increase your account's security by enabling Two-Factor Authentication (2FA)."
+msgstr ""
+
msgid "Inline"
msgstr ""
@@ -3995,6 +4181,9 @@ msgstr ""
msgid "Issues closed"
msgstr ""
+msgid "It cannot be used to access any other data."
+msgstr ""
+
msgid "Jan"
msgstr ""
@@ -4022,6 +4211,15 @@ msgstr ""
msgid "June"
msgstr ""
+msgid "Keep this token secret. Anyone who gets ahold of it can create issues as if they were you."
+msgstr ""
+
+msgid "Keep this token secret. Anyone who gets ahold of it can read activity and issue RSS feeds or your calendar feed as if they were you."
+msgstr ""
+
+msgid "Key:"
+msgstr ""
+
msgid "Koding"
msgstr ""
@@ -4108,6 +4306,9 @@ msgstr[1] ""
msgid "Last Pipeline"
msgstr ""
+msgid "Last accessed on"
+msgstr ""
+
msgid "Last commit"
msgstr ""
@@ -4123,6 +4324,12 @@ msgstr ""
msgid "Last updated"
msgstr ""
+msgid "Last used"
+msgstr ""
+
+msgid "Last used on:"
+msgstr ""
+
msgid "LastPushEvent|You pushed to"
msgstr ""
@@ -4132,6 +4339,9 @@ msgstr ""
msgid "Latest changes"
msgstr ""
+msgid "Layout width"
+msgstr ""
+
msgid "Learn more"
msgstr ""
@@ -4278,9 +4488,15 @@ msgstr ""
msgid "Logs"
msgstr ""
+msgid "Main settings"
+msgstr ""
+
msgid "Make everyone on your team more productive regardless of their location. GitLab Geo creates read-only mirrors of your GitLab instance so you can reduce the time it takes to clone and fetch large repos."
msgstr ""
+msgid "Make sure you save it - you won't be able to access it again."
+msgstr ""
+
msgid "Make sure you're logged into the account that owns the projects you'd like to import."
msgstr ""
@@ -4311,6 +4527,9 @@ msgstr ""
msgid "Manage project labels"
msgstr ""
+msgid "Manage two-factor authentication"
+msgstr ""
+
msgid "Manage your group’s membership while adding another level of security with SAML."
msgstr ""
@@ -4611,6 +4830,9 @@ msgstr ""
msgid "More information"
msgstr ""
+msgid "More information is available in the %{link_to_documentation}."
+msgstr ""
+
msgid "More information is available|here"
msgstr ""
@@ -4626,6 +4848,9 @@ msgstr ""
msgid "Multiple issue boards"
msgstr ""
+msgid "N/A"
+msgstr ""
+
msgid "Name"
msgstr ""
@@ -4676,6 +4901,9 @@ msgstr[1] ""
msgid "New Label"
msgstr ""
+msgid "New Password"
+msgstr ""
+
msgid "New Pipeline Schedule"
msgstr ""
@@ -4715,6 +4943,9 @@ msgstr ""
msgid "New merge request"
msgstr ""
+msgid "New password"
+msgstr ""
+
msgid "New pipelines will cancel older, pending pipelines on the same branch"
msgstr ""
@@ -4736,6 +4967,9 @@ msgstr ""
msgid "New..."
msgstr ""
+msgid "Nickname"
+msgstr ""
+
msgid "No"
msgstr ""
@@ -4856,6 +5090,9 @@ msgstr ""
msgid "Notes|Are you sure you want to cancel creating this comment?"
msgstr ""
+msgid "Notification email"
+msgstr ""
+
msgid "Notification events"
msgstr ""
@@ -5086,6 +5323,12 @@ msgstr ""
msgid "Personal Access Token"
msgstr ""
+msgid "Personal Access Tokens"
+msgstr ""
+
+msgid "Pick a name for the application, and we'll give you a unique %{type} token."
+msgstr ""
+
msgid "Pipeline"
msgstr ""
@@ -5278,6 +5521,9 @@ msgstr ""
msgid "Please select at least one filter to see results"
msgstr ""
+msgid "Please set a new password before proceeding. %{newline} After a successful password update you will be redirected to login screen."
+msgstr ""
+
msgid "Please solve the reCAPTCHA"
msgstr ""
@@ -5290,6 +5536,9 @@ msgstr ""
msgid "Please wait while we import the repository for you. Refresh at will."
msgstr ""
+msgid "Position and size your new avatar"
+msgstr ""
+
msgid "Preferences"
msgstr ""
@@ -5302,6 +5551,9 @@ msgstr ""
msgid "Primary"
msgstr ""
+msgid "Primary email"
+msgstr ""
+
msgid "Prioritize"
msgstr ""
@@ -5320,9 +5572,15 @@ msgstr ""
msgid "Private - The group and its projects can only be viewed by members."
msgstr ""
+msgid "Private profile"
+msgstr ""
+
msgid "Private projects can be created in your personal namespace with:"
msgstr ""
+msgid "Proceed"
+msgstr ""
+
msgid "Profile"
msgstr ""
@@ -5470,6 +5728,9 @@ msgstr ""
msgid "Project name"
msgstr ""
+msgid "Project overview content"
+msgstr ""
+
msgid "ProjectActivityRSS|Subscribe"
msgstr ""
@@ -5527,6 +5788,9 @@ msgstr ""
msgid "Projects"
msgstr ""
+msgid "Projects (%{count})"
+msgstr ""
+
msgid "Projects shared with %{group_name}"
msgstr ""
@@ -5698,6 +5962,12 @@ msgstr ""
msgid "Public - The project can be accessed without any authentication."
msgstr ""
+msgid "Public Avatar"
+msgstr ""
+
+msgid "Public email"
+msgstr ""
+
msgid "Public pipelines"
msgstr ""
@@ -5746,6 +6016,12 @@ msgstr ""
msgid "Real-time features"
msgstr ""
+msgid "Receive notifications about your own activity"
+msgstr ""
+
+msgid "Recovery Codes"
+msgstr ""
+
msgid "Reference:"
msgstr ""
@@ -5760,15 +6036,30 @@ msgstr[1] ""
msgid "Regenerate key"
msgstr ""
+msgid "Regenerate recovery codes"
+msgstr ""
+
msgid "Register / Sign In"
msgstr ""
+msgid "Register Two-Factor Authentication App"
+msgstr ""
+
+msgid "Register Universal Two-Factor (U2F) Device"
+msgstr ""
+
msgid "Register and see your runners for this group."
msgstr ""
msgid "Register and see your runners for this project."
msgstr ""
+msgid "Register with two-factor app"
+msgstr ""
+
+msgid "Registered On"
+msgstr ""
+
msgid "Registry"
msgstr ""
@@ -5889,6 +6180,9 @@ msgstr ""
msgid "Require all users to accept Terms of Service and Privacy Policy when they access GitLab."
msgstr ""
+msgid "Resend"
+msgstr ""
+
msgid "Reset git storage health information"
msgstr ""
@@ -5984,12 +6278,18 @@ msgstr ""
msgid "SHA1 fingerprint of the SAML token signing certificate. Get this from your identity provider, where it can also be called \"Thumbprint\"."
msgstr ""
+msgid "SSH Key"
+msgstr ""
+
msgid "SSH Keys"
msgstr ""
msgid "SSH host keys"
msgstr ""
+msgid "SSH keys allow you to establish a secure connection between your computer and GitLab."
+msgstr ""
+
msgid "SSH public key"
msgstr ""
@@ -6005,6 +6305,9 @@ msgstr ""
msgid "Save changes"
msgstr ""
+msgid "Save password"
+msgstr ""
+
msgid "Save pipeline schedule"
msgstr ""
@@ -6172,6 +6475,9 @@ msgstr ""
msgid "Selective synchronization"
msgstr ""
+msgid "Send"
+msgstr ""
+
msgid "Send email"
msgstr ""
@@ -6184,6 +6490,9 @@ msgstr ""
msgid "Server version"
msgstr ""
+msgid "Service"
+msgstr ""
+
msgid "Service Desk"
msgstr ""
@@ -6205,6 +6514,12 @@ msgstr ""
msgid "Set max session time for web terminal."
msgstr ""
+msgid "Set new password"
+msgstr ""
+
+msgid "Set new profile picture"
+msgstr ""
+
msgid "Set notification email for abuse reports."
msgstr ""
@@ -6232,6 +6547,9 @@ msgstr ""
msgid "Setup a specific Runner automatically"
msgstr ""
+msgid "Setup new password"
+msgstr ""
+
msgid "Share"
msgstr ""
@@ -6253,6 +6571,9 @@ msgstr ""
msgid "Sherlock Transactions"
msgstr ""
+msgid "Should you ever lose your phone, each of these recovery codes can be used one time each to regain access to your account. Please save them in a safe place, or you %{bold_start}will%{bold_end} lose access to your account."
+msgstr ""
+
msgid "Show command"
msgstr ""
@@ -6315,6 +6636,9 @@ msgstr ""
msgid "Sign-up restrictions"
msgstr ""
+msgid "Signed in with %{event_details} authentication"
+msgstr ""
+
msgid "Size and domain settings for static websites"
msgstr ""
@@ -6330,6 +6654,12 @@ msgstr ""
msgid "Snippets"
msgstr ""
+msgid "Social sign-in"
+msgstr ""
+
+msgid "Some options are unavailable for LDAP accounts"
+msgstr ""
+
msgid "Something went wrong on our end"
msgstr ""
@@ -6552,6 +6882,9 @@ msgstr ""
msgid "Status"
msgstr ""
+msgid "Status:"
+msgstr ""
+
msgid "Stop impersonation"
msgstr ""
@@ -6570,6 +6903,9 @@ msgstr ""
msgid "Subgroups"
msgstr ""
+msgid "Subkeys:"
+msgstr ""
+
msgid "Submit as spam"
msgstr ""
@@ -6591,6 +6927,9 @@ msgstr ""
msgid "Sync information"
msgstr ""
+msgid "Syntax highlighting theme"
+msgstr ""
+
msgid "System Hooks"
msgstr ""
@@ -6692,6 +7031,12 @@ msgstr ""
msgid "Team"
msgstr ""
+msgid "Team domain"
+msgstr ""
+
+msgid "Tell us about yourself in fewer than 250 characters."
+msgstr ""
+
msgid "Template"
msgstr ""
@@ -6830,6 +7175,18 @@ msgstr ""
msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6."
msgstr ""
+msgid "There are no GPG keys associated with this account."
+msgstr ""
+
+msgid "There are no GPG keys with access to your account."
+msgstr ""
+
+msgid "There are no SSH keys associated with this account."
+msgstr ""
+
+msgid "There are no SSH keys with access to your account."
+msgstr ""
+
msgid "There are no issues to show"
msgstr ""
@@ -6893,6 +7250,12 @@ msgstr ""
msgid "This directory"
msgstr ""
+msgid "This email will be displayed on your public profile."
+msgstr ""
+
+msgid "This feature is experimental and translations are not complete yet."
+msgstr ""
+
msgid "This group"
msgstr ""
@@ -6902,12 +7265,24 @@ msgstr ""
msgid "This group does not provide any group Runners yet."
msgstr ""
+msgid "This information will appear on your profile."
+msgstr ""
+
msgid "This is a confidential issue."
msgstr ""
+msgid "This is a list of devices that have logged into your account. Revoke any sessions that you do not recognize."
+msgstr ""
+
+msgid "This is a security log of important events involving your account."
+msgstr ""
+
msgid "This is the author's first Merge Request to this project."
msgstr ""
+msgid "This is your current session"
+msgstr ""
+
msgid "This issue is confidential"
msgstr ""
@@ -6974,6 +7349,12 @@ msgstr ""
msgid "This repository"
msgstr ""
+msgid "This setting allows you to customize the appearance of the syntax."
+msgstr ""
+
+msgid "This setting allows you to customize the behavior of the system layout and default views."
+msgstr ""
+
msgid "This source diff could not be displayed because it is too large."
msgstr ""
@@ -6992,6 +7373,9 @@ msgstr ""
msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here."
msgstr ""
+msgid "Time based: Yes"
+msgstr ""
+
msgid "Time before an issue gets scheduled"
msgstr ""
@@ -7173,12 +7557,18 @@ msgstr ""
msgid "Title"
msgstr ""
+msgid "Title:"
+msgstr ""
+
msgid "To GitLab"
msgstr ""
msgid "To add an SSH key you need to %{generate_link_start}generate one%{link_end} or use an %{existing_link_start}existing key%{link_end}."
msgstr ""
+msgid "To add the entry manually, provide the following details to the application on your phone."
+msgstr ""
+
msgid "To connect GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the repo scope, so we can display a list of your public and private repositories which are available to connect."
msgstr ""
@@ -7212,6 +7602,9 @@ msgstr ""
msgid "To set up SAML authentication for your group through an identity provider like Azure, Okta, Onelogin, Ping Identity, or your custom SAML 2.0 provider:"
msgstr ""
+msgid "To specify the notification level per project of a group you belong to, you need to visit project page and change notification level there."
+msgstr ""
+
msgid "To start serving your jobs you can add Runners to your group"
msgstr ""
@@ -7299,6 +7692,18 @@ msgstr ""
msgid "Twitter"
msgstr ""
+msgid "Two-Factor Authentication"
+msgstr ""
+
+msgid "Two-factor Authentication"
+msgstr ""
+
+msgid "Two-factor Authentication Recovery codes"
+msgstr ""
+
+msgid "U2F Devices (%{length})"
+msgstr ""
+
msgid "Unable to load the diff. %{button_try_again}"
msgstr ""
@@ -7359,6 +7764,9 @@ msgstr ""
msgid "Update now"
msgstr ""
+msgid "Update profile settings"
+msgstr ""
+
msgid "Update your group name, description, avatar, and other general settings."
msgstr ""
@@ -7407,6 +7815,12 @@ msgstr ""
msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab"
msgstr ""
+msgid "Use a hardware device to add the second factor of authentication."
+msgstr ""
+
+msgid "Use an app on your mobile device to enable two-factor authentication (2FA)."
+msgstr ""
+
msgid "Use group milestones to manage issues from multiple projects in the same milestone."
msgstr ""
@@ -7425,6 +7839,9 @@ msgstr ""
msgid "Used by members to sign in to your group in GitLab"
msgstr ""
+msgid "User ID"
+msgstr ""
+
msgid "User Settings"
msgstr ""
@@ -7536,6 +7953,9 @@ msgstr ""
msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group."
msgstr ""
+msgid "Website"
+msgstr ""
+
msgid "Weeks"
msgstr ""
@@ -7737,12 +8157,21 @@ msgstr ""
msgid "You can also test your .gitlab-ci.yml in the %{linkStart}Lint%{linkEnd}"
msgstr ""
+msgid "You can also use personal access tokens to authenticate against Git over HTTP. They are the only accepted password when you have Two-Factor Authentication (2FA) enabled."
+msgstr ""
+
+msgid "You can change your avatar here"
+msgstr ""
+
msgid "You can easily contribute to them by requesting to join these groups."
msgstr ""
msgid "You can easily install a Runner on a Kubernetes cluster. %{link_to_help_page}"
msgstr ""
+msgid "You can generate a personal access token for each application you use that needs access to the GitLab API."
+msgstr ""
+
msgid "You can move around the graph by using the arrow keys."
msgstr ""
@@ -7755,6 +8184,15 @@ msgstr ""
msgid "You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}"
msgstr ""
+msgid "You can see your Chat accounts."
+msgstr ""
+
+msgid "You can specify notification level per group or per project."
+msgstr ""
+
+msgid "You can upload an avatar here"
+msgstr ""
+
msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead."
msgstr ""
@@ -7764,6 +8202,12 @@ msgstr ""
msgid "You do not have the correct permissions to override the settings from the LDAP group sync."
msgstr ""
+msgid "You don't have any U2F devices registered yet."
+msgstr ""
+
+msgid "You don't have any active chat names."
+msgstr ""
+
msgid "You don't have any applications"
msgstr ""
@@ -7782,6 +8226,9 @@ msgstr ""
msgid "You must have maintainer access to force delete a lock"
msgstr ""
+msgid "You must provide your current password in order to change it."
+msgstr ""
+
msgid "You must sign in to star a project"
msgstr ""
@@ -7794,6 +8241,9 @@ msgstr ""
msgid "You need permission."
msgstr ""
+msgid "You should %{link_to_reset_it} if that ever happens."
+msgstr ""
+
msgid "You will not get any notifications via email"
msgstr ""
@@ -7830,21 +8280,42 @@ msgstr ""
msgid "You're receiving this email because of your account on %{host}. %{manage_notifications_link} · %{help_link}"
msgstr ""
+msgid "You've already enabled two-factor authentication using mobile authenticator applications. In order to register a different device, you must first disable two-factor authentication."
+msgstr ""
+
msgid "YouTube"
msgstr ""
+msgid "Your GPG keys (%{count})"
+msgstr ""
+
msgid "Your Groups"
msgstr ""
msgid "Your Kubernetes cluster information on this page is still editable, but you are advised to disable and reconfigure"
msgstr ""
+msgid "Your New Personal Access Token"
+msgstr ""
+
+msgid "Your Notification Email will be used for account notifications."
+msgstr ""
+
+msgid "Your Primary Email will be used for avatar detection and web based operations, such as edits and merges."
+msgstr ""
+
msgid "Your Projects (default)"
msgstr ""
msgid "Your Projects' Activity"
msgstr ""
+msgid "Your Public Email will be displayed on your public profile."
+msgstr ""
+
+msgid "Your SSH keys (%{count})"
+msgstr ""
+
msgid "Your Todos"
msgstr ""
@@ -7863,12 +8334,27 @@ msgstr ""
msgid "Your comment will not be visible to the public."
msgstr ""
+msgid "Your email address was automatically set based on your %{email} account."
+msgstr ""
+
+msgid "Your feed token is used to authenticate you when your RSS reader loads a personalized RSS feed or when when your calendar application loads a personalized calendar, and is included in those feed URLs."
+msgstr ""
+
msgid "Your groups"
msgstr ""
+msgid "Your incoming email token is used to authenticate you when you create a new issue by email, and is included in your personal project-specific email addresses."
+msgstr ""
+
+msgid "Your location was automatically set based on your %{location} account."
+msgstr ""
+
msgid "Your name"
msgstr ""
+msgid "Your name was automatically set based on your %{name} account, so people you know can recognize you."
+msgstr ""
+
msgid "Your projects"
msgstr ""
@@ -8131,6 +8617,9 @@ msgstr ""
msgid "could not read private key, is the passphrase correct?"
msgstr ""
+msgid "created %{time_ago}"
+msgstr ""
+
msgid "customize"
msgstr ""
@@ -8158,6 +8647,9 @@ msgstr ""
msgid "disabled"
msgstr ""
+msgid "documentation"
+msgstr ""
+
msgid "done"
msgstr ""
@@ -8170,12 +8662,18 @@ msgstr ""
msgid "for this project"
msgstr ""
+msgid "generate it"
+msgstr ""
+
msgid "here"
msgstr ""
msgid "https://your-bitbucket-server"
msgstr ""
+msgid "impersonation"
+msgstr ""
+
msgid "import flow"
msgstr ""
@@ -8191,6 +8689,9 @@ msgstr ""
msgid "is not a valid X509 certificate."
msgstr ""
+msgid "last used:"
+msgstr ""
+
msgid "latest version"
msgstr ""
@@ -8443,6 +8944,15 @@ msgstr ""
msgid "or"
msgstr ""
+msgid "or change it at"
+msgstr ""
+
+msgid "or recover your current one"
+msgstr ""
+
+msgid "or remove the current avatar to revert to"
+msgstr ""
+
msgid "out of %d total test"
msgid_plural "out of %d total tests"
msgstr[0] ""
@@ -8456,6 +8966,9 @@ msgstr[1] ""
msgid "password"
msgstr ""
+msgid "personal access"
+msgstr ""
+
msgid "personal access token"
msgstr ""
@@ -8471,6 +8984,9 @@ msgstr ""
msgid "remove weight"
msgstr ""
+msgid "reset it"
+msgstr ""
+
msgid "source"
msgstr ""
diff --git a/qa/qa/page/profile/personal_access_tokens.rb b/qa/qa/page/profile/personal_access_tokens.rb
index f5ae47dadd055e3f1f6161979e89497bc71b06dd..ce46a3fc5f58242a1ea652775699eb18b170a7fa 100644
--- a/qa/qa/page/profile/personal_access_tokens.rb
+++ b/qa/qa/page/profile/personal_access_tokens.rb
@@ -4,7 +4,7 @@ module Profile
class PersonalAccessTokens < Page::Base
view 'app/views/shared/_personal_access_tokens_form.html.haml' do
element :personal_access_token_name_field, 'text_field :name'
- element :create_token_button, 'submit "Create #{type} token"' # rubocop:disable Lint/InterpolationCheck
+ element :create_token_button, 'submit _("Create %{type} token") % {type: type}'
element :scopes_api_radios, "label :scopes"
end