diff --git a/app/views/admin/abuse_reports/_abuse_report.html.haml b/app/views/admin/abuse_reports/_abuse_report.html.haml
index 89a87f3896856fe347de58064e36d7067fe2deef..bf83f665f0047b51cf42b592863ce62cea0474ad 100644
--- a/app/views/admin/abuse_reports/_abuse_report.html.haml
+++ b/app/views/admin/abuse_reports/_abuse_report.html.haml
@@ -2,33 +2,34 @@
- user = abuse_report.user
%tr
%th.d-block.d-sm-none.d-md-none
- %strong User
+ %strong
+ = _('User')
%td
- if user
= link_to user.name, user
.light.small
- Joined #{time_ago_with_tooltip(user.created_at)}
+ = _('Joined %{created_time}').html_safe % { created_time: time_ago_with_tooltip(user.created_at) }
- else
- (removed)
+ = _('(removed)')
%td
%strong.subheading.d-block.d-sm-none.d-md-none Reported by
- if reporter
= link_to reporter.name, reporter
- else
- (removed)
+ = _('(removed)')
.light.small
= time_ago_with_tooltip(abuse_report.created_at)
%td
- %strong.subheading.d-block.d-sm-none.d-md-none Message
+ %strong.subheading.d-block.d-sm-none.d-md-none
+ = _('Message')
.message
= markdown_field(abuse_report, :message)
%td
- if user
- = link_to 'Remove user & report', admin_abuse_report_path(abuse_report, remove_user: true),
- data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, remote: true, method: :delete, class: "btn btn-sm btn-block btn-remove js-remove-tr"
+ = link_to _('Remove user & report'), admin_abuse_report_path(abuse_report, remove_user: true), data: { confirm: _('USER %{user_name} WILL BE REMOVED! Are you sure?').html_safe % { user_name: user.name } }, remote: true, method: :delete, class: "btn btn-sm btn-block btn-remove js-remove-tr"
- if user && !user.blocked?
- = link_to 'Block user', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: "btn btn-sm btn-block"
+ = link_to _('Block user'), block_admin_user_path(user), data: { confirm: _('USER WILL BE BLOCKED! Are you sure?') }, method: :put, class: "btn btn-sm btn-block"
- else
.btn.btn-sm.disabled.btn-block
- Already blocked
- = link_to 'Remove report', [:admin, abuse_report], remote: true, method: :delete, class: "btn btn-sm btn-block btn-close js-remove-tr"
+ = _('Already blocked')
+ = link_to _('Remove report'), [:admin, abuse_report], remote: true, method: :delete, class: "btn btn-sm btn-block btn-close js-remove-tr"
diff --git a/app/views/admin/abuse_reports/index.html.haml b/app/views/admin/abuse_reports/index.html.haml
index cc29657a439893448d6a7040e32503a3a19223b6..e3fa0138ce3176eab2cd8b50688a06157277850f 100644
--- a/app/views/admin/abuse_reports/index.html.haml
+++ b/app/views/admin/abuse_reports/index.html.haml
@@ -1,5 +1,6 @@
-- page_title 'Abuse Reports'
-%h3.page-title Abuse Reports
+- page_title _('Abuse Reports')
+%h3.page-title
+ = _('Abuse Reports')
%hr
.abuse-reports
- if @abuse_reports.present?
@@ -7,13 +8,14 @@
%table.table.responsive-table
%thead.d-none.d-sm-none.d-md-table-header-group
%tr
- %th User
- %th Reported by
- %th.wide Message
- %th Action
+ %th= _('User')
+ %th= _('Reported by')
+ %th.wide= _('Message')
+ %th= _('Action')
= render @abuse_reports
= paginate @abuse_reports, theme: 'gitlab'
- else
.empty-state
.text-center
- %h4 There are no abuse reports! #{emoji_icon('tada')}
+ %h4
+ = _("There are no abuse reports!") + emoji_icon('tada')
diff --git a/app/views/admin/appearances/_form.html.haml b/app/views/admin/appearances/_form.html.haml
index 0ed0f241fa35ef29b32f54637d28f20bce0aa4d7..4f5833a9e24e66c208257b5e8b895d6f2e9efc7e 100644
--- a/app/views/admin/appearances/_form.html.haml
+++ b/app/views/admin/appearances/_form.html.haml
@@ -1,47 +1,48 @@
= form_for @appearance, url: admin_appearances_path do |f|
= form_errors(@appearance)
+ - link_to_help_markdown = link_to(_("GitLab Flavored Markdown"), help_page_path('user/markdown'), target: '_blank')
%fieldset.app_logo
%legend
- Navigation bar:
+ = _('Navigation bar:')
.form-group.row
- = f.label :header_logo, 'Header logo', class: 'col-sm-2 col-form-label'
+ = f.label :header_logo, _('Header logo'), class: 'col-sm-2 col-form-label'
.col-sm-10
- if @appearance.header_logo?
= image_tag @appearance.header_logo_url, class: 'appearance-light-logo-preview'
- if @appearance.persisted?
%br
- = link_to 'Remove header logo', header_logos_admin_appearances_path, data: { confirm: "Header logo will be removed. Are you sure?"}, method: :delete, class: "btn btn-inverted btn-remove btn-sm remove-logo"
+ = link_to _('Remove header logo'), header_logos_admin_appearances_path, data: { confirm: _("Header logo will be removed. Are you sure?") }, method: :delete, class: "btn btn-inverted btn-remove btn-sm remove-logo"
%hr
= f.hidden_field :header_logo_cache
= f.file_field :header_logo, class: ""
.hint
- Maximum file size is 1MB. Pages are optimized for a 28px tall header logo
+ = _('Maximum file size is 1MB. Pages are optimized for a 28px tall header logo')
%fieldset.app_logo
%legend
- Favicon:
+ = _("Favicon:")
.form-group.row
- = f.label :favicon, 'Favicon', class: 'col-sm-2 col-form-label'
+ = f.label :favicon, _('Favicon'), class: 'col-sm-2 col-form-label'
.col-sm-10
- if @appearance.favicon?
= image_tag @appearance.favicon_url, class: 'appearance-light-logo-preview'
- if @appearance.persisted?
%br
- = link_to 'Remove favicon', favicon_admin_appearances_path, data: { confirm: "Favicon will be removed. Are you sure?"}, method: :delete, class: "btn btn-inverted btn-remove btn-sm remove-logo"
+ = link_to _('Remove favicon'), favicon_admin_appearances_path, data: { confirm: _("Favicon will be removed. Are you sure?") }, method: :delete, class: "btn btn-inverted btn-remove btn-sm remove-logo"
%hr
= f.hidden_field :favicon_cache
= f.file_field :favicon, class: ''
.hint
- Maximum file size is 1MB. Image size must be 32x32px. Allowed image formats are #{favicon_extension_whitelist}.
+ = _("Maximum file size is 1MB. Image size must be 32x32px. Allowed image formats are %{favicon_extension_whitelist}.") % { favicon_extension_whitelist: favicon_extension_whitelist }
%br
- Images with incorrect dimensions are not resized automatically, and may result in unexpected behavior.
+ = _("Images with incorrect dimensions are not resized automatically, and may result in unexpected behavior.")
= render partial: 'admin/appearances/system_header_footer_form', locals: { form: f }
%fieldset.sign-in
%legend
- Sign in/Sign up pages:
+ = _('Sign in/Sign up pages:')
.form-group.row
= f.label :title, class: 'col-sm-2 col-form-label'
.col-sm-10
@@ -51,7 +52,7 @@
.col-sm-10
= f.text_area :description, class: "form-control", rows: 10
.hint
- Description parsed with #{link_to "GitLab Flavored Markdown", help_page_path('user/markdown'), target: '_blank'}.
+ = _("Description parsed with %{link_to_help_markdown}.").html_safe % { link_to_help_markdown: link_to_help_markdown }
.form-group.row
= f.label :logo, class: 'col-sm-2 col-form-label'
.col-sm-10
@@ -59,30 +60,30 @@
= image_tag @appearance.logo_url, class: 'appearance-logo-preview'
- if @appearance.persisted?
%br
- = link_to 'Remove logo', logo_admin_appearances_path, data: { confirm: "Logo will be removed. Are you sure?"}, method: :delete, class: "btn btn-inverted btn-remove btn-sm remove-logo"
+ = link_to _('Remove logo'), logo_admin_appearances_path, data: { confirm: _("Logo will be removed. Are you sure?") }, method: :delete, class: "btn btn-inverted btn-remove btn-sm remove-logo"
%hr
= f.hidden_field :logo_cache
= f.file_field :logo, class: ""
.hint
- Maximum file size is 1MB. Pages are optimized for a 640x360 px logo.
+ = _('Maximum file size is 1MB. Pages are optimized for a 640x360 px logo.')
%fieldset
%legend
- New project pages:
+ = _('New project pages:')
.form-group.row
= f.label :new_project_guidelines, class: 'col-sm-2 col-form-label'
.col-sm-10
= f.text_area :new_project_guidelines, class: "form-control", rows: 10
.hint
- Guidelines parsed with #{link_to "GitLab Flavored Markdown", help_page_path('user/markdown'), target: '_blank'}.
+ = _('Guidelines parsed with %{link_to_help_markdown}.').html_safe % { link_to_help_markdown: link_to_help_markdown }
.form-actions
- = f.submit 'Save', class: 'btn btn-save append-right-10'
+ = f.submit _('Save'), class: 'btn btn-save append-right-10'
- if @appearance.persisted?
- Preview last save:
- = link_to 'Sign-in page', preview_sign_in_admin_appearances_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
- = link_to 'New project page', new_project_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
+ = _("Preview last save:")
+ = link_to _('Sign-in page'), preview_sign_in_admin_appearances_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
+ = link_to _('New project page'), new_project_path, class: 'btn', target: '_blank', rel: 'noopener noreferrer'
- if @appearance.updated_at
%span.float-right
- Last edit #{time_ago_with_tooltip(@appearance.updated_at)}
+ = _('Last edit %{time}').html_safe % { time: time_ago_with_tooltip(@appearance.updated_at) }
diff --git a/app/views/admin/appearances/preview_sign_in.html.haml b/app/views/admin/appearances/preview_sign_in.html.haml
index 1af7dd5bb67f8f63488ada530f7a2e8f2efd127c..9984e836a133a76dfab341842f8d74f7c346b479 100644
--- a/app/views/admin/appearances/preview_sign_in.html.haml
+++ b/app/views/admin/appearances/preview_sign_in.html.haml
@@ -1,12 +1,12 @@
-= render 'devise/shared/tab_single', tab_title: 'Sign in preview'
+= render 'devise/shared/tab_single', tab_title: _('Sign in preview')
.login-box
%form.gl-show-field-errors
.form-group
= label_tag :login
- = text_field_tag :login, nil, class: "form-control top", title: 'Please provide your username or email address.'
+ = text_field_tag :login, nil, class: "form-control top", title: _('Please provide your username or email address.')
.form-group
= label_tag :password
- = password_field_tag :password, nil, class: "form-control bottom", title: 'This field is required.'
+ = password_field_tag :password, nil, class: "form-control bottom", title: _('This field is required.')
.form-group
- = button_tag "Sign in", class: "btn-create btn"
+ = button_tag _("Sign in"), class: "btn-create btn"
diff --git a/app/views/admin/appearances/show.html.haml b/app/views/admin/appearances/show.html.haml
index 454b779842c0324aa51fee8895dc6dd492b25610..e590f6be6e667c41b6d8e8b38ba945a15fd6f4f8 100644
--- a/app/views/admin/appearances/show.html.haml
+++ b/app/views/admin/appearances/show.html.haml
@@ -1,9 +1,9 @@
-- page_title "Appearance"
+- page_title _("Appearance")
%h3.page-title
- Appearance settings
+ = _('Appearance settings')
%p.light
- You can modify the look and feel of GitLab here
+ = _('You can modify the look and feel of GitLab here')
%hr
= render 'form'
diff --git a/app/views/admin/background_jobs/show.html.haml b/app/views/admin/background_jobs/show.html.haml
index faa5854bb40886a41f81760fb06095806fcb6cff..c632df68db148ed000883a342b1989143fcd64db 100644
--- a/app/views/admin/background_jobs/show.html.haml
+++ b/app/views/admin/background_jobs/show.html.haml
@@ -1,30 +1,31 @@
- @no_container = true
-- page_title "Background Jobs"
+- page_title _("Background Jobs")
%div{ class: container_class }
- %h3.page-title Background Jobs
- %p.light GitLab uses #{link_to "sidekiq", "http://sidekiq.org/"} library for async job processing
+ %h3.page-title= _('Background Jobs')
+ %p.light
+ = _('GitLab uses %{link} library for async job processing').html_safe % { link: link_to("sidekiq", "http://sidekiq.org/") }
%hr
.card
- .card-header Sidekiq running processes
+ .card-header= _('Sidekiq running processes')
.card-body
- if @sidekiq_processes.empty?
%h4.cred
%i.fa.fa-exclamation-triangle
- There are no running sidekiq processes. Please restart GitLab
+ = _('There are no running sidekiq processes. Please restart GitLab')
- else
.table-holder
%table.table
%thead
- %th USER
- %th PID
- %th CPU
- %th MEM
- %th STATE
- %th START
- %th COMMAND
+ %th= _('USER')
+ %th= _('PID')
+ %th= _('CPU')
+ %th= _('MEM')
+ %th= _('STATE')
+ %th= _('START')
+ %th= _('COMMAND')
%tbody
- @sidekiq_processes.each do |process|
%tr
@@ -34,10 +35,10 @@
.clearfix
%p
%i.fa.fa-exclamation-circle
- If '[#{@concurrency} of #{@concurrency} busy]' is shown, restart GitLab with 'sudo service gitlab reload'.
+ = _("If '[%{concurrency} of %{concurrency} busy]' is shown, restart GitLab with 'sudo service gitlab reload'.") % { concurrency: @concurrency }
%p
%i.fa.fa-exclamation-circle
- If more than one sidekiq process is listed, stop GitLab, kill the remaining sidekiq processes (sudo pkill -u #{gitlab_config.user} -f sidekiq) and restart GitLab.
+ = _("If more than one sidekiq process is listed, stop GitLab, kill the remaining sidekiq processes (sudo pkill -u %{gitlab_config_user} -f sidekiq) and restart GitLab.") % { gitlab_config_user: gitlab_config.user }
diff --git a/app/views/admin/broadcast_messages/_form.html.haml b/app/views/admin/broadcast_messages/_form.html.haml
index 7f34357f147d3ed771772b1b2bd753cbdb7d90f0..c7ca124f7a3be7f85b7a7ae678847c7fb2220235 100644
--- a/app/views/admin/broadcast_messages/_form.html.haml
+++ b/app/views/admin/broadcast_messages/_form.html.haml
@@ -4,7 +4,7 @@
- if @broadcast_message.message.present?
= render_broadcast_message(@broadcast_message)
- else
- Your message here
+ = _('Your message here')
= form_for [:admin, @broadcast_message], html: { class: 'broadcast-message-form js-quick-submit js-requires-input'} do |f|
= form_errors(@broadcast_message)
@@ -17,13 +17,13 @@
data: { preview_path: preview_admin_broadcast_messages_path }
.form-group.row.js-toggle-colors-container
.col-sm-10.offset-sm-2
- = link_to 'Customize colors', '#', class: 'js-toggle-colors-link'
+ = link_to _('Customize colors'), '#', class: 'js-toggle-colors-link'
.form-group.row.js-toggle-colors-container.toggle-colors.hide
- = f.label :color, "Background Color", class: 'col-form-label col-sm-2'
+ = f.label :color, _("Background Color"), class: 'col-form-label col-sm-2'
.col-sm-10
= f.color_field :color, class: "form-control"
.form-group.row.js-toggle-colors-container.toggle-colors.hide
- = f.label :font, "Font Color", class: 'col-form-label col-sm-2'
+ = f.label :font, _("Font Color"), class: 'col-form-label col-sm-2'
.col-sm-10
= f.color_field :font, class: "form-control"
.form-group.row
@@ -36,6 +36,6 @@
= f.datetime_select :ends_at, {}, class: 'form-control form-control-inline'
.form-actions
- if @broadcast_message.persisted?
- = f.submit "Update broadcast message", class: "btn btn-create"
+ = f.submit _("Update broadcast message"), class: "btn btn-create"
- else
- = f.submit "Add broadcast message", class: "btn btn-create"
+ = f.submit _("Add broadcast message"), class: "btn btn-create"
diff --git a/app/views/admin/broadcast_messages/edit.html.haml b/app/views/admin/broadcast_messages/edit.html.haml
index 8cbc4597e32942d6757fd8374e85996dcac6c0f7..569aaa29cc45464fe03f92f916e97daa7f1b793f 100644
--- a/app/views/admin/broadcast_messages/edit.html.haml
+++ b/app/views/admin/broadcast_messages/edit.html.haml
@@ -1,4 +1,4 @@
-- breadcrumb_title "Messages"
-- page_title "Broadcast Messages"
+- breadcrumb_title _("Messages")
+- page_title _("Broadcast Messages")
= render 'form'
diff --git a/app/views/admin/broadcast_messages/index.html.haml b/app/views/admin/broadcast_messages/index.html.haml
index 9ef58faf8ccbead52ec3cca1c9adf101a37613ac..1bd8ed0a7c30f318e7ad3465d3033ca5bc7182aa 100644
--- a/app/views/admin/broadcast_messages/index.html.haml
+++ b/app/views/admin/broadcast_messages/index.html.haml
@@ -1,11 +1,10 @@
-- breadcrumb_title "Messages"
-- page_title "Broadcast Messages"
+- breadcrumb_title _("Messages")
+- page_title _("Broadcast Messages")
%h3.page-title
- Broadcast Messages
+ = _('Broadcast Messages')
%p.light
- Broadcast messages are displayed for every user and can be used to notify
- users about scheduled maintenance, recent upgrades and more.
+ = _('Broadcast messages are displayed for every user and can be used to notify users about scheduled maintenance, recent upgrades and more.')
= render 'form'
@@ -15,10 +14,10 @@
%table.table
%thead
%tr
- %th Status
- %th Preview
- %th Starts
- %th Ends
+ %th= _('Status')
+ %th= _('Preview')
+ %th= _('Starts')
+ %th= _('Ends')
%th
%tbody
- @broadcast_messages.each do |message|
@@ -32,7 +31,7 @@
%td
= message.ends_at
%td
- = link_to icon('pencil-square-o'), edit_admin_broadcast_message_path(message), title: 'Edit', class: 'btn btn-sm'
- = link_to icon('times'), admin_broadcast_message_path(message), method: :delete, remote: true, title: 'Remove', class: 'js-remove-tr btn btn-sm btn-danger'
+ = link_to icon('pencil-square-o'), edit_admin_broadcast_message_path(message), title: _('Edit'), class: 'btn btn-sm'
+ = link_to icon('times'), admin_broadcast_message_path(message), method: :delete, remote: true, title: _('Remove'), class: 'js-remove-tr btn btn-sm btn-danger'
= paginate @broadcast_messages, theme: 'gitlab'
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index fac61f9d2494567a505d06b12cd71190e90f566b..5abcad83761d0abe596ffd7f6c52005413e4c701 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -1,5 +1,5 @@
- @no_container = true
-- breadcrumb_title "Dashboard"
+- breadcrumb_title _("Dashboard")
%div{ class: container_class }
= render_if_exists 'admin/licenses/breakdown', license: @license
@@ -11,154 +11,147 @@
.well-segment.well-centered
= link_to admin_projects_path do
%h3.text-center
- Projects:
+ = _("Projects:")
= approximate_count_with_delimiters(@counts, Project)
%hr
- = link_to('New project', new_project_path, class: "btn btn-new")
+ = link_to(_('New project'), new_project_path, class: "btn btn-new")
.col-sm-4
.info-well.dark-well
.well-segment.well-centered
= link_to admin_users_path do
%h3.text-center
- Users:
+ = _("Users:")
= approximate_count_with_delimiters(@counts, User)
= render_if_exists 'admin/dashboard/users_statistics'
%hr
- = link_to 'New user', new_admin_user_path, class: "btn btn-new"
+ = link_to _('New user'), new_admin_user_path, class: "btn btn-new"
.col-sm-4
.info-well.dark-well
.well-segment.well-centered
= link_to admin_groups_path do
%h3.text-center
- Groups:
+ = _("Groups:")
= approximate_count_with_delimiters(@counts, Group)
%hr
- = link_to 'New group', new_admin_group_path, class: "btn btn-new"
+ = link_to _('New group'), new_admin_group_path, class: "btn btn-new"
.row
.col-md-4
.info-well
.well-segment.admin-well.admin-well-statistics
- %h4 Statistics
+ %h4= _('Statistics')
%p
- Forks
+ = _('Forks')
%span.light.float-right
= approximate_count_with_delimiters(@counts, ForkedProjectLink)
%p
- Issues
+ = _('Issues')
%span.light.float-right
= approximate_count_with_delimiters(@counts, Issue)
%p
- Merge Requests
+ = _('Merge Requests')
%span.light.float-right
= approximate_count_with_delimiters(@counts, MergeRequest)
%p
- Notes
+ = _('Notes')
%span.light.float-right
= approximate_count_with_delimiters(@counts, Note)
%p
- Snippets
+ = _('Snippets')
%span.light.float-right
= approximate_count_with_delimiters(@counts, Snippet)
%p
- SSH Keys
+ = _('SSH Keys')
%span.light.float-right
= approximate_count_with_delimiters(@counts, Key)
%p
- Milestones
+ = _('Milestones')
%span.light.float-right
= approximate_count_with_delimiters(@counts, Milestone)
%p
- Active Users
+ = _('Active Users')
%span.light.float-right
= number_with_delimiter(User.active.count)
.col-md-4
.info-well
.well-segment.admin-well.admin-well-features
- %h4 Features
- - sign_up = "Sign up"
- %p{ "aria-label" => "#{sign_up}: status " + (allow_signup? ? "on" : "off") }
- = sign_up
+ %h4= _('Features')
+ %p{ "aria-label" => _("Sign up: status %{on_or_off}") % { on_or_off: allow_signup? ? _("on") : _("off") } }
+ = _("Sign up")
%span.light.float-right
= boolean_to_icon allow_signup?
- - ldap = "LDAP"
- %p{ "aria-label" => "#{ldap}: status " + (Gitlab.config.ldap.enabled ? "on" : "off") }
- = ldap
+ %p{ "aria-label" => _("LDAP: status %{on_or_off}") % { on_or_off: (Gitlab.config.ldap.enabled ? _("on") : _("off")) } }
+ = _("LDAP")
%span.light.float-right
= boolean_to_icon Gitlab.config.ldap.enabled
- - gravatar = "Gravatar"
- %p{ "aria-label" => "#{gravatar}: status " + (gravatar_enabled? ? "on" : "off") }
- = gravatar
+ %p{ "aria-label" => _("Gravatar: status %{on_or_off}") % { on_or_off: (gravatar_enabled? ? _("on") : _("off")) } }
+ = _("Gravatar")
%span.light.float-right
= boolean_to_icon gravatar_enabled?
- - omniauth = "OmniAuth"
- %p{ "aria-label" => "#{omniauth}: status " + (Gitlab::Auth.omniauth_enabled? ? "on" : "off") }
- = omniauth
+ %p{ "aria-label" => _("OmniAuth: status %{on_or_off}") % { on_or_off: (Gitlab::Auth.omniauth_enabled? ? _("on") : _("off")) } }
+ = _("OmniAuth")
%span.light.float-right
= boolean_to_icon Gitlab::Auth.omniauth_enabled?
- - reply_email = "Reply by email"
- %p{ "aria-label" => "#{reply_email}: status " + (Gitlab::IncomingEmail.enabled? ? "on" : "off") }
- = reply_email
+ %p{ "aria-label" => _("Reply by email: status %{on_or_off}") % { on_or_off: (Gitlab::IncomingEmail.enabled? ? _("on") : _("off")) } }
+ = _("Reply by email")
%span.light.float-right
= boolean_to_icon Gitlab::IncomingEmail.enabled?
= render_if_exists 'admin/dashboard/elastic_and_geo'
- - container_reg = "Container Registry"
- %p{ "aria-label" => "#{container_reg}: status " + (Gitlab.config.registry.enabled ? "on" : "off") }
- = container_reg
+ - container_reg = _("")
+ %p{ "aria-label" => _("Container Registry: status %{on_or_off}") % { on_or_off: (Gitlab.config.registry.enabled ? _("on") : _("off")) } }
+ = _("Container Registry")
%span.light.float-right
= boolean_to_icon Gitlab.config.registry.enabled
- - gitlab_pages = 'GitLab Pages'
- gitlab_pages_enabled = Gitlab.config.pages.enabled
- %p{ "aria-label" => "#{gitlab_pages}: status " + (gitlab_pages_enabled ? "on" : "off") }
- = gitlab_pages
+ %p{ "aria-label" => _("GitLab Pages: status %{on_or_off}") % { on_or_off: (gitlab_pages_enabled ? _("on") : _("off")) } }
+ = _("GitLab Pages")
%span.light.float-right
= boolean_to_icon gitlab_pages_enabled
- - gitlab_shared_runners = 'Shared Runners'
- gitlab_shared_runners_enabled = Gitlab.config.gitlab_ci.shared_runners_enabled
- %p{ "aria-label" => "#{gitlab_shared_runners}: status " + (gitlab_shared_runners_enabled ? "on" : "off") }
- = gitlab_shared_runners
+ %p{ "aria-label" => _("Shared Runners: status %{on_or_off}") % { on_or_off: (gitlab_shared_runners_enabled ? _("on") : _("off")) } }
+ = _("Shared Runners")
%span.light.float-right
= boolean_to_icon gitlab_shared_runners_enabled
.col-md-4
.info-well
.well-segment.admin-well
%h4
- Components
+ = _('Components')
- if Gitlab::CurrentSettings.version_check_enabled
.float-right
= version_status_badge
%p
- GitLab
+ = _('GitLab')
%span.float-right
= Gitlab::VERSION
= "(#{Gitlab.revision})"
%p
- GitLab Shell
+ = _('GitLab Shell')
%span.float-right
= Gitlab::Shell.new.version
%p
- GitLab Workhorse
+ = _('GitLab Workhorse')
%span.float-right
= gitlab_workhorse_version
%p
- GitLab API
+ = _('GitLab API')
%span.float-right
= API::API::version
- if Gitlab.config.pages.enabled
%p
- GitLab Pages
+ = _('GitLab Pages')
%span.float-right
= Gitlab::Pages::VERSION
= render_if_exists 'admin/dashboard/geo'
%p
- Ruby
+ = _('Ruby')
%span.float-right
#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
%p
- Rails
+ = _('Rails')
%span.float-right
#{Rails::VERSION::STRING}
%p
@@ -166,12 +159,12 @@
%span.float-right
= Gitlab::Database.version
%p
- = link_to "Gitaly Servers", admin_gitaly_servers_path
+ = link_to _("Gitaly Servers"), admin_gitaly_servers_path
.row
.col-md-4
.info-well
.well-segment.admin-well
- %h4 Latest projects
+ %h4= _('Latest projects')
- @projects.each do |project|
%p
= link_to project.full_name, [:admin, project.namespace.becomes(Namespace), project], class: 'str-truncated-60'
@@ -180,7 +173,7 @@
.col-md-4
.info-well
.well-segment.admin-well
- %h4 Latest users
+ %h4= _('Latest users')
- @users.each do |user|
%p
= link_to [:admin, user], class: 'str-truncated-60' do
@@ -190,7 +183,7 @@
.col-md-4
.info-well
.well-segment.admin-well
- %h4 Latest groups
+ %h4= _('Latest groups')
- @groups.each do |group|
%p
= link_to [:admin, group], class: 'str-truncated-60' do
diff --git a/app/views/admin/deploy_keys/edit.html.haml b/app/views/admin/deploy_keys/edit.html.haml
index b50adef362f65e6a864f87fcea9f192f69bf8f7f..f9c1497db1431fdb6b3da165c9ce90efdb9710b0 100644
--- a/app/views/admin/deploy_keys/edit.html.haml
+++ b/app/views/admin/deploy_keys/edit.html.haml
@@ -1,10 +1,10 @@
-- page_title 'Edit Deploy Key'
-%h3.page-title Edit public deploy key
+- page_title _('Edit Deploy Key')
+%h3.page-title= _("Edit public deploy key")
%hr
%div
= form_for [:admin, @deploy_key], html: { class: 'deploy-key-form' } do |f|
= render partial: 'shared/deploy_keys/form', locals: { form: f, deploy_key: @deploy_key }
.form-actions
- = f.submit 'Save changes', class: 'btn-save btn'
- = link_to 'Cancel', admin_deploy_keys_path, class: 'btn btn-cancel'
+ = f.submit _('Save changes'), class: 'btn-save btn'
+ = link_to _('Cancel'), admin_deploy_keys_path, class: 'btn btn-cancel'
diff --git a/app/views/admin/deploy_keys/index.html.haml b/app/views/admin/deploy_keys/index.html.haml
index 52ab8bae11924bf678da563945afccd78e1620ab..e4dcb700bafb049ee866238b49f68c107769ea76 100644
--- a/app/views/admin/deploy_keys/index.html.haml
+++ b/app/views/admin/deploy_keys/index.html.haml
@@ -1,19 +1,19 @@
-- page_title "Deploy Keys"
+- page_title _("Deploy Keys")
%h3.page-title.deploy-keys-title
- Public deploy keys (#{@deploy_keys.count})
+ #{ _("Public deploy keys") } (#{@deploy_keys.count})
.float-right
- = link_to 'New deploy key', new_admin_deploy_key_path, class: 'btn btn-new btn-sm btn-inverted'
+ = link_to _('New deploy key'), new_admin_deploy_key_path, class: 'btn btn-new btn-sm btn-inverted'
- if @deploy_keys.any?
.table-holder.deploy-keys-list
%table.table
%thead
%tr
- %th.col-sm-2 Title
- %th.col-sm-4 Fingerprint
- %th.col-sm-2 Projects with write access
- %th.col-sm-2 Added at
+ %th.col-sm-2= _('Title')
+ %th.col-sm-4= _('Fingerprint')
+ %th.col-sm-2= _('Projects with write access')
+ %th.col-sm-2= _('Added at')
%th.col-sm-2
%tbody
- @deploy_keys.each do |deploy_key|
@@ -27,8 +27,8 @@
= link_to project.full_name, admin_project_path(project), class: 'label deploy-project-label'
%td
%span.cgray
- added #{time_ago_with_tooltip(deploy_key.created_at)}
+ = _('added %{deploy_key_created_time}').html_safe % { deploy_key_created_time: time_ago_with_tooltip(deploy_key.created_at) }
%td
.float-right
- = link_to 'Edit', edit_admin_deploy_key_path(deploy_key), class: 'btn btn-sm'
- = link_to 'Remove', admin_deploy_key_path(deploy_key), data: { confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-sm btn-remove delete-key'
+ = link_to _('Edit'), edit_admin_deploy_key_path(deploy_key), class: 'btn btn-sm'
+ = link_to _('Remove'), admin_deploy_key_path(deploy_key), data: { confirm: _('Are you sure?') }, method: :delete, class: 'btn btn-sm btn-remove delete-key'
diff --git a/app/views/admin/deploy_keys/new.html.haml b/app/views/admin/deploy_keys/new.html.haml
index d4f8e340b6925243634a214e1ac3f07a1c5a93ee..06b86b0a9b2341976cf91210933d2d2a841ad111 100644
--- a/app/views/admin/deploy_keys/new.html.haml
+++ b/app/views/admin/deploy_keys/new.html.haml
@@ -1,10 +1,10 @@
-- page_title 'New Deploy Key'
-%h3.page-title New public deploy key
+- page_title _('New Deploy Key')
+%h3.page-title= _('New public deploy key')
%hr
%div
= form_for [:admin, @deploy_key], html: { class: 'deploy-key-form' } do |f|
= render partial: 'shared/deploy_keys/form', locals: { form: f, deploy_key: @deploy_key }
.form-actions
- = f.submit 'Create', class: 'btn-create btn'
- = link_to 'Cancel', admin_deploy_keys_path, class: 'btn btn-cancel'
+ = f.submit _('Create'), class: 'btn-create btn'
+ = link_to _('Cancel'), admin_deploy_keys_path, class: 'btn btn-cancel'
diff --git a/app/views/admin/health_check/show.html.haml b/app/views/admin/health_check/show.html.haml
index 11fe14fca837c62810649589f723c6120fab6a3b..f6cbf0e25585e2b7335f7d3e596d59c5ab448850 100644
--- a/app/views/admin/health_check/show.html.haml
+++ b/app/views/admin/health_check/show.html.haml
@@ -29,7 +29,7 @@
%hr
.card
.card-header
- Current Status:
+ = _('Current Status:')
- if no_errors
= icon('circle', class: 'cgreen')
#{ s_('HealthCheck|Healthy') }
diff --git a/app/views/admin/hook_logs/_index.html.haml b/app/views/admin/hook_logs/_index.html.haml
index 1d7c9930b6a930cb4b75b41a3500eb54ad18f63b..5f57ce1bcdd9abb7311c0d628c67c6cf57bca090 100644
--- a/app/views/admin/hook_logs/_index.html.haml
+++ b/app/views/admin/hook_logs/_index.html.haml
@@ -1,18 +1,19 @@
.row.prepend-top-default.append-bottom-default
.col-lg-3
%h4.prepend-top-0
- Recent Deliveries
- %p When an event in GitLab triggers a webhook, you can use the request details to figure out if something went wrong.
+ = _('Recent Deliveries')
+ %p
+ = _('When an event in GitLab triggers a webhook, you can use the request details to figure out if something went wrong.')
.col-lg-9
- if hook_logs.any?
%table.table
%thead
%tr
- %th Status
- %th Trigger
- %th URL
- %th Elapsed time
- %th Request time
+ %th= _('Status')
+ %th= _('Trigger')
+ %th= _('URL')
+ %th= _('Elapsed time')
+ %th= _('Request time')
%th
- hook_logs.each do |hook_log|
%tr
@@ -28,10 +29,10 @@
%td.light
= time_ago_with_tooltip(hook_log.created_at)
%td
- = link_to 'View details', admin_hook_hook_log_path(hook, hook_log)
+ = link_to _('View details'), admin_hook_hook_log_path(hook, hook_log)
= paginate hook_logs, theme: 'gitlab'
- else
.settings-message.text-center
- You don't have any webhooks deliveries
+ = _("You don't have any webhooks deliveries")
diff --git a/app/views/admin/hook_logs/show.html.haml b/app/views/admin/hook_logs/show.html.haml
index 2eb3ac857225da8c445969abbac149b8fd3a8e63..ae137a908dde930dba4cced2c0d598eac91ae30d 100644
--- a/app/views/admin/hook_logs/show.html.haml
+++ b/app/views/admin/hook_logs/show.html.haml
@@ -1,10 +1,10 @@
-- page_title 'Request details'
+- page_title _('Request details')
%h3.page-title
- Request details
+ = _('Request details')
%hr
-= link_to 'Resend Request', retry_admin_hook_hook_log_path(@hook, @hook_log), class: "btn btn-default float-right prepend-left-10"
+= link_to _('Resend Request'), retry_admin_hook_hook_log_path(@hook, @hook_log), class: "btn btn-default float-right prepend-left-10"
= render partial: 'shared/hook_logs/content', locals: { hook_log: @hook_log }
diff --git a/app/views/admin/hooks/_form.html.haml b/app/views/admin/hooks/_form.html.haml
index 072f80b56b9e2ec2736855238ecb1ac38fa1fc75..15846f55a92d51725d42590fa174a34728c64762 100644
--- a/app/views/admin/hooks/_form.html.haml
+++ b/app/views/admin/hooks/_form.html.haml
@@ -1,52 +1,51 @@
= form_errors(hook)
.form-group
- = form.label :url, 'URL', class: 'label-bold'
+ = form.label :url, _('URL'), class: 'label-bold'
= form.text_field :url, class: 'form-control'
.form-group
- = form.label :token, 'Secret Token', class: 'label-bold'
+ = form.label :token, _('Secret Token'), class: 'label-bold'
= form.text_field :token, class: 'form-control'
%p.form-text.text-muted
- Use this token to validate received payloads
+ = _('Use this token to validate received payloads')
.form-group
- = form.label :url, 'Trigger', class: 'label-bold'
+ = form.label :url, _('Trigger'), class: 'label-bold'
%ul.list-unstyled
%li
.form-text.text-muted
- System hook will be triggered on set of events like creating project
- or adding ssh key. But you can also enable extra triggers like Push events.
+ = _('System hook will be triggered on set of events like creating project or adding ssh key. But you can also enable extra triggers like Push events.')
.prepend-top-default
= form.check_box :repository_update_events, class: 'float-left'
.prepend-left-20
= form.label :repository_update_events, class: 'list-label' do
- %strong Repository update events
+ %strong= _('Repository update events')
%p.light
- This URL will be triggered when repository is updated
+ = _('This URL will be triggered when repository is updated')
%li
= form.check_box :push_events, class: 'float-left'
.prepend-left-20
= form.label :push_events, class: 'list-label' do
- %strong Push events
+ %strong= _('Push events')
%p.light
- This URL will be triggered for each branch updated to the repository
+ = _('This URL will be triggered for each branch updated to the repository')
%li
= form.check_box :tag_push_events, class: 'float-left'
.prepend-left-20
= form.label :tag_push_events, class: 'list-label' do
- %strong Tag push events
+ %strong= _('Tag push events')
%p.light
- This URL will be triggered when a new tag is pushed to the repository
+ = _('This URL will be triggered when a new tag is pushed to the repository')
%li
= form.check_box :merge_requests_events, class: 'float-left'
.prepend-left-20
= form.label :merge_requests_events, class: 'list-label' do
- %strong Merge request events
+ %strong= _('Merge request events')
%p.light
- This URL will be triggered when a merge request is created/updated/merged
+ = _('This URL will be triggered when a merge request is created/updated/merged')
.form-group
- = form.label :enable_ssl_verification, 'SSL verification', class: 'label-bold checkbox'
+ = form.label :enable_ssl_verification, _('SSL verification'), class: 'label-bold checkbox'
.form-check
= form.check_box :enable_ssl_verification, class: 'form-check-input'
= form.label :enable_ssl_verification, class: 'form-check-label' do
- %strong Enable SSL verification
+ %strong= _("Enable SSL verification")
diff --git a/app/views/admin/hooks/edit.html.haml b/app/views/admin/hooks/edit.html.haml
index b9a650e1f1ffc6b6291bc994b06aedb97c506a02..078e93b58d59a7f9cc013cced72f6b8f52467542 100644
--- a/app/views/admin/hooks/edit.html.haml
+++ b/app/views/admin/hooks/edit.html.haml
@@ -1,20 +1,20 @@
-- add_to_breadcrumbs "System Hooks", admin_hooks_path
-- page_title 'Edit System Hook'
+- add_to_breadcrumbs _("System Hooks"), admin_hooks_path
+- page_title _('Edit System Hook')
%h3.page-title
- Edit System Hook
+ = _('Edit System Hook')
%p.light
- #{link_to 'System hooks ', help_page_path('system_hooks/system_hooks'), class: 'vlink'} can be
- used for binding events when GitLab creates a User or Project.
+ - link_to_system_hooks = link_to(_('System hooks'), help_page_path('system_hooks/system_hooks'), class: 'vlink')
+ = _('%{link_to_system_hooks} can be used for binding events when GitLab creates a User or Project.').html_safe % { link_to_system_hooks: link_to_system_hooks }
%hr
= form_for @hook, as: :hook, url: admin_hook_path do |f|
= render partial: 'form', locals: { form: f, hook: @hook }
.form-actions
- = f.submit 'Save changes', class: 'btn btn-create'
+ = f.submit _('Save changes'), class: 'btn btn-create'
= render 'shared/web_hooks/test_button', triggers: SystemHook.triggers, hook: @hook
- = link_to 'Remove', admin_hook_path(@hook), method: :delete, class: 'btn btn-remove float-right', data: { confirm: 'Are you sure?' }
+ = link_to _('Remove'), admin_hook_path(@hook), method: :delete, class: 'btn btn-remove float-right', data: { confirm: _('Are you sure?') }
%hr
diff --git a/app/views/admin/hooks/index.html.haml b/app/views/admin/hooks/index.html.haml
index 87f9b0e86a79dee19afd4f070648a996daede124..cdcdb94a4599907570c4012ca116e187e4634d33 100644
--- a/app/views/admin/hooks/index.html.haml
+++ b/app/views/admin/hooks/index.html.haml
@@ -1,35 +1,36 @@
-- page_title 'System Hooks'
+- page_title _('System Hooks')
.row.prepend-top-default
.col-lg-4
%h4.prepend-top-0
= page_title
%p
- #{link_to 'System hooks ', help_page_path('system_hooks/system_hooks'), class: 'vlink'} can be
- used for binding events when GitLab creates a User or Project.
+ - link_to_system_hooks = link_to(_('System hooks'), help_page_path('system_hooks/system_hooks'), class: 'vlink')
+ = _('%{link_to_system_hooks} can be used for binding events when GitLab creates a User or Project.').html_safe % { link_to_system_hooks: link_to_system_hooks }
.col-lg-8.append-bottom-default
= form_for @hook, as: :hook, url: admin_hooks_path do |f|
= render partial: 'form', locals: { form: f, hook: @hook }
- = f.submit 'Add system hook', class: 'btn btn-create'
+ = f.submit _('Add system hook'), class: 'btn btn-create'
%hr
- if @hooks.any?
.card
.card-header
- System hooks (#{@hooks.count})
+ = _('System hooks (%{hooks_count})') % { hooks_count: @hooks.count }
%ul.content-list
- @hooks.each do |hook|
%li
.controls
= render 'shared/web_hooks/test_button', triggers: SystemHook.triggers, hook: hook, button_class: 'btn-sm'
- = link_to 'Edit', edit_admin_hook_path(hook), class: 'btn btn-sm'
- = link_to 'Remove', admin_hook_path(hook), data: { confirm: 'Are you sure?' }, method: :delete, class: 'btn btn-remove btn-sm'
+ = link_to _('Edit'), edit_admin_hook_path(hook), class: 'btn btn-sm'
+ = link_to _('Remove'), admin_hook_path(hook), data: { confirm: _('Are you sure?') }, method: :delete, class: 'btn btn-remove btn-sm'
.monospace= hook.url
%div
- SystemHook.triggers.each_value do |event|
- if hook.public_send(event)
%span.badge.badge-gray= event.to_s.titleize
- %span.badge.badge-gray SSL Verification: #{hook.enable_ssl_verification ? 'enabled' : 'disabled'}
+ %span.badge.badge-gray
+ = _('SSL Verification: %{hook_enabled}') % { hook_enabled: hook.enable_ssl_verification ? _('enabled') : _('disabled') }
= render 'shared/plugins/index'
diff --git a/app/views/admin/impersonation_tokens/index.html.haml b/app/views/admin/impersonation_tokens/index.html.haml
index 9e490713ef38720db7a941fe5b269c87f5591289..7ff74efbc16f9ecce5e0c003c77f1b4d01a2e24f 100644
--- a/app/views/admin/impersonation_tokens/index.html.haml
+++ b/app/views/admin/impersonation_tokens/index.html.haml
@@ -1,6 +1,6 @@
-- add_to_breadcrumbs "Users", admin_users_path
+- add_to_breadcrumbs _("Users"), admin_users_path
- breadcrumb_title @user.name
-- page_title "Impersonation Tokens", @user.name, "Users"
+- page_title _("Impersonation Tokens"), @user.name, _("Users")
= render 'admin/users/head'
.row.prepend-top-default
diff --git a/app/views/admin/jobs/index.html.haml b/app/views/admin/jobs/index.html.haml
index 4e3e2f7a47580211ff509fc9feadb2e2c8a0294e..3173635542906decfe5a25b3f4b27ba30b1d02cf 100644
--- a/app/views/admin/jobs/index.html.haml
+++ b/app/views/admin/jobs/index.html.haml
@@ -1,4 +1,4 @@
-- breadcrumb_title "Jobs"
+- breadcrumb_title _("Jobs")
- @no_container = true
%div{ class: container_class }
diff --git a/app/views/admin/keys/show.html.haml b/app/views/admin/keys/show.html.haml
index 9ee77c77398bb0d59a79514e04a76efd10c23958..03cc0ae15be03da1b70f260b5c80716d14a6b4a4 100644
--- a/app/views/admin/keys/show.html.haml
+++ b/app/views/admin/keys/show.html.haml
@@ -1,2 +1,2 @@
-- page_title @key.title, "Keys"
+- page_title @key.title, _("Keys")
= render "profiles/keys/key_details", admin: true
diff --git a/app/views/admin/logs/show.html.haml b/app/views/admin/logs/show.html.haml
index e4c0382a4376c331a4182a60b9c8f1868481deac..eac1324e620e7b1e78b89d07ff24719c392d3387 100644
--- a/app/views/admin/logs/show.html.haml
+++ b/app/views/admin/logs/show.html.haml
@@ -1,5 +1,5 @@
- @no_container = true
-- page_title "Logs"
+- page_title _("Logs")
%div{ class: container_class }
%ul.nav-links.log-tabs.nav.nav-tabs
@@ -7,7 +7,7 @@
%li.nav-item
= link_to klass.file_name, "##{klass.file_name_noext}", data: { toggle: 'tab' }, class: "#{active_when(klass == @loggers.first)} nav-link"
.row-content-block
- To prevent performance issues admin logs output the last 2000 lines
+ = _('To prevent performance issues admin logs output the last 2000 lines')
.tab-content
- @loggers.each do |klass|
.tab-pane{ class: active_when(klass == @loggers.first), id: klass.file_name_noext }
@@ -18,7 +18,7 @@
.float-right
= link_to '#', class: 'log-bottom' do
%i.fa.fa-arrow-down
- Scroll down
+ = _('Scroll down')
.file-content.logs
%ol
- klass.read_latest.each do |line|
diff --git a/app/views/admin/projects/_projects.html.haml b/app/views/admin/projects/_projects.html.haml
index 50296a2afe7497d14a5c06c899ad2a74089a9b9c..18f4927b0e0de533e680e9c950f33285f02434c0 100644
--- a/app/views/admin/projects/_projects.html.haml
+++ b/app/views/admin/projects/_projects.html.haml
@@ -4,7 +4,7 @@
- @projects.each_with_index do |project|
%li.project-row{ class: ('no-description' if project.description.blank?) }
.controls
- = link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn"
+ = link_to _('Edit'), edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn"
%button.delete-project-button.btn.btn-danger{ data: { toggle: 'modal',
target: '#delete-project-modal',
delete_project_url: project_path(project),
@@ -15,7 +15,7 @@
%span.badge.badge-pill
= storage_counter(project.statistics.storage_size)
- if project.archived
- %span.badge.badge-warning archived
+ %span.badge.badge-warning= _('archived')
.title
= link_to(admin_namespace_project_path(project.namespace, project)) do
.dash-project-avatar
@@ -35,6 +35,6 @@
= paginate @projects, theme: 'gitlab'
- else
- .nothing-here-block No projects found
+ .nothing-here-block= _('No projects found')
#delete-project-modal
diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml
index 57de792f92d0be5200a58ef8ba1a928afe079296..8c1de2b3953775df514b602c7538777ae619f7c0 100644
--- a/app/views/admin/projects/index.html.haml
+++ b/app/views/admin/projects/index.html.haml
@@ -1,5 +1,5 @@
- @no_container = true
-- page_title "Projects"
+- page_title _("Projects")
- params[:visibility_level] ||= []
@@ -9,36 +9,36 @@
.search-holder
= render 'shared/projects/search_form', autofocus: true, icon: true
.dropdown
- - toggle_text = 'Namespace'
+ - toggle_text = _('Namespace')
- if params[:namespace_id].present?
= hidden_field_tag :namespace_id, params[:namespace_id]
- namespace = Namespace.find(params[:namespace_id])
- toggle_text = "#{namespace.kind}: #{namespace.full_path}"
= dropdown_toggle(toggle_text, { toggle: 'dropdown', is_filter: 'true' }, { toggle_class: 'js-namespace-select large' })
.dropdown-menu.dropdown-select.dropdown-menu-right
- = dropdown_title('Namespaces')
- = dropdown_filter("Search for Namespace")
+ = dropdown_title(_('Namespaces'))
+ = dropdown_filter(_("Search for Namespace"))
= dropdown_content
= dropdown_loading
= render 'shared/projects/dropdown'
= link_to new_project_path, class: 'btn btn-new' do
- New Project
- = button_tag "Search", class: "btn btn-primary btn-search hide"
+ = _('New Project')
+ = button_tag _("Search"), class: "btn btn-primary btn-search hide"
%ul.nav-links.nav.nav-tabs
- opts = params[:visibility_level].present? ? {} : { page: admin_projects_path }
= nav_link(opts) do
= link_to admin_projects_path do
- All
+ = _('All')
= nav_link(html_options: { class: active_when(params[:visibility_level] == Gitlab::VisibilityLevel::PRIVATE.to_s) }) do
= link_to admin_projects_path(visibility_level: Gitlab::VisibilityLevel::PRIVATE) do
- Private
+ = _('Private')
= nav_link(html_options: { class: active_when(params[:visibility_level] == Gitlab::VisibilityLevel::INTERNAL.to_s) }) do
= link_to admin_projects_path(visibility_level: Gitlab::VisibilityLevel::INTERNAL) do
- Internal
+ = _('Internal')
= nav_link(html_options: { class: active_when(params[:visibility_level] == Gitlab::VisibilityLevel::PUBLIC.to_s) }) do
= link_to admin_projects_path(visibility_level: Gitlab::VisibilityLevel::PUBLIC) do
- Public
+ = _('Public')
= render 'projects'
diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml
index c1ed2aa4ea870e95f3d7d1ca7e855bb3ea50f77f..b42057091122d162563435ef5b3a1a1e3445c4c7 100644
--- a/app/views/admin/projects/show.html.haml
+++ b/app/views/admin/projects/show.html.haml
@@ -1,11 +1,11 @@
-- add_to_breadcrumbs "Projects", admin_projects_path
+- add_to_breadcrumbs _("Projects"), admin_projects_path
- breadcrumb_title @project.full_name
-- page_title @project.full_name, "Projects"
+- page_title @project.full_name, _("Projects")
%h3.page-title
- Project: #{@project.full_name}
+ = _('Project: %{name}') % { name: @project.full_name }
= link_to edit_project_path(@project), class: "btn btn-nr float-right" do
%i.fa.fa-pencil-square-o
- Edit
+ = _('Edit')
%hr
- if @project.last_repository_check_failed?
.row
@@ -21,34 +21,34 @@
.col-md-6
.card
.card-header
- Project info:
+ = _("Project info:")
%ul.content-list
%li
- %span.light Name:
+ %span.light= _('Name:')
%strong
= link_to @project.name, project_path(@project)
%li
- %span.light Namespace:
+ %span.light= _('Namespace:')
%strong
- if @project.namespace
= link_to @project.namespace.human_name, [:admin, @project.group || @project.owner]
- else
- Global
+ = _('Global')
%li
- %span.light Owned by:
+ %span.light= _('Owned by:')
%strong
- if @project.owner
= link_to @project.owner_name, [:admin, @project.owner]
- else
- (deleted)
+ = _('(deleted)')
%li
- %span.light Created by:
+ %span.light= _('Created by:')
%strong
- = @project.creator.try(:name) || '(deleted)'
+ = @project.creator.try(:name) || _('(deleted)')
%li
- %span.light Created on:
+ %span.light= _('Created on:')
%strong
= @project.created_at.to_s(:medium)
@@ -62,51 +62,47 @@
= link_to @project.ssh_url_to_repo, project_path(@project)
- if @project.repository.exists?
%li
- %span.light Gitaly storage name:
+ %span.light= _('Gitaly storage name:')
%strong
= @project.repository.storage
%li
- %span.light Gitaly relative path:
+ %span.light= _('Gitaly relative path:')
%strong
= @project.repository.relative_path
%li
- %span.light Storage used:
- %strong= storage_counter(@project.statistics.storage_size)
- (
- = storage_counter(@project.statistics.repository_size)
- repository,
- = storage_counter(@project.statistics.build_artifacts_size)
- build artifacts,
- = storage_counter(@project.statistics.lfs_objects_size)
- LFS
- )
+ %span.light= _('Storage used:')
+ - counter_storage = storage_counter(@project.statistics.storage_size)
+ - counter_repository = storage_counter(@project.statistics.repository_size)
+ - counter_build_artifacts = storage_counter(@project.statistics.build_artifacts_size)
+ - counter_lfs_objects = storage_counter(@project.statistics.lfs_objects_size)
+ = _('%{counter_storage} (%{counter_repository} repository, %{counter_build_artifacts} build artifacts, %{counter_lfs_objects} LFS)').html_safe % { counter_storage: counter_storage, counter_repository: counter_repository, counter_build_artifacts: counter_build_artifacts, counter_lfs_objects: counter_lfs_objects }
%li
- %span.light last commit:
+ %span.light= _('last commit:')
%strong
= last_commit(@project)
%li
- %span.light Git LFS status:
+ %span.light= _('Git LFS status:')
%strong
= project_lfs_status(@project)
= link_to icon('question-circle'), help_page_path('workflow/lfs/manage_large_binaries_with_git_lfs')
- else
%li
- %span.light repository:
+ %span.light= _('repository:')
%strong.cred
- does not exist
+ = _('does not exist')
- if @project.archived?
%li
- %span.light archived:
- %strong project is read-only
+ %span.light= _('archived:')
+ %strong= _('project is read-only')
= render "shared_runner_status", project: @project
%li
- %span.light access:
+ %span.light= _('access:')
%strong
%span{ class: visibility_level_color(@project.visibility_level) }
= visibility_level_icon(@project.visibility_level)
@@ -114,60 +110,55 @@
.card
.card-header
- Transfer project
+ = _('Transfer project')
.card-body
= form_for @project, url: transfer_admin_project_path(@project), method: :put do |f|
.form-group.row
- = f.label :new_namespace_id, "Namespace", class: 'col-form-label col-sm-3'
+ = f.label :new_namespace_id, _("Namespace"), class: 'col-form-label col-sm-3'
.col-sm-9
.dropdown
- = dropdown_toggle('Search for Namespace', { toggle: 'dropdown', field_name: 'new_namespace_id' }, { toggle_class: 'js-namespace-select large' })
+ = dropdown_toggle(_('Search for Namespace'), { toggle: 'dropdown', field_name: 'new_namespace_id' }, { toggle_class: 'js-namespace-select large' })
.dropdown-menu.dropdown-select
- = dropdown_title('Namespaces')
- = dropdown_filter("Search for Namespace")
+ = dropdown_title(_('Namespaces'))
+ = dropdown_filter(_("Search for Namespace"))
= dropdown_content
= dropdown_loading
.form-group.row
.offset-sm-3.col-sm-9
- = f.submit 'Transfer', class: 'btn btn-primary'
+ = f.submit _('Transfer'), class: 'btn btn-primary'
.card.repository-check
.card-header
- Repository check
+ = _('Repository check')
.card-body
= form_for @project, url: repository_check_admin_project_path(@project), method: :post do |f|
.form-group
- if @project.last_repository_check_at.nil?
- This repository has never been checked.
+ = _('This repository has never been checked.')
- else
- This repository was last checked
- = @project.last_repository_check_at.to_s(:medium) + '.'
- The check
+ = _('This repository was last checked %{time}.').html_safe % { time: @project.last_repository_check_at.to_s(:medium) }
- if @project.last_repository_check_failed?
- = succeed '.' do
- %strong.cred failed
- See
- = link_to 'repocheck.log', admin_logs_path
- for error messages.
+ - link_to_repocheck = link_to('repocheck.log', admin_logs_path)
+ = _('The check failed. See %{link_to_repocheck} for error messages.').html_safe % { link_to_repocheck: link_to_repocheck }
- else
- passed.
+ = _('The check passed.')
= link_to icon('question-circle'), help_page_path('administration/repository_checks')
.form-group
- = f.submit 'Trigger repository check', class: 'btn btn-primary'
+ = f.submit _('Trigger repository check'), class: 'btn btn-primary'
.col-md-6
- if @group
.card
.card-header
%strong= @group.name
- group members
+ = _('group members')
%span.badge.badge-pill= @group_members.size
.float-right
= link_to admin_group_path(@group), class: 'btn btn-sm' do
- = icon('pencil-square-o', text: 'Manage access')
+ = icon('pencil-square-o', text: _('Manage access'))
%ul.content-list.members-list
= render partial: 'shared/members/member', collection: @group_members, as: :member, locals: { show_controls: false }
.card-footer
@@ -178,10 +169,10 @@
.card
.card-header
%strong= @project.name
- project members
+ = _('project members')
%span.badge.badge-pill= @project.users.size
.float-right
- = link_to icon('pencil-square-o', text: 'Manage access'), polymorphic_url([@project, :members]), class: "btn btn-sm"
+ = link_to icon('pencil-square-o', text: _('Manage access')), polymorphic_url([@project, :members]), class: "btn btn-sm"
%ul.content-list.project_members.members-list
= render partial: 'shared/members/member', collection: @project_members, as: :member, locals: { show_controls: false }
.card-footer
diff --git a/app/views/admin/requests_profiles/index.html.haml b/app/views/admin/requests_profiles/index.html.haml
index adfc67d66d08e1316c97b2092fbab4d8b5ce37a8..48388ee65159d81cd990e6c032b9e40b3c2b81e6 100644
--- a/app/views/admin/requests_profiles/index.html.haml
+++ b/app/views/admin/requests_profiles/index.html.haml
@@ -1,14 +1,12 @@
- @no_container = true
-- page_title 'Requests Profiles'
+- page_title _('Requests Profiles')
%div{ class: container_class }
%h3.page-title
= page_title
.bs-callout.clearfix
- Pass the header
- %code X-Profile-Token: #{@profile_token}
- to profile the request
+ = _('Pass the header X-Profile-Token: %{profile_token} to profile the request').html_safe % { profile_token: @profile_token }
- if @profiles.present?
.prepend-top-default
@@ -22,4 +20,4 @@
= link_to profile.time.to_s(:long), admin_requests_profile_path(profile)
- else
%p
- No profiles found
+ = _('No profiles found')
diff --git a/app/views/admin/runners/_runner.html.haml b/app/views/admin/runners/_runner.html.haml
index 43937b013391c45c01b35fda397f003ea5703689..94646acad91d679ff5c64901a5ca14f39e4c3abb 100644
--- a/app/views/admin/runners/_runner.html.haml
+++ b/app/views/admin/runners/_runner.html.haml
@@ -1,15 +1,15 @@
%tr{ id: dom_id(runner) }
%td
- if runner.instance_type?
- %span.badge.badge-success shared
+ %span.badge.badge-success= _("shared")
- elsif runner.group_type?
- %span.badge.badge-success group
+ %span.badge.badge-success= _("group")
- else
- %span.badge.badge-info specific
+ %span.badge.badge-info= _("specific")
- if runner.locked?
- %span.badge.badge-warning locked
+ %span.badge.badge-warning= _("locked")
- unless runner.active?
- %span.badge.badge-danger paused
+ %span.badge.badge-danger= _("paused")
%td
= link_to admin_runner_path(runner) do
@@ -22,7 +22,7 @@
= runner.ip_address
%td
- if runner.instance_type? || runner.group_type?
- n/a
+ = _("n/a")
- else
= runner.projects.count(:all)
%td
@@ -35,17 +35,17 @@
- if runner.contacted_at
= time_ago_with_tooltip runner.contacted_at
- else
- Never
+ = _("Never")
%td.admin-runner-btn-group-cell
.float-right.btn-group
- = link_to admin_runner_path(runner), class: 'btn btn-sm btn-default has-tooltip', title: 'Edit', ref: 'tooltip', aria: { label: 'Edit' }, data: { placement: 'top', container: 'body'} do
+ = link_to admin_runner_path(runner), class: 'btn btn-sm btn-default has-tooltip', title: _('Edit'), ref: 'tooltip', aria: { label: _('Edit') }, data: { placement: 'top', container: 'body' } do
= icon('pencil')
- if runner.active?
- = link_to [:pause, :admin, runner], method: :get, class: 'btn btn-sm btn-default has-tooltip', title: 'Pause', ref: 'tooltip', aria: { label: 'Pause' }, data: { placement: 'top', container: 'body', confirm: "Are you sure?" } do
+ = link_to [:pause, :admin, runner], method: :get, class: 'btn btn-sm btn-default has-tooltip', title: _('Pause'), ref: 'tooltip', aria: { label: _('Pause') }, data: { placement: 'top', container: 'body', confirm: _("Are you sure?") } do
= icon('pause')
- else
- = link_to [:resume, :admin, runner], method: :get, class: 'btn btn-default btn-sm has-tooltip', title: 'Resume', ref: 'tooltip', aria: { label: 'Resume' }, data: { placement: 'top', container: 'body'} do
+ = link_to [:resume, :admin, runner], method: :get, class: 'btn btn-default btn-sm has-tooltip', title: _('Resume'), ref: 'tooltip', aria: { label: _('Resume') }, data: { placement: 'top', container: 'body' } do
= icon('play')
- = link_to [:admin, runner], method: :delete, class: 'btn btn-danger btn-sm has-tooltip', title: 'Remove', ref: 'tooltip', aria: { label: 'Remove' }, data: { placement: 'top', container: 'body', confirm: "Are you sure?" } do
+ = link_to [:admin, runner], method: :delete, class: 'btn btn-danger btn-sm has-tooltip', title: _('Remove'), ref: 'tooltip', aria: { label: _('Remove') }, data: { placement: 'top', container: 'body', confirm: _("Are you sure?") } do
= icon('remove')
diff --git a/app/views/admin/runners/index.html.haml b/app/views/admin/runners/index.html.haml
index 8dfd176f1b7aae55b1ce9a4a5142d57767935fa3..178a653f7263c167c4a063c76c2fd8682c3ce3b6 100644
--- a/app/views/admin/runners/index.html.haml
+++ b/app/views/admin/runners/index.html.haml
@@ -1,38 +1,35 @@
-- breadcrumb_title "Runners"
+- breadcrumb_title _("Runners")
- @no_container = true
%div{ class: container_class }
.bs-callout
%p
- A 'Runner' is a process which runs a job.
- You can setup as many Runners as you need.
- %br
- Runners can be placed on separate users, servers, even on your local machine.
+ = _("A 'Runner' is a process which runs a job. You can setup as many Runners as you need.
Runners can be placed on separate users, servers, even on your local machine.").html_safe
%br
%div
- %span Each Runner can be in one of the following states:
+ %span= _("Each Runner can be in one of the following states:")
%ul
%li
- %span.badge.badge-success shared
- \- Runner runs jobs from all unassigned projects
+ %span.badge.badge-success= _("shared")
+ \- #{_("Runner runs jobs from all unassigned projects")}
%li
- %span.badge.badge-success group
- \- Runner runs jobs from all unassigned projects in its group
+ %span.badge.badge-success= _("group")
+ \- #{_("Runner runs jobs from all unassigned projects in its group")}
%li
- %span.badge.badge-info specific
- \- Runner runs jobs from assigned projects
+ %span.badge.badge-info= _("specific")
+ \- #{_("Runner runs jobs from assigned projects")}
%li
- %span.badge.badge-warning locked
- \- Runner cannot be assigned to other projects
+ %span.badge.badge-warning= _("locked")
+ \- #{_("Runner cannot be assigned to other projects")}
%li
- %span.badge.badge-danger paused
- \- Runner will not receive any new jobs
+ %span.badge.badge-danger= _("paused")
+ \- #{_("Runner will not receive any new jobs")}
.bs-callout.clearfix
.float-left
%p
- You can reset runners registration token by pressing a button below.
+ = _("You can reset runners registration token by pressing a button below.")
.prepend-top-10
= button_to _("Reset runners registration token"), reset_runners_token_admin_application_settings_path,
method: :put, class: 'btn btn-default',
@@ -45,11 +42,11 @@
.float-left
= form_tag admin_runners_path, id: 'runners-search', class: 'form-inline', method: :get do
.form-group
- = search_field_tag :search, params[:search], class: 'form-control input-short', placeholder: 'Runner description or token', spellcheck: false
- = submit_tag 'Search', class: 'btn'
+ = search_field_tag :search, params[:search], class: 'form-control input-short', placeholder: _('Runner description or token'), spellcheck: false
+ = submit_tag _('Search'), class: 'btn'
.float-right.light
- Runners with last contact more than a minute ago: #{@active_runners_cnt}
+ = _("Runners with last contact more than a minute ago: %{active_runners_counter}") % { active_runners_counter: @active_runners_cnt }
%br
@@ -59,19 +56,19 @@
%table.table
%thead
%tr
- %th Type
- %th Runner token
- %th Description
- %th Version
- %th IP Address
- %th Projects
- %th Jobs
- %th Tags
- %th= link_to 'Last contact', admin_runners_path(safe_params.slice(:search).merge(sort: 'contacted_asc'))
+ %th= _("Type")
+ %th= _("Runner token")
+ %th= _("Description")
+ %th= _("Version")
+ %th= _("IP Address")
+ %th= _("Projects")
+ %th= _("Jobs")
+ %th= _("Tags")
+ %th= link_to _('Last contact'), admin_runners_path(safe_params.slice(:search).merge(sort: 'contacted_asc'))
%th
- @runners.each do |runner|
= render "admin/runners/runner", runner: runner
= paginate @runners, theme: "gitlab"
- else
- .nothing-here-block No runners found
+ .nothing-here-block= _('No runners found')
diff --git a/app/views/admin/runners/show.html.haml b/app/views/admin/runners/show.html.haml
index 62be38e9dd2f8bdd1547fb4376770b4eaeadaeea..fe94308e04194ba6fd74f7a71d9ee10b304be65f 100644
--- a/app/views/admin/runners/show.html.haml
+++ b/app/views/admin/runners/show.html.haml
@@ -1,30 +1,29 @@
= content_for :title do
%h3.project-title
- Runner ##{@runner.id}
+ = _("Runner #%{id}") % { id: @runner.id }
.float-right
- if @runner.instance_type?
%span.runner-state.runner-state-shared
- Shared
+ = _('Shared')
- else
%span.runner-state.runner-state-specific
- Specific
+ = _('Specific')
- add_to_breadcrumbs _("Runners"), admin_runners_path
- breadcrumb_title "##{@runner.id}"
- if @runner.instance_type?
.bs-callout.bs-callout-success
- %h4 This Runner will process jobs from ALL UNASSIGNED projects
+ %h4= _('This Runner will process jobs from ALL UNASSIGNED projects')
%p
- If you want Runners to build only specific projects, enable them in the table below.
- Keep in mind that this is a one way transition.
+ = _('If you want Runners to build only specific projects, enable them in the table below. Keep in mind that this is a one way transition.')
- elsif @runner.group_type?
.bs-callout.bs-callout-success
- %h4 This runner will process jobs from all projects in its group and subgroups
+ %h4= _('This runner will process jobs from all projects in its group and subgroups')
- else
.bs-callout.bs-callout-info
- %h4 This Runner will process jobs only from ASSIGNED projects
- %p You can't make this a shared Runner.
+ %h4= _('This Runner will process jobs only from ASSIGNED projects')
+ %p= _("You can't make this a shared Runner.")
%hr
.append-bottom-20
@@ -32,12 +31,12 @@
.row
.col-md-6
- %h4 Restrict projects for this Runner
+ %h4= _("Restrict projects for this Runner")
- if @runner.projects.any?
%table.table.assigned-projects
%thead
%tr
- %th Assigned projects
+ %th= _('Assigned projects')
%th
- @runner.runner_projects.each do |runner_project|
- project = runner_project.project
@@ -48,12 +47,12 @@
= project.full_name
%td
.float-right
- = link_to 'Disable', [:admin, project.namespace.becomes(Namespace), project, runner_project], method: :delete, class: 'btn btn-danger btn-sm'
+ = link_to _('Disable'), [:admin, project.namespace.becomes(Namespace), project, runner_project], method: :delete, class: 'btn btn-danger btn-sm'
%table.table.unassigned-projects
%thead
%tr
- %th Project
+ %th= _('Project')
%th
%tr
@@ -61,7 +60,7 @@
= form_tag admin_runner_path(@runner), id: 'runner-projects-search', class: 'form-inline', method: :get do
.form-group
= search_field_tag :search, params[:search], class: 'form-control', spellcheck: false
- = submit_tag 'Search', class: 'btn'
+ = submit_tag _('Search'), class: 'btn'
%td
- @projects.each do |project|
@@ -72,19 +71,19 @@
.float-right
= form_for [:admin, project.namespace.becomes(Namespace), project, project.runner_projects.new] do |f|
= f.hidden_field :runner_id, value: @runner.id
- = f.submit 'Enable', class: 'btn btn-sm'
+ = f.submit _('Enable'), class: 'btn btn-sm'
= paginate @projects, theme: "gitlab"
.col-md-6
- %h4 Recent jobs served by this Runner
+ %h4= _('Recent jobs served by this Runner')
%table.table.ci-table.runner-builds
%thead
%tr
- %th Job
- %th Status
- %th Project
- %th Commit
- %th Finished at
+ %th= _('Job')
+ %th= _('Status')
+ %th= _('Project')
+ %th= _('Commit')
+ %th= _('Finished at')
- @builds.each do |build|
- project = build.project
diff --git a/app/views/admin/services/_form.html.haml b/app/views/admin/services/_form.html.haml
index f8cab4cbadd8b77116beafb837b34b5bb41a8dc6..dcadb9276d9fe13682820ecd829935620e9ff8bc 100644
--- a/app/views/admin/services/_form.html.haml
+++ b/app/views/admin/services/_form.html.haml
@@ -7,4 +7,4 @@
= render 'shared/service_settings', form: form, subject: @service
.footer-block.row-content-block
- = form.submit 'Save', class: 'btn btn-save'
+ = form.submit _('Save'), class: 'btn btn-save'
diff --git a/app/views/admin/services/edit.html.haml b/app/views/admin/services/edit.html.haml
index 512176649e66eca1fc9b5e991950fccacfcd7894..0a2e158d0aebf8c01776ca477d1694b84f202c6b 100644
--- a/app/views/admin/services/edit.html.haml
+++ b/app/views/admin/services/edit.html.haml
@@ -1,4 +1,4 @@
-- add_to_breadcrumbs "Service Templates", admin_application_settings_services_path
+- add_to_breadcrumbs _("Service Templates"), admin_application_settings_services_path
- breadcrumb_title @service.title
-- page_title @service.title, "Service Templates"
+- page_title @service.title, _("Service Templates")
= render 'form'
diff --git a/app/views/admin/services/index.html.haml b/app/views/admin/services/index.html.haml
index 89872c1b91ad1901e5ed7caa760d79c5b2ac5d95..2704678ebd6f950d83ec5248567d17a2b6c46872 100644
--- a/app/views/admin/services/index.html.haml
+++ b/app/views/admin/services/index.html.haml
@@ -1,15 +1,15 @@
-- page_title "Service Templates"
-%h3.page-title Service templates
-%p.light Service template allows you to set default values for project services
+- page_title _("Service Templates")
+%h3.page-title= _('Service templates')
+%p.light= _('Service template allows you to set default values for project services')
.table-holder
%table.table
%thead
%tr
%th
- %th Service
- %th Description
- %th Last edit
+ %th= _('Service')
+ %th= _('Description')
+ %th= _('Last edit')
- @services.sort_by(&:title).each do |service|
%tr
%td
diff --git a/app/views/admin/spam_logs/_spam_log.html.haml b/app/views/admin/spam_logs/_spam_log.html.haml
index 9d47dc1cce52f815f42e26bbdaa67b57e09edfc7..ed5a84ead565ed7dec01d30d0e93683bd868b2f5 100644
--- a/app/views/admin/spam_logs/_spam_log.html.haml
+++ b/app/views/admin/spam_logs/_spam_log.html.haml
@@ -6,9 +6,9 @@
- if user
= link_to user.name, [:admin, user]
.light.small
- Joined #{time_ago_with_tooltip(user.created_at)}
+ = _('Joined %{user_created_time}').html_safe % { user_created_time: time_ago_with_tooltip(user.created_at) }
- else
- (removed)
+ = _('(removed)')
%td
= spam_log.source_ip
%td
@@ -23,17 +23,17 @@
= truncate(spam_log.description, length: 100)
%td
- if user
- = link_to 'Remove user', admin_spam_log_path(spam_log, remove_user: true),
- data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, method: :delete, class: "btn btn-sm btn-remove"
+ = link_to _('Remove user'), admin_spam_log_path(spam_log, remove_user: true),
+ data: { confirm: _("USER %{user_name} WILL BE REMOVED! Are you sure?") % { user_name: user.name } }, method: :delete, class: "btn btn-sm btn-remove"
%td
- if spam_log.submitted_as_ham?
.btn.btn-sm.disabled
- Submitted as ham
+ = _("Submitted as ham")
- else
- = link_to 'Submit as ham', mark_as_ham_admin_spam_log_path(spam_log), method: :post, class: 'btn btn-sm btn-warning'
+ = link_to _('Submit as ham'), mark_as_ham_admin_spam_log_path(spam_log), method: :post, class: 'btn btn-sm btn-warning'
- if user && !user.blocked?
- = link_to 'Block user', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: "btn btn-sm"
+ = link_to _('Block user'), block_admin_user_path(user), data: { confirm: _('USER WILL BE BLOCKED! Are you sure?') }, method: :put, class: "btn btn-sm"
- else
.btn.btn-sm.disabled
- Already blocked
- = link_to 'Remove log', [:admin, spam_log], remote: true, method: :delete, class: "btn btn-sm btn-close js-remove-tr"
+ = _('Already blocked')
+ = link_to _('Remove log'), [:admin, spam_log], remote: true, method: :delete, class: "btn btn-sm btn-close js-remove-tr"
diff --git a/app/views/admin/spam_logs/index.html.haml b/app/views/admin/spam_logs/index.html.haml
index 8aaa6379730380c769f9f9d2381e8e63ebc8db53..34f899500a9d67f16ea0acfb825a3e2d0099056a 100644
--- a/app/views/admin/spam_logs/index.html.haml
+++ b/app/views/admin/spam_logs/index.html.haml
@@ -1,22 +1,22 @@
-- page_title "Spam Logs"
-%h3.page-title Spam Logs
+- page_title _("Spam Logs")
+%h3.page-title= _('Spam Logs')
%hr
- if @spam_logs.present?
.table-holder
%table.table
%thead
%tr
- %th Date
- %th User
- %th Source IP
- %th API?
- %th Recaptcha verified?
- %th Type
- %th Title
- %th Description
- %th Primary Action
+ %th= _('Date')
+ %th= _('User')
+ %th= _('Source IP')
+ %th= _('API?')
+ %th= _('Recaptcha verified?')
+ %th= _('Type')
+ %th= _('Title')
+ %th= _('Description')
+ %th= _('Primary Action')
%th
= render @spam_logs
= paginate @spam_logs
- else
- %h4 There are no Spam Logs
+ %h4= _('There are no Spam Logs')
diff --git a/app/views/admin/system_info/show.html.haml b/app/views/admin/system_info/show.html.haml
index b19934e028d7c064afab86dfd1566501e1590a06..0a25f79c611f4163d743d86fea6991b784059733 100644
--- a/app/views/admin/system_info/show.html.haml
+++ b/app/views/admin/system_info/show.html.haml
@@ -1,30 +1,31 @@
- @no_container = true
-- page_title "System Info"
+- page_title _("System Info")
%div{ class: container_class }
.prepend-top-default
.row
.col-sm-4
.card.bg-light.light-well
- %h4 CPU
+ %h4= _('CPU')
.data
- if @cpus
- %h1 #{@cpus.length} cores
+ %h1
+ = _('%{cpus} cores') % { cpus: @cpus.length }
- else
= icon('warning', class: 'text-warning')
- Unable to collect CPU info
+ = _('Unable to collect CPU info')
.col-sm-4
.card.bg-light.light-well
- %h4 Memory Usage
+ %h4= _('Memory Usage')
.data
- if @memory
%h1 #{number_to_human_size(@memory.active_bytes)} / #{number_to_human_size(@memory.total_bytes)}
- else
= icon('warning', class: 'text-warning')
- Unable to collect memory info
+ = _('Unable to collect memory info')
.col-sm-4
.card.bg-light.light-well
- %h4 Disk Usage
+ %h4= _('Disk Usage')
.data
- @disks.each do |disk|
%h1 #{number_to_human_size(disk[:bytes_used])} / #{number_to_human_size(disk[:bytes_total])}
@@ -32,6 +33,6 @@
%p= disk[:mount_path]
.col-sm-4
.card.bg-light.light-well
- %h4 Uptime
+ %h4= _('Uptime')
.data
%h1= distance_of_time_in_words_to_now(Rails.application.config.booted_at)
diff --git a/app/views/instance_statistics/cohorts/_cohorts_table.html.haml b/app/views/instance_statistics/cohorts/_cohorts_table.html.haml
index 701a4e62b39a2e89de04befb0ad6d14480e47212..4eeb0c47e3d6b8e8b6d611482626dafd0e5723ff 100644
--- a/app/views/instance_statistics/cohorts/_cohorts_table.html.haml
+++ b/app/views/instance_statistics/cohorts/_cohorts_table.html.haml
@@ -1,19 +1,17 @@
.bs-callout.clearfix
%p
- User cohorts are shown for the last #{@cohorts[:months_included]}
- months. Only users with activity are counted in the cohort total; inactive
- users are counted separately.
- = link_to icon('question-circle'), help_page_path('user/admin_area/user_cohorts', anchor: 'cohorts'), title: 'About this feature', target: '_blank'
+ = _('User cohorts are shown for the last %{months} months. Only users with activity are counted in the cohort total; inactive users are counted separately.') % { months: @cohorts[:months_included] }
+ = link_to icon('question-circle'), help_page_path('user/admin_area/user_cohorts', anchor: 'cohorts'), title: _('About this feature'), target: '_blank'
.table-holder
%table.table
%thead
%tr
- %th Registration month
- %th Inactive users
- %th Cohort total
+ %th= _('Registration month')
+ %th= _('Inactive users')
+ %th= _('Cohort total')
- @cohorts[:months_included].times do |i|
- %th Month #{i}
+ %th= _('Month %{month}') % { month: i }
%tbody
- @cohorts[:cohorts].each do |cohort|
%tr
diff --git a/app/views/instance_statistics/cohorts/_usage_ping.html.haml b/app/views/instance_statistics/cohorts/_usage_ping.html.haml
index 3dda386fcf7d937db3de6d6b63affd70a1f6299c..4b242bf41bce2f5fa713db59d5fd18d194bb40da 100644
--- a/app/views/instance_statistics/cohorts/_usage_ping.html.haml
+++ b/app/views/instance_statistics/cohorts/_usage_ping.html.haml
@@ -1,10 +1,8 @@
-%h2#usage-ping Usage ping
+%h2#usage-ping _('Usage ping')
.bs-callout.clearfix
%p
- User cohorts are shown because the usage ping is enabled. The data sent with
- this is shown below. To disable this, visit
- = succeed '.' do
- = link_to 'application settings', admin_application_settings_path(anchor: 'usage-statistics')
+ - link_to_application_settings = link_to(_('application settings'), admin_application_settings_path(anchor: 'usage-statistics'))
+ = _('User cohorts are shown because the usage ping is enabled. The data sent with this is shown below. To disable this, visit %{link_to_application_settings}.').html_safe % { link_to_application_settings: link_to_application_settings }
%pre.usage-data.js-syntax-highlight.code.highlight{ data: { endpoint: usage_data_admin_application_settings_path(format: :html) } }
diff --git a/app/views/instance_statistics/cohorts/index.html.haml b/app/views/instance_statistics/cohorts/index.html.haml
index 5e9a8c083aff9c82031ac648e545fec560044bfd..4e4ab8921d61cc887e465c5cd929c0918c824ce2 100644
--- a/app/views/instance_statistics/cohorts/index.html.haml
+++ b/app/views/instance_statistics/cohorts/index.html.haml
@@ -1,4 +1,4 @@
-- breadcrumb_title "Cohorts"
+- breadcrumb_title _("Cohorts")
- @no_container = true
%div{ class: container_class }
@@ -8,9 +8,6 @@
- else
.bs-callout.bs-callout-warning.clearfix
%p
- User cohorts are only shown when the
- = link_to 'usage ping', help_page_path('user/admin_area/settings/usage_statistics', anchor: 'usage-ping'), target: '_blank'
- is enabled. To enable it and see user cohorts,
- visit
- = succeed '.' do
- = link_to 'application settings', admin_application_settings_path(anchor: 'usage-statistics')
+ - link_to_usage_ping = link_to(_('usage ping'), help_page_path('user/admin_area/settings/usage_statistics', anchor: 'usage-ping'), target: '_blank')
+ - link_to_application_settings = link_to(_('application settings'), admin_application_settings_path(anchor: 'usage-statistics'))
+ = _('User cohorts are only shown when the %{link_to_usage_ping} is enabled. To enable it and see user cohorts, visit %{link_to_application_settings}.').html_safe % { link_to_usage_ping: link_to_usage_ping, link_to_application_settings: link_to_application_settings }
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 0ea8789d6cbfc5b9435051434d264fa0aa5b3903..1a4fdfa71ce202b3a5cff1311b58e3688f15464f 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -116,12 +116,18 @@ msgid_plural "%{count} participants"
msgstr[0] ""
msgstr[1] ""
+msgid "%{cpus} cores"
+msgstr ""
+
msgid "%{filePath} deleted"
msgstr ""
msgid "%{group_docs_link_start}Groups%{group_docs_link_end} allow you to manage and collaborate across multiple projects. Members of a group have access to all of its projects."
msgstr ""
+msgid "%{link_to_system_hooks} can be used for binding events when GitLab creates a User or Project."
+msgstr ""
+
msgid "%{loadingIcon} Started"
msgstr ""
@@ -188,6 +194,12 @@ msgstr[1] ""
msgid "%{unstaged} unstaged and %{staged} staged changes"
msgstr ""
+msgid "(deleted)"
+msgstr ""
+
+msgid "(removed)"
+msgstr ""
+
msgid "+ %{moreCount} more"
msgstr ""
@@ -291,6 +303,9 @@ msgstr ""
msgid "%{changedFilesLength} unstaged and %{stagedFilesLength} staged changes"
msgstr ""
+msgid "%{counter_storage} (%{counter_repository} repository, %{counter_build_artifacts} build artifacts, %{counter_lfs_objects} LFS)"
+msgstr ""
+
msgid "%{created_count} created, %{accepted_count} accepted."
msgstr ""
@@ -309,6 +324,9 @@ msgstr ""
msgid "A 'Runner' is a process which runs a job. You can setup as many Runners as you need."
msgstr ""
+msgid "A 'Runner' is a process which runs a job. You can setup as many Runners as you need.
Runners can be placed on separate users, servers, even on your local machine."
+msgstr ""
+
msgid "A collection of graphs regarding Continuous Integration"
msgstr ""
@@ -324,6 +342,9 @@ msgstr ""
msgid "A user with write access to the source branch selected this option"
msgstr ""
+msgid "API?"
+msgstr ""
+
msgid "About GitLab"
msgstr ""
@@ -369,12 +390,18 @@ msgstr ""
msgid "Account and limit"
msgstr ""
+msgid "Action"
+msgstr ""
+
msgid "Active"
msgstr ""
msgid "Active Sessions"
msgstr ""
+msgid "Active Users"
+msgstr ""
+
msgid "Activity"
msgstr ""
@@ -402,6 +429,9 @@ msgstr ""
msgid "Add additional text to appear in all email communications. %{character_limit} character limit"
msgstr ""
+msgid "Add broadcast message"
+msgstr ""
+
msgid "Add new application"
msgstr ""
@@ -411,6 +441,9 @@ msgstr ""
msgid "Add reaction"
msgstr ""
+msgid "Add system hook"
+msgstr ""
+
msgid "Add todo"
msgstr ""
@@ -420,6 +453,9 @@ msgstr ""
msgid "Add users to group"
msgstr ""
+msgid "Added at"
+msgstr ""
+
msgid "Additional text"
msgstr ""
@@ -525,6 +561,9 @@ msgstr ""
msgid "Allows you to add and manage Kubernetes clusters."
msgstr ""
+msgid "Already blocked"
+msgstr ""
+
msgid "Also called \"Issuer\" or \"Relying party trust identifier\""
msgstr ""
@@ -684,6 +723,9 @@ msgstr ""
msgid "Appearance"
msgstr ""
+msgid "Appearance settings"
+msgstr ""
+
msgid "Application"
msgstr ""
@@ -762,6 +804,9 @@ msgstr ""
msgid "Assigned Merge Requests"
msgstr ""
+msgid "Assigned projects"
+msgstr ""
+
msgid "Assigned to :name"
msgstr ""
@@ -1050,6 +1095,9 @@ msgstr ""
msgid "Bitbucket import"
msgstr ""
+msgid "Block user"
+msgstr ""
+
msgid "Blog"
msgstr ""
@@ -1205,6 +1253,12 @@ msgstr ""
msgid "Branches|protected"
msgstr ""
+msgid "Broadcast Messages"
+msgstr ""
+
+msgid "Broadcast messages are displayed for every user and can be used to notify users about scheduled maintenance, recent upgrades and more."
+msgstr ""
+
msgid "Browse Directory"
msgstr ""
@@ -1286,6 +1340,12 @@ msgstr ""
msgid "CICD|instance enabled"
msgstr ""
+msgid "COMMAND"
+msgstr ""
+
+msgid "CPU"
+msgstr ""
+
msgid "Callback URL"
msgstr ""
@@ -1937,6 +1997,9 @@ msgstr ""
msgid "ClusterIntegration|sign up"
msgstr ""
+msgid "Cohort total"
+msgstr ""
+
msgid "Cohorts"
msgstr ""
@@ -2049,6 +2112,9 @@ msgstr ""
msgid "CompareBranches|There isn't anything to compare."
msgstr ""
+msgid "Components"
+msgstr ""
+
msgid "Confidential"
msgstr ""
@@ -2097,6 +2163,9 @@ msgstr ""
msgid "Container Registry"
msgstr ""
+msgid "Container Registry: status %{on_or_off}"
+msgstr ""
+
msgid "ContainerRegistry|Created"
msgstr ""
@@ -2316,6 +2385,9 @@ msgstr ""
msgid "Created by me"
msgstr ""
+msgid "Created by:"
+msgstr ""
+
msgid "Created on:"
msgstr ""
@@ -2331,6 +2403,9 @@ msgstr ""
msgid "Current Branch"
msgstr ""
+msgid "Current Status:"
+msgstr ""
+
msgid "Current node"
msgstr ""
@@ -2400,6 +2475,9 @@ msgstr ""
msgid "DashboardProjects|Personal"
msgstr ""
+msgid "Date"
+msgstr ""
+
msgid "Dec"
msgstr ""
@@ -2573,6 +2651,9 @@ msgstr ""
msgid "Description"
msgstr ""
+msgid "Description parsed with %{link_to_help_markdown}."
+msgstr ""
+
msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project."
msgstr ""
@@ -2621,6 +2702,9 @@ msgstr ""
msgid "Discover projects, groups and snippets. Share your projects with others"
msgstr ""
+msgid "Disk Usage"
+msgstr ""
+
msgid "Dismiss"
msgstr ""
@@ -2687,6 +2771,9 @@ msgstr ""
msgid "Edit"
msgstr ""
+msgid "Edit Deploy Key"
+msgstr ""
+
msgid "Edit Label"
msgstr ""
@@ -2696,6 +2783,9 @@ msgstr ""
msgid "Edit Snippet"
msgstr ""
+msgid "Edit System Hook"
+msgstr ""
+
msgid "Edit application"
msgstr ""
@@ -2708,6 +2798,12 @@ msgstr ""
msgid "Edit identity for %{user_name}"
msgstr ""
+msgid "Edit public deploy key"
+msgstr ""
+
+msgid "Elapsed time"
+msgstr ""
+
msgid "Elasticsearch"
msgstr ""
@@ -2738,6 +2834,9 @@ msgstr ""
msgid "Enable SAML authentication for this group"
msgstr ""
+msgid "Enable SSL verification"
+msgstr ""
+
msgid "Enable Sentry for error reporting and logging."
msgstr ""
@@ -2774,6 +2873,9 @@ msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Ends"
+msgstr ""
+
msgid "Ends at (UTC)"
msgstr ""
@@ -3047,6 +3149,18 @@ msgstr ""
msgid "Faster as it re-uses the project workspace (falling back to clone if it doesn't exist)"
msgstr ""
+msgid "Favicon"
+msgstr ""
+
+msgid "Favicon will be removed. Are you sure?"
+msgstr ""
+
+msgid "Favicon:"
+msgstr ""
+
+msgid "Features"
+msgstr ""
+
msgid "Feb"
msgstr ""
@@ -3083,12 +3197,18 @@ msgstr ""
msgid "Find the newly extracted Takeout/Google Code Project Hosting/GoogleCodeProjectHosting.json file."
msgstr ""
+msgid "Fingerprint"
+msgstr ""
+
msgid "Fingerprints"
msgstr ""
msgid "Finished"
msgstr ""
+msgid "Finished at"
+msgstr ""
+
msgid "FirstPushedBy|First"
msgstr ""
@@ -3142,6 +3262,9 @@ msgstr ""
msgid "Forking in progress"
msgstr ""
+msgid "Forks"
+msgstr ""
+
msgid "Format"
msgstr ""
@@ -3463,6 +3586,9 @@ msgstr ""
msgid "Git"
msgstr ""
+msgid "Git LFS status:"
+msgstr ""
+
msgid "Git repository URL"
msgstr ""
@@ -3481,9 +3607,18 @@ msgstr ""
msgid "GitHub import"
msgstr ""
+msgid "GitLab"
+msgstr ""
+
+msgid "GitLab API"
+msgstr ""
+
msgid "GitLab CI Linter has been moved"
msgstr ""
+msgid "GitLab Flavored Markdown"
+msgstr ""
+
msgid "GitLab Geo"
msgstr ""
@@ -3493,15 +3628,30 @@ msgstr ""
msgid "GitLab Import"
msgstr ""
+msgid "GitLab Pages"
+msgstr ""
+
+msgid "GitLab Pages: status %{on_or_off}"
+msgstr ""
+
+msgid "GitLab Shell"
+msgstr ""
+
msgid "GitLab User"
msgstr ""
+msgid "GitLab Workhorse"
+msgstr ""
+
msgid "GitLab project export"
msgstr ""
msgid "GitLab single sign on URL"
msgstr ""
+msgid "GitLab uses %{link} library for async job processing"
+msgstr ""
+
msgid "GitLab will run a background job that will produce pseudonymized CSVs of the GitLab database that will be uploaded to your configured object storage directory."
msgstr ""
@@ -3514,6 +3664,12 @@ msgstr ""
msgid "Gitaly Servers"
msgstr ""
+msgid "Gitaly relative path:"
+msgstr ""
+
+msgid "Gitaly storage name:"
+msgstr ""
+
msgid "Gitaly|Address"
msgstr ""
@@ -3523,6 +3679,9 @@ msgstr ""
msgid "Gitea Import"
msgstr ""
+msgid "Global"
+msgstr ""
+
msgid "Go Back"
msgstr ""
@@ -3553,6 +3712,12 @@ msgstr ""
msgid "Graph"
msgstr ""
+msgid "Gravatar"
+msgstr ""
+
+msgid "Gravatar: status %{on_or_off}"
+msgstr ""
+
msgid "Group"
msgstr ""
@@ -3649,6 +3814,9 @@ msgstr ""
msgid "Groups can also be nested by creating %{subgroup_docs_link_start}subgroups%{subgroup_docs_link_end}."
msgstr ""
+msgid "Groups:"
+msgstr ""
+
msgid "GroupsDropdown|Frequently visited"
msgstr ""
@@ -3709,9 +3877,18 @@ msgstr ""
msgid "GroupsTree|Sorry, no groups or projects matched your search"
msgstr ""
+msgid "Guidelines parsed with %{link_to_help_markdown}."
+msgstr ""
+
msgid "Have your users email"
msgstr ""
+msgid "Header logo"
+msgstr ""
+
+msgid "Header logo will be removed. Are you sure?"
+msgstr ""
+
msgid "Header message"
msgstr ""
@@ -3807,6 +3984,9 @@ msgstr ""
msgid "IDE|Review"
msgstr ""
+msgid "IP Address"
+msgstr ""
+
msgid "Identifier"
msgstr ""
@@ -3816,6 +3996,9 @@ msgstr ""
msgid "Identity provider single sign on URL"
msgstr ""
+msgid "If '[%{concurrency} of %{concurrency} busy]' is shown, restart GitLab with 'sudo service gitlab reload'."
+msgstr ""
+
msgid "If disabled, a diverged local branch will not be automatically updated with commits from its remote counterpart, to prevent local data loss. If the default branch (%{default_branch}) has diverged and cannot be updated, mirroring will fail. Other diverged branches are silently ignored."
msgstr ""
@@ -3828,12 +4011,18 @@ msgstr ""
msgid "If enabled, access to projects will be validated on an external service using their classification label."
msgstr ""
+msgid "If more than one sidekiq process is listed, stop GitLab, kill the remaining sidekiq processes (sudo pkill -u %{gitlab_config_user} -f sidekiq) and restart GitLab."
+msgstr ""
+
msgid "If using GitHub, you’ll see pipeline statuses on GitHub for your commits and pull requests. %{more_info_link}"
msgstr ""
msgid "If you already have files you can push them using the %{link_to_cli} below."
msgstr ""
+msgid "If you want Runners to build only specific projects, enable them in the table below. Keep in mind that this is a one way transition."
+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 ""
@@ -3846,6 +4035,12 @@ msgstr ""
msgid "ImageDiffViewer|Swipe"
msgstr ""
+msgid "Images with incorrect dimensions are not resized automatically, and may result in unexpected behavior."
+msgstr ""
+
+msgid "Impersonation Tokens"
+msgstr ""
+
msgid "Import"
msgstr ""
@@ -3912,6 +4107,9 @@ msgstr ""
msgid "In the next step, you'll be able to select the projects you want to import."
msgstr ""
+msgid "Inactive users"
+msgstr ""
+
msgid "Include a Terms of Service agreement and Privacy Policy that all users must accept."
msgstr ""
@@ -3959,6 +4157,9 @@ msgstr ""
msgid "Interested parties can even contribute by pushing commits if they want to."
msgstr ""
+msgid "Internal"
+msgstr ""
+
msgid "Internal - The group and any internal projects can be viewed by any logged in user."
msgstr ""
@@ -4010,6 +4211,12 @@ msgstr ""
msgid "Jobs"
msgstr ""
+msgid "Joined %{created_time}"
+msgstr ""
+
+msgid "Joined %{user_created_time}"
+msgstr ""
+
msgid "Jul"
msgstr ""
@@ -4022,6 +4229,9 @@ msgstr ""
msgid "June"
msgstr ""
+msgid "Keys"
+msgstr ""
+
msgid "Koding"
msgstr ""
@@ -4052,6 +4262,12 @@ msgstr ""
msgid "Kubernetes service integration has been deprecated. %{deprecated_message_content} your Kubernetes clusters using the new Kubernetes Clusters page"
msgstr ""
+msgid "LDAP"
+msgstr ""
+
+msgid "LDAP: status %{on_or_off}"
+msgstr ""
+
msgid "LFS"
msgstr ""
@@ -4111,6 +4327,15 @@ msgstr ""
msgid "Last commit"
msgstr ""
+msgid "Last contact"
+msgstr ""
+
+msgid "Last edit"
+msgstr ""
+
+msgid "Last edit %{time}"
+msgstr ""
+
msgid "Last edited %{date}"
msgstr ""
@@ -4132,6 +4357,15 @@ msgstr ""
msgid "Latest changes"
msgstr ""
+msgid "Latest groups"
+msgstr ""
+
+msgid "Latest projects"
+msgstr ""
+
+msgid "Latest users"
+msgstr ""
+
msgid "Learn more"
msgstr ""
@@ -4275,9 +4509,15 @@ msgstr ""
msgid "Locks give the ability to lock specific file or folder."
msgstr ""
+msgid "Logo will be removed. Are you sure?"
+msgstr ""
+
msgid "Logs"
msgstr ""
+msgid "MEM"
+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 ""
@@ -4344,6 +4584,15 @@ msgstr ""
msgid "Markdown enabled"
msgstr ""
+msgid "Maximum file size is 1MB. Image size must be 32x32px. Allowed image formats are %{favicon_extension_whitelist}."
+msgstr ""
+
+msgid "Maximum file size is 1MB. Pages are optimized for a 28px tall header logo"
+msgstr ""
+
+msgid "Maximum file size is 1MB. Pages are optimized for a 640x360 px logo."
+msgstr ""
+
msgid "Maximum git storage failures"
msgstr ""
@@ -4359,6 +4608,9 @@ msgstr ""
msgid "Members will be forwarded here when signing in to your group. Get this from your identity provider, where it can also be called \"SSO Service Location\", \"SAML Token Issuance Endpoint\", or \"SAML 2.0/W-Federation URL\"."
msgstr ""
+msgid "Memory Usage"
+msgstr ""
+
msgid "Merge Request"
msgstr ""
@@ -4380,6 +4632,9 @@ msgstr ""
msgid "Merge request approvals"
msgstr ""
+msgid "Merge request events"
+msgstr ""
+
msgid "Merge requests"
msgstr ""
@@ -4410,6 +4665,9 @@ msgstr ""
msgid "Merged"
msgstr ""
+msgid "Message"
+msgstr ""
+
msgid "Messages"
msgstr ""
@@ -4596,6 +4854,9 @@ msgstr ""
msgid "Monitoring"
msgstr ""
+msgid "Month %{month}"
+msgstr ""
+
msgid "Months"
msgstr ""
@@ -4638,6 +4899,18 @@ msgstr ""
msgid "Name:"
msgstr ""
+msgid "Namespace"
+msgstr ""
+
+msgid "Namespace:"
+msgstr ""
+
+msgid "Namespaces"
+msgstr ""
+
+msgid "Navigation bar:"
+msgstr ""
+
msgid "Nav|Help"
msgstr ""
@@ -4662,6 +4935,9 @@ msgstr ""
msgid "New Application"
msgstr ""
+msgid "New Deploy Key"
+msgstr ""
+
msgid "New Group"
msgstr ""
@@ -4679,6 +4955,9 @@ msgstr ""
msgid "New Pipeline Schedule"
msgstr ""
+msgid "New Project"
+msgstr ""
+
msgid "New Snippet"
msgstr ""
@@ -4691,6 +4970,9 @@ msgstr ""
msgid "New branch unavailable"
msgstr ""
+msgid "New deploy key"
+msgstr ""
+
msgid "New directory"
msgstr ""
@@ -4721,6 +5003,15 @@ msgstr ""
msgid "New project"
msgstr ""
+msgid "New project page"
+msgstr ""
+
+msgid "New project pages:"
+msgstr ""
+
+msgid "New public deploy key"
+msgstr ""
+
msgid "New schedule"
msgstr ""
@@ -4733,6 +5024,9 @@ msgstr ""
msgid "New tag"
msgstr ""
+msgid "New user"
+msgstr ""
+
msgid "New..."
msgstr ""
@@ -4793,6 +5087,12 @@ msgstr ""
msgid "No prioritised labels with such name or description"
msgstr ""
+msgid "No profiles found"
+msgstr ""
+
+msgid "No projects found"
+msgstr ""
+
msgid "No public groups"
msgstr ""
@@ -4802,6 +5102,9 @@ msgstr ""
msgid "No repository"
msgstr ""
+msgid "No runners found"
+msgstr ""
+
msgid "No schedules"
msgstr ""
@@ -4853,6 +5156,9 @@ msgstr ""
msgid "Note: Consider asking your GitLab administrator to configure %{github_integration_link}, which will allow login via GitHub and allow importing repositories without generating a Personal Access Token."
msgstr ""
+msgid "Notes"
+msgstr ""
+
msgid "Notes|Are you sure you want to cancel creating this comment?"
msgstr ""
@@ -4940,6 +5246,12 @@ msgstr ""
msgid "OfSearchInADropdown|Filter"
msgstr ""
+msgid "OmniAuth"
+msgstr ""
+
+msgid "OmniAuth: status %{on_or_off}"
+msgstr ""
+
msgid "Once imported, repositories can be mirrored over SSH. Read more %{ssh_link}"
msgstr ""
@@ -5032,9 +5344,15 @@ msgstr ""
msgid "Overwrite diverged branches"
msgstr ""
+msgid "Owned by:"
+msgstr ""
+
msgid "Owner"
msgstr ""
+msgid "PID"
+msgstr ""
+
msgid "Pages"
msgstr ""
@@ -5053,6 +5371,9 @@ msgstr ""
msgid "Part of merge request changes"
msgstr ""
+msgid "Pass the header X-Profile-Token: %{profile_token} to profile the request"
+msgstr ""
+
msgid "Password"
msgstr ""
@@ -5275,6 +5596,9 @@ msgstr ""
msgid "Please note that this application is not provided by GitLab and you should verify its authenticity before allowing access."
msgstr ""
+msgid "Please provide your username or email address."
+msgstr ""
+
msgid "Please select at least one filter to see results"
msgstr ""
@@ -5299,9 +5623,15 @@ msgstr ""
msgid "Preview"
msgstr ""
+msgid "Preview last save:"
+msgstr ""
+
msgid "Primary"
msgstr ""
+msgid "Primary Action"
+msgstr ""
+
msgid "Prioritize"
msgstr ""
@@ -5314,6 +5644,9 @@ msgstr ""
msgid "Prioritized label"
msgstr ""
+msgid "Private"
+msgstr ""
+
msgid "Private - Project access must be granted explicitly to each user."
msgstr ""
@@ -5467,9 +5800,15 @@ msgstr ""
msgid "Project export started. A download link will be sent by email."
msgstr ""
+msgid "Project info:"
+msgstr ""
+
msgid "Project name"
msgstr ""
+msgid "Project: %{name}"
+msgstr ""
+
msgid "ProjectActivityRSS|Subscribe"
msgstr ""
@@ -5530,6 +5869,12 @@ msgstr ""
msgid "Projects shared with %{group_name}"
msgstr ""
+msgid "Projects with write access"
+msgstr ""
+
+msgid "Projects:"
+msgstr ""
+
msgid "ProjectsDropdown|Frequently visited"
msgstr ""
@@ -5692,12 +6037,18 @@ msgstr ""
msgid "Pseudonymizer data collection"
msgstr ""
+msgid "Public"
+msgstr ""
+
msgid "Public - The group and any public projects can be viewed without any authentication."
msgstr ""
msgid "Public - The project can be accessed without any authentication."
msgstr ""
+msgid "Public deploy keys"
+msgstr ""
+
msgid "Public pipelines"
msgstr ""
@@ -5734,6 +6085,9 @@ msgstr ""
msgid "Quick actions can be used in the issues description and comment boxes."
msgstr ""
+msgid "Rails"
+msgstr ""
+
msgid "Read more"
msgstr ""
@@ -5746,6 +6100,15 @@ msgstr ""
msgid "Real-time features"
msgstr ""
+msgid "Recaptcha verified?"
+msgstr ""
+
+msgid "Recent Deliveries"
+msgstr ""
+
+msgid "Recent jobs served by this Runner"
+msgstr ""
+
msgid "Reference:"
msgstr ""
@@ -5769,6 +6132,9 @@ msgstr ""
msgid "Register and see your runners for this project."
msgstr ""
+msgid "Registration month"
+msgstr ""
+
msgid "Registry"
msgstr ""
@@ -5805,12 +6171,33 @@ msgstr ""
msgid "Remove avatar"
msgstr ""
+msgid "Remove favicon"
+msgstr ""
+
+msgid "Remove header logo"
+msgstr ""
+
+msgid "Remove log"
+msgstr ""
+
+msgid "Remove logo"
+msgstr ""
+
msgid "Remove priority"
msgstr ""
msgid "Remove project"
msgstr ""
+msgid "Remove report"
+msgstr ""
+
+msgid "Remove user"
+msgstr ""
+
+msgid "Remove user & report"
+msgstr ""
+
msgid "Rename"
msgstr ""
@@ -5823,12 +6210,21 @@ msgstr ""
msgid "Repair authentication"
msgstr ""
+msgid "Reply by email"
+msgstr ""
+
+msgid "Reply by email: status %{on_or_off}"
+msgstr ""
+
msgid "Reply to this email directly or %{view_it_on_gitlab}."
msgstr ""
msgid "Repo by URL"
msgstr ""
+msgid "Reported by"
+msgstr ""
+
msgid "Reports|%{failedString} and %{resolvedString}"
msgstr ""
@@ -5865,6 +6261,9 @@ msgstr ""
msgid "Repository URL"
msgstr ""
+msgid "Repository check"
+msgstr ""
+
msgid "Repository has no locks."
msgstr ""
@@ -5877,18 +6276,30 @@ msgstr ""
msgid "Repository storage"
msgstr ""
+msgid "Repository update events"
+msgstr ""
+
msgid "RepositorySettingsAccessLevel|Select"
msgstr ""
msgid "Request Access"
msgstr ""
+msgid "Request details"
+msgstr ""
+
+msgid "Request time"
+msgstr ""
+
msgid "Requests Profiles"
msgstr ""
msgid "Require all users to accept Terms of Service and Privacy Policy when they access GitLab."
msgstr ""
+msgid "Resend Request"
+msgstr ""
+
msgid "Reset git storage health information"
msgstr ""
@@ -5910,6 +6321,9 @@ msgstr ""
msgid "Response metrics (Custom)"
msgstr ""
+msgid "Restrict projects for this Runner"
+msgstr ""
+
msgid "Resume"
msgstr ""
@@ -5951,12 +6365,36 @@ msgstr ""
msgid "Roadmap"
msgstr ""
+msgid "Ruby"
+msgstr ""
+
msgid "Run CI/CD pipelines for external repositories"
msgstr ""
+msgid "Runner #%{id}"
+msgstr ""
+
+msgid "Runner cannot be assigned to other projects"
+msgstr ""
+
+msgid "Runner description or token"
+msgstr ""
+
+msgid "Runner runs jobs from all unassigned projects"
+msgstr ""
+
+msgid "Runner runs jobs from all unassigned projects in its group"
+msgstr ""
+
+msgid "Runner runs jobs from assigned projects"
+msgstr ""
+
msgid "Runner token"
msgstr ""
+msgid "Runner will not receive any new jobs"
+msgstr ""
+
msgid "Runners"
msgstr ""
@@ -5966,6 +6404,9 @@ msgstr ""
msgid "Runners can be placed on separate users, servers, and even on your local machine."
msgstr ""
+msgid "Runners with last contact more than a minute ago: %{active_runners_counter}"
+msgstr ""
+
msgid "Running"
msgstr ""
@@ -5996,6 +6437,18 @@ msgstr ""
msgid "SSL Verification"
msgstr ""
+msgid "SSL Verification: %{hook_enabled}"
+msgstr ""
+
+msgid "SSL verification"
+msgstr ""
+
+msgid "START"
+msgstr ""
+
+msgid "STATE"
+msgstr ""
+
msgid "Save"
msgstr ""
@@ -6029,6 +6482,9 @@ msgstr ""
msgid "Scoped issue boards"
msgstr ""
+msgid "Scroll down"
+msgstr ""
+
msgid "Scroll down to Google Code Project Hosting and enable the switch on the right."
msgstr ""
@@ -6050,6 +6506,9 @@ msgstr ""
msgid "Search files"
msgstr ""
+msgid "Search for Namespace"
+msgstr ""
+
msgid "Search for projects, issues, etc."
msgstr ""
@@ -6098,6 +6557,9 @@ msgstr ""
msgid "Seconds to wait for a storage access attempt"
msgstr ""
+msgid "Secret Token"
+msgstr ""
+
msgid "Secret:"
msgstr ""
@@ -6184,6 +6646,9 @@ msgstr ""
msgid "Server version"
msgstr ""
+msgid "Service"
+msgstr ""
+
msgid "Service Desk"
msgstr ""
@@ -6193,6 +6658,12 @@ msgstr ""
msgid "Service URL"
msgstr ""
+msgid "Service template allows you to set default values for project services"
+msgstr ""
+
+msgid "Service templates"
+msgstr ""
+
msgid "Session expiration, projects limit and attachment size."
msgstr ""
@@ -6238,9 +6709,15 @@ msgstr ""
msgid "Share the %{sso_label} with members so they can sign in to your group through your identity provider"
msgstr ""
+msgid "Shared"
+msgstr ""
+
msgid "Shared Runners"
msgstr ""
+msgid "Shared Runners: status %{on_or_off}"
+msgstr ""
+
msgid "SharedRunnersMinutesSettings|By resetting the pipeline minutes for this namespace, the currently used minutes will be set to zero."
msgstr ""
@@ -6294,21 +6771,39 @@ msgstr ""
msgid "Sidebar|Weight"
msgstr ""
+msgid "Sidekiq running processes"
+msgstr ""
+
msgid "Sign in"
msgstr ""
msgid "Sign in / Register"
msgstr ""
+msgid "Sign in preview"
+msgstr ""
+
msgid "Sign in to %{group_name}"
msgstr ""
msgid "Sign in with Single Sign-On"
msgstr ""
+msgid "Sign in/Sign up pages:"
+msgstr ""
+
msgid "Sign out"
msgstr ""
+msgid "Sign up"
+msgstr ""
+
+msgid "Sign up: status %{on_or_off}"
+msgstr ""
+
+msgid "Sign-in page"
+msgstr ""
+
msgid "Sign-in restrictions"
msgstr ""
@@ -6480,6 +6975,9 @@ msgstr ""
msgid "Source (branch or tag)"
msgstr ""
+msgid "Source IP"
+msgstr ""
+
msgid "Source code"
msgstr ""
@@ -6492,6 +6990,9 @@ msgstr ""
msgid "Spam and Anti-bot Protection"
msgstr ""
+msgid "Specific"
+msgstr ""
+
msgid "Specific Runners"
msgstr ""
@@ -6543,12 +7044,18 @@ msgstr ""
msgid "Started"
msgstr ""
+msgid "Starts"
+msgstr ""
+
msgid "Starts at (UTC)"
msgstr ""
msgid "State your message to activate"
msgstr ""
+msgid "Statistics"
+msgstr ""
+
msgid "Status"
msgstr ""
@@ -6564,18 +7071,27 @@ msgstr ""
msgid "Storage"
msgstr ""
+msgid "Storage used:"
+msgstr ""
+
msgid "Storage:"
msgstr ""
msgid "Subgroups"
msgstr ""
+msgid "Submit as ham"
+msgstr ""
+
msgid "Submit as spam"
msgstr ""
msgid "Submit search"
msgstr ""
+msgid "Submitted as ham"
+msgstr ""
+
msgid "Subscribe"
msgstr ""
@@ -6600,6 +7116,15 @@ msgstr ""
msgid "System header and footer:"
msgstr ""
+msgid "System hook will be triggered on set of events like creating project or adding ssh key. But you can also enable extra triggers like Push events."
+msgstr ""
+
+msgid "System hooks"
+msgstr ""
+
+msgid "System hooks (%{hooks_count})"
+msgstr ""
+
msgid "System metrics (Custom)"
msgstr ""
@@ -6608,6 +7133,9 @@ msgid_plural "Tags (%{tag_count})"
msgstr[0] ""
msgstr[1] ""
+msgid "Tag push events"
+msgstr ""
+
msgid "Tags"
msgstr ""
@@ -6725,6 +7253,12 @@ msgstr ""
msgid "The character highlighter helps you keep the subject line to %{titleLength} characters and wrap the body at %{bodyLength} so they are readable in git."
msgstr ""
+msgid "The check failed. See %{link_to_repocheck} for error messages."
+msgstr ""
+
+msgid "The check passed."
+msgstr ""
+
msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request."
msgstr ""
@@ -6830,6 +7364,12 @@ 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 Spam Logs"
+msgstr ""
+
+msgid "There are no abuse reports!"
+msgstr ""
+
msgid "There are no issues to show"
msgstr ""
@@ -6839,6 +7379,9 @@ msgstr ""
msgid "There are no merge requests to show"
msgstr ""
+msgid "There are no running sidekiq processes. Please restart GitLab"
+msgstr ""
+
msgid "There are problems accessing Git storage: "
msgstr ""
@@ -6875,6 +7418,24 @@ msgstr ""
msgid "This GitLab instance does not provide any shared Runners yet. Instance administrators can register shared Runners in the admin area."
msgstr ""
+msgid "This Runner will process jobs from ALL UNASSIGNED projects"
+msgstr ""
+
+msgid "This Runner will process jobs only from ASSIGNED projects"
+msgstr ""
+
+msgid "This URL will be triggered for each branch updated to the repository"
+msgstr ""
+
+msgid "This URL will be triggered when a merge request is created/updated/merged"
+msgstr ""
+
+msgid "This URL will be triggered when a new tag is pushed to the repository"
+msgstr ""
+
+msgid "This URL will be triggered when repository is updated"
+msgstr ""
+
msgid "This application was created by %{link_to_owner}."
msgstr ""
@@ -6893,6 +7454,9 @@ msgstr ""
msgid "This directory"
msgstr ""
+msgid "This field is required."
+msgstr ""
+
msgid "This group"
msgstr ""
@@ -6974,6 +7538,15 @@ msgstr ""
msgid "This repository"
msgstr ""
+msgid "This repository has never been checked."
+msgstr ""
+
+msgid "This repository was last checked %{time}."
+msgstr ""
+
+msgid "This runner will process jobs from all projects in its group and subgroups"
+msgstr ""
+
msgid "This source diff could not be displayed because it is too large."
msgstr ""
@@ -7209,6 +7782,9 @@ msgstr ""
msgid "To only use CI/CD features for an external repository, choose CI/CD for external repo."
msgstr ""
+msgid "To prevent performance issues admin logs output the last 2000 lines"
+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 ""
@@ -7275,15 +7851,27 @@ msgstr ""
msgid "Track time with quick actions"
msgstr ""
+msgid "Transfer"
+msgstr ""
+
+msgid "Transfer project"
+msgstr ""
+
msgid "Trending"
msgstr ""
+msgid "Trigger"
+msgstr ""
+
msgid "Trigger pipelines for mirror updates"
msgstr ""
msgid "Trigger pipelines when branches or tags are updated from the upstream repository. Depending on the activity of the upstream repository, this may greatly increase the load on your CI runners. Only enable this if you know they can handle the load."
msgstr ""
+msgid "Trigger repository check"
+msgstr ""
+
msgid "Trigger this manual action"
msgstr ""
@@ -7299,6 +7887,27 @@ msgstr ""
msgid "Twitter"
msgstr ""
+msgid "Type"
+msgstr ""
+
+msgid "URL"
+msgstr ""
+
+msgid "USER"
+msgstr ""
+
+msgid "USER %{user_name} WILL BE REMOVED! Are you sure?"
+msgstr ""
+
+msgid "USER WILL BE BLOCKED! Are you sure?"
+msgstr ""
+
+msgid "Unable to collect CPU info"
+msgstr ""
+
+msgid "Unable to collect memory info"
+msgstr ""
+
msgid "Unable to load the diff. %{button_try_again}"
msgstr ""
@@ -7356,6 +7965,9 @@ msgstr ""
msgid "Update"
msgstr ""
+msgid "Update broadcast message"
+msgstr ""
+
msgid "Update now"
msgstr ""
@@ -7395,6 +8007,9 @@ msgstr ""
msgid "UploadLink|click to upload"
msgstr ""
+msgid "Uptime"
+msgstr ""
+
msgid "Upvotes"
msgstr ""
@@ -7419,24 +8034,42 @@ msgstr ""
msgid "Use the following registration token during setup:"
msgstr ""
+msgid "Use this token to validate received payloads"
+msgstr ""
+
msgid "Use your global notification setting"
msgstr ""
msgid "Used by members to sign in to your group in GitLab"
msgstr ""
+msgid "User"
+msgstr ""
+
msgid "User Settings"
msgstr ""
msgid "User and IP Rate Limits"
msgstr ""
+msgid "User cohorts are only shown when the %{link_to_usage_ping} is enabled. To enable it and see user cohorts, visit %{link_to_application_settings}."
+msgstr ""
+
+msgid "User cohorts are shown because the usage ping is enabled. The data sent with this is shown below. To disable this, visit %{link_to_application_settings}."
+msgstr ""
+
+msgid "User cohorts are shown for the last %{months} months. Only users with activity are counted in the cohort total; inactive users are counted separately."
+msgstr ""
+
msgid "User map"
msgstr ""
msgid "Users"
msgstr ""
+msgid "Users:"
+msgstr ""
+
msgid "User|Current status"
msgstr ""
@@ -7461,6 +8094,12 @@ msgstr ""
msgid "Verified"
msgstr ""
+msgid "Version"
+msgstr ""
+
+msgid "View details"
+msgstr ""
+
msgid "View epics list"
msgstr ""
@@ -7548,6 +8187,9 @@ msgstr ""
msgid "When a runner is locked, it cannot be assigned to other projects"
msgstr ""
+msgid "When an event in GitLab triggers a webhook, you can use the request details to figure out if something went wrong."
+msgstr ""
+
msgid "When enabled, users cannot use GitLab until the terms have been accepted."
msgstr ""
@@ -7743,6 +8385,9 @@ msgstr ""
msgid "You can easily install a Runner on a Kubernetes cluster. %{link_to_help_page}"
msgstr ""
+msgid "You can modify the look and feel of GitLab here"
+msgstr ""
+
msgid "You can move around the graph by using the arrow keys."
msgstr ""
@@ -7752,9 +8397,15 @@ msgstr ""
msgid "You can only edit files when you are on a branch"
msgstr ""
+msgid "You can reset runners registration token by pressing a button below."
+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't make this a shared Runner."
+msgstr ""
+
msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead."
msgstr ""
@@ -7770,6 +8421,9 @@ msgstr ""
msgid "You don't have any authorized applications"
msgstr ""
+msgid "You don't have any webhooks deliveries"
+msgstr ""
+
msgid "You have no permissions"
msgstr ""
@@ -7866,6 +8520,9 @@ msgstr ""
msgid "Your groups"
msgstr ""
+msgid "Your message here"
+msgstr ""
+
msgid "Your name"
msgstr ""
@@ -7875,6 +8532,12 @@ msgstr ""
msgid "a deleted user"
msgstr ""
+msgid "access:"
+msgstr ""
+
+msgid "added %{deploy_key_created_time}"
+msgstr ""
+
msgid "ago"
msgstr ""
@@ -7891,6 +8554,15 @@ msgid_plural "and %d fixed vulnerabilities"
msgstr[0] ""
msgstr[1] ""
+msgid "application settings"
+msgstr ""
+
+msgid "archived"
+msgstr ""
+
+msgid "archived:"
+msgstr ""
+
msgid "assign yourself"
msgstr ""
@@ -8158,6 +8830,9 @@ msgstr ""
msgid "disabled"
msgstr ""
+msgid "does not exist"
+msgstr ""
+
msgid "done"
msgstr ""
@@ -8170,6 +8845,12 @@ msgstr ""
msgid "for this project"
msgstr ""
+msgid "group"
+msgstr ""
+
+msgid "group members"
+msgstr ""
+
msgid "here"
msgstr ""
@@ -8191,12 +8872,18 @@ msgstr ""
msgid "is not a valid X509 certificate."
msgstr ""
+msgid "last commit:"
+msgstr ""
+
msgid "latest version"
msgstr ""
msgid "license management"
msgstr ""
+msgid "locked"
+msgstr ""
+
msgid "locked by %{path_lock_user_name} %{created_at}"
msgstr ""
@@ -8434,12 +9121,21 @@ msgstr ""
msgid "mrWidget|to be merged automatically when the pipeline succeeds"
msgstr ""
+msgid "n/a"
+msgstr ""
+
msgid "new merge request"
msgstr ""
msgid "notification emails"
msgstr ""
+msgid "off"
+msgstr ""
+
+msgid "on"
+msgstr ""
+
msgid "or"
msgstr ""
@@ -8456,12 +9152,21 @@ msgstr[1] ""
msgid "password"
msgstr ""
+msgid "paused"
+msgstr ""
+
msgid "personal access token"
msgstr ""
msgid "private key does not match certificate."
msgstr ""
+msgid "project is read-only"
+msgstr ""
+
+msgid "project members"
+msgstr ""
+
msgid "remaining"
msgstr ""
@@ -8471,9 +9176,18 @@ msgstr ""
msgid "remove weight"
msgstr ""
+msgid "repository:"
+msgstr ""
+
+msgid "shared"
+msgstr ""
+
msgid "source"
msgstr ""
+msgid "specific"
+msgstr ""
+
msgid "spendCommand|%{slash_command} will update the sum of the time spent."
msgstr ""
@@ -8486,6 +9200,9 @@ msgstr ""
msgid "to help your contributors communicate effectively!"
msgstr ""
+msgid "usage ping"
+msgstr ""
+
msgid "username"
msgstr ""