Commit 56606907 authored by Martin Wortschack's avatar Martin Wortschack Committed by Rémy Coutable

Externalize strings in projects controllers

- concerns
- dashboard
- groups
- import
parent 98824f3e
...@@ -36,7 +36,7 @@ module AuthenticatesWithTwoFactor ...@@ -36,7 +36,7 @@ module AuthenticatesWithTwoFactor
end end
def locked_user_redirect(user) def locked_user_redirect(user)
flash.now[:alert] = 'Invalid Login or password' flash.now[:alert] = _('Invalid Login or password')
render 'devise/sessions/new' render 'devise/sessions/new'
end end
...@@ -66,7 +66,7 @@ module AuthenticatesWithTwoFactor ...@@ -66,7 +66,7 @@ module AuthenticatesWithTwoFactor
else else
user.increment_failed_attempts! user.increment_failed_attempts!
Gitlab::AppLogger.info("Failed Login: user=#{user.username} ip=#{request.remote_ip} method=OTP") Gitlab::AppLogger.info("Failed Login: user=#{user.username} ip=#{request.remote_ip} method=OTP")
flash.now[:alert] = 'Invalid two-factor code.' flash.now[:alert] = _('Invalid two-factor code.')
prompt_for_two_factor(user) prompt_for_two_factor(user)
end end
end end
...@@ -83,7 +83,7 @@ module AuthenticatesWithTwoFactor ...@@ -83,7 +83,7 @@ module AuthenticatesWithTwoFactor
else else
user.increment_failed_attempts! user.increment_failed_attempts!
Gitlab::AppLogger.info("Failed Login: user=#{user.username} ip=#{request.remote_ip} method=U2F") Gitlab::AppLogger.info("Failed Login: user=#{user.username} ip=#{request.remote_ip} method=U2F")
flash.now[:alert] = 'Authentication via U2F device failed.' flash.now[:alert] = _('Authentication via U2F device failed.')
prompt_for_two_factor(user) prompt_for_two_factor(user)
end end
end end
......
...@@ -31,7 +31,7 @@ module CreatesCommit ...@@ -31,7 +31,7 @@ module CreatesCommit
respond_to do |format| respond_to do |format|
format.html { redirect_to success_path } format.html { redirect_to success_path }
format.json { render json: { message: "success", filePath: success_path } } format.json { render json: { message: _("success"), filePath: success_path } }
end end
else else
flash[:alert] = result[:message] flash[:alert] = result[:message]
...@@ -45,7 +45,7 @@ module CreatesCommit ...@@ -45,7 +45,7 @@ module CreatesCommit
redirect_to failure_path redirect_to failure_path
end end
end end
format.json { render json: { message: "failed", filePath: failure_path } } format.json { render json: { message: _("failed"), filePath: failure_path } }
end end
end end
end end
...@@ -60,15 +60,22 @@ module CreatesCommit ...@@ -60,15 +60,22 @@ module CreatesCommit
private private
def update_flash_notice(success_notice) def update_flash_notice(success_notice)
flash[:notice] = success_notice || "Your changes have been successfully committed." flash[:notice] = success_notice || _("Your changes have been successfully committed.")
if create_merge_request? if create_merge_request?
if merge_request_exists? flash[:notice] =
flash[:notice] = nil if merge_request_exists?
else nil
target = different_project? ? "project" : "branch" else
flash[:notice] = flash[:notice] + " You can now submit a merge request to get this change into the original #{target}." mr_message =
end if different_project?
_("You can now submit a merge request to get this change into the original project.")
else
_("You can now submit a merge request to get this change into the original branch.")
end
flash[:notice] += " " + mr_message
end
end end
end end
......
...@@ -26,7 +26,7 @@ module LfsRequest ...@@ -26,7 +26,7 @@ module LfsRequest
render( render(
json: { json: {
message: 'Git LFS is not enabled on this GitLab server, contact your admin.', message: _('Git LFS is not enabled on this GitLab server, contact your admin.'),
documentation_url: help_url documentation_url: help_url
}, },
status: :not_implemented status: :not_implemented
...@@ -51,7 +51,7 @@ module LfsRequest ...@@ -51,7 +51,7 @@ module LfsRequest
def render_lfs_forbidden def render_lfs_forbidden
render( render(
json: { json: {
message: 'Access forbidden. Check your access level.', message: _('Access forbidden. Check your access level.'),
documentation_url: help_url documentation_url: help_url
}, },
content_type: CONTENT_TYPE, content_type: CONTENT_TYPE,
...@@ -62,7 +62,7 @@ module LfsRequest ...@@ -62,7 +62,7 @@ module LfsRequest
def render_lfs_not_found def render_lfs_not_found
render( render(
json: { json: {
message: 'Not found.', message: _('Not found.'),
documentation_url: help_url documentation_url: help_url
}, },
content_type: CONTENT_TYPE, content_type: CONTENT_TYPE,
......
...@@ -9,7 +9,7 @@ module MembershipActions ...@@ -9,7 +9,7 @@ module MembershipActions
result = Members::CreateService.new(current_user, create_params).execute(membershipable) result = Members::CreateService.new(current_user, create_params).execute(membershipable)
if result[:status] == :success if result[:status] == :success
redirect_to members_page_url, notice: 'Users were successfully added.' redirect_to members_page_url, notice: _('Users were successfully added.')
else else
redirect_to members_page_url, alert: result[:message] redirect_to members_page_url, alert: result[:message]
end end
...@@ -35,9 +35,16 @@ module MembershipActions ...@@ -35,9 +35,16 @@ module MembershipActions
respond_to do |format| respond_to do |format|
format.html do format.html do
source = source_type == 'group' ? 'group and any subresources' : source_type message =
begin
case membershipable
when Namespace
_("User was successfully removed from group and any subresources.")
else
_("User was successfully removed from project.")
end
end
message = "User was successfully removed from #{source}."
redirect_to members_page_url, notice: message redirect_to members_page_url, notice: message
end end
...@@ -49,7 +56,7 @@ module MembershipActions ...@@ -49,7 +56,7 @@ module MembershipActions
membershipable.request_access(current_user) membershipable.request_access(current_user)
redirect_to polymorphic_path(membershipable), redirect_to polymorphic_path(membershipable),
notice: 'Your request for access has been queued for review.' notice: _('Your request for access has been queued for review.')
end end
def approve_access_request def approve_access_request
...@@ -68,9 +75,9 @@ module MembershipActions ...@@ -68,9 +75,9 @@ module MembershipActions
notice = notice =
if member.request? if member.request?
"Your access request to the #{source_type} has been withdrawn." _("Your access request to the %{source_type} has been withdrawn.") % { source_type: source_type }
else else
"You left the \"#{membershipable.human_name}\" #{source_type}." _("You left the \"%{membershipable_human_name}\" %{source_type}.") % { membershipable_human_name: membershipable.human_name, source_type: source_type }
end end
respond_to do |format| respond_to do |format|
...@@ -90,9 +97,9 @@ module MembershipActions ...@@ -90,9 +97,9 @@ module MembershipActions
if member.invite? if member.invite?
member.resend_invite member.resend_invite
redirect_to members_page_url, notice: 'The invitation was successfully resent.' redirect_to members_page_url, notice: _('The invitation was successfully resent.')
else else
redirect_to members_page_url, alert: 'The invitation has already been accepted.' redirect_to members_page_url, alert: _('The invitation has already been accepted.')
end end
end end
...@@ -125,6 +132,16 @@ module MembershipActions ...@@ -125,6 +132,16 @@ module MembershipActions
end end
def source_type def source_type
@source_type ||= membershipable.class.to_s.humanize(capitalize: false) @source_type ||=
begin
case membershipable
when Namespace
_("group")
when Project
_("project")
else
raise "Unknown membershipable type: #{membershipable}!"
end
end
end end
end end
...@@ -12,9 +12,9 @@ module SpammableActions ...@@ -12,9 +12,9 @@ module SpammableActions
def mark_as_spam def mark_as_spam
if SpamService.new(spammable).mark_as_spam! if SpamService.new(spammable).mark_as_spam!
redirect_to spammable_path, notice: "#{spammable.spammable_entity_type.titlecase} was submitted to Akismet successfully." redirect_to spammable_path, notice: _("%{spammable_titlecase} was submitted to Akismet successfully.") % { spammable_titlecase: spammable.spammable_entity_type.titlecase }
else else
redirect_to spammable_path, alert: 'Error with Akismet. Please check the logs for more info.' redirect_to spammable_path, alert: _('Error with Akismet. Please check the logs for more info.')
end end
end end
...@@ -33,7 +33,7 @@ module SpammableActions ...@@ -33,7 +33,7 @@ module SpammableActions
ensure_spam_config_loaded! ensure_spam_config_loaded!
if params[:recaptcha_verification] if params[:recaptcha_verification]
flash[:alert] = 'There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.' flash[:alert] = _('There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.')
end end
respond_to do |format| respond_to do |format|
......
...@@ -16,7 +16,7 @@ module UploadsActions ...@@ -16,7 +16,7 @@ module UploadsActions
end end
else else
format.json do format.json do
render json: 'Invalid file.', status: :unprocessable_entity render json: _('Invalid file.'), status: :unprocessable_entity
end end
end end
end end
...@@ -57,7 +57,7 @@ module UploadsActions ...@@ -57,7 +57,7 @@ module UploadsActions
render json: authorized render json: authorized
rescue SocketError rescue SocketError
render json: "Error uploading file", status: :internal_server_error render json: _("Error uploading file"), status: :internal_server_error
end end
private private
......
...@@ -21,7 +21,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController ...@@ -21,7 +21,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController
format.html do format.html do
redirect_to dashboard_todos_path, redirect_to dashboard_todos_path,
status: 302, status: 302,
notice: 'Todo was successfully marked as done.' notice: _('Todo was successfully marked as done.')
end end
format.js { head :ok } format.js { head :ok }
format.json { render json: todos_counts } format.json { render json: todos_counts }
...@@ -32,7 +32,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController ...@@ -32,7 +32,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController
updated_ids = TodoService.new.mark_todos_as_done(@todos, current_user) updated_ids = TodoService.new.mark_todos_as_done(@todos, current_user)
respond_to do |format| respond_to do |format|
format.html { redirect_to dashboard_todos_path, status: 302, notice: 'All todos were marked as done.' } format.html { redirect_to dashboard_todos_path, status: 302, notice: _('All todos were marked as done.') }
format.js { head :ok } format.js { head :ok }
format.json { render json: todos_counts.merge(updated_ids: updated_ids) } format.json { render json: todos_counts.merge(updated_ids: updated_ids) }
end end
......
...@@ -16,7 +16,7 @@ class Groups::RunnersController < Groups::ApplicationController ...@@ -16,7 +16,7 @@ class Groups::RunnersController < Groups::ApplicationController
def update def update
if Ci::UpdateRunnerService.new(@runner).update(runner_params) if Ci::UpdateRunnerService.new(@runner).update(runner_params)
redirect_to group_runner_path(@group, @runner), notice: 'Runner was successfully updated.' redirect_to group_runner_path(@group, @runner), notice: _('Runner was successfully updated.')
else else
render 'edit' render 'edit'
end end
...@@ -30,17 +30,17 @@ class Groups::RunnersController < Groups::ApplicationController ...@@ -30,17 +30,17 @@ class Groups::RunnersController < Groups::ApplicationController
def resume def resume
if Ci::UpdateRunnerService.new(@runner).update(active: true) if Ci::UpdateRunnerService.new(@runner).update(active: true)
redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), notice: 'Runner was successfully updated.' redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), notice: _('Runner was successfully updated.')
else else
redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), alert: 'Runner was not updated.' redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), alert: _('Runner was not updated.')
end end
end end
def pause def pause
if Ci::UpdateRunnerService.new(@runner).update(active: false) if Ci::UpdateRunnerService.new(@runner).update(active: false)
redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), notice: 'Runner was successfully updated.' redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), notice: _('Runner was successfully updated.')
else else
redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), alert: 'Runner was not updated.' redirect_to group_settings_ci_cd_path(@group, anchor: 'runners-settings'), alert: _('Runner was not updated.')
end end
end end
......
...@@ -13,7 +13,7 @@ module Groups ...@@ -13,7 +13,7 @@ module Groups
def reset_registration_token def reset_registration_token
@group.reset_runners_token! @group.reset_runners_token!
flash[:notice] = 'New runners registration token has been generated!' flash[:notice] = _('GroupSettings|New runners registration token has been generated!')
redirect_to group_settings_ci_cd_path redirect_to group_settings_ci_cd_path
end end
......
...@@ -62,7 +62,7 @@ class Import::BitbucketController < Import::BaseController ...@@ -62,7 +62,7 @@ class Import::BitbucketController < Import::BaseController
render json: { errors: project_save_error(project) }, status: :unprocessable_entity render json: { errors: project_save_error(project) }, status: :unprocessable_entity
end end
else else
render json: { errors: 'This namespace has already been taken! Please choose another one.' }, status: :unprocessable_entity render json: { errors: _('This namespace has already been taken! Please choose another one.') }, status: :unprocessable_entity
end end
end end
......
...@@ -25,7 +25,7 @@ class Import::BitbucketServerController < Import::BaseController ...@@ -25,7 +25,7 @@ class Import::BitbucketServerController < Import::BaseController
repo = bitbucket_client.repo(@project_key, @repo_slug) repo = bitbucket_client.repo(@project_key, @repo_slug)
unless repo unless repo
return render json: { errors: "Project #{@project_key}/#{@repo_slug} could not be found" }, status: :unprocessable_entity return render json: { errors: _("Project %{project_repo} could not be found") % { project_repo: "#{@project_key}/#{@repo_slug}" } }, status: :unprocessable_entity
end end
project_name = params[:new_name].presence || repo.name project_name = params[:new_name].presence || repo.name
...@@ -41,10 +41,10 @@ class Import::BitbucketServerController < Import::BaseController ...@@ -41,10 +41,10 @@ class Import::BitbucketServerController < Import::BaseController
render json: { errors: project_save_error(project) }, status: :unprocessable_entity render json: { errors: project_save_error(project) }, status: :unprocessable_entity
end end
else else
render json: { errors: 'This namespace has already been taken! Please choose another one.' }, status: :unprocessable_entity render json: { errors: _('This namespace has already been taken! Please choose another one.') }, status: :unprocessable_entity
end end
rescue BitbucketServer::Connection::ConnectionError => e rescue BitbucketServer::Connection::ConnectionError => error
render json: { errors: "Unable to connect to server: #{e}" }, status: :unprocessable_entity render json: { errors: _("Unable to connect to server: %{error}") % { error: error } }, status: :unprocessable_entity
end end
def configure def configure
...@@ -65,8 +65,8 @@ class Import::BitbucketServerController < Import::BaseController ...@@ -65,8 +65,8 @@ class Import::BitbucketServerController < Import::BaseController
already_added_projects_names = @already_added_projects.pluck(:import_source) already_added_projects_names = @already_added_projects.pluck(:import_source)
@repos.reject! { |repo| already_added_projects_names.include?(repo.browse_url) } @repos.reject! { |repo| already_added_projects_names.include?(repo.browse_url) }
rescue BitbucketServer::Connection::ConnectionError => e rescue BitbucketServer::Connection::ConnectionError => error
flash[:alert] = "Unable to connect to server: #{e}" flash[:alert] = _("Unable to connect to server: %{error}") % { error: error }
clear_session_data clear_session_data
redirect_to new_import_bitbucket_server_path redirect_to new_import_bitbucket_server_path
end end
......
...@@ -14,7 +14,7 @@ class Import::FogbugzController < Import::BaseController ...@@ -14,7 +14,7 @@ class Import::FogbugzController < Import::BaseController
res = Gitlab::FogbugzImport::Client.new(import_params.symbolize_keys) res = Gitlab::FogbugzImport::Client.new(import_params.symbolize_keys)
rescue rescue
# If the URI is invalid various errors can occur # If the URI is invalid various errors can occur
return redirect_to new_import_fogbugz_path, alert: 'Could not connect to FogBugz, check your URL' return redirect_to new_import_fogbugz_path, alert: _('Could not connect to FogBugz, check your URL')
end end
session[:fogbugz_token] = res.get_token session[:fogbugz_token] = res.get_token
session[:fogbugz_uri] = params[:uri] session[:fogbugz_uri] = params[:uri]
...@@ -29,14 +29,14 @@ class Import::FogbugzController < Import::BaseController ...@@ -29,14 +29,14 @@ class Import::FogbugzController < Import::BaseController
user_map = params[:users] user_map = params[:users]
unless user_map.is_a?(Hash) && user_map.all? { |k, v| !v[:name].blank? } unless user_map.is_a?(Hash) && user_map.all? { |k, v| !v[:name].blank? }
flash.now[:alert] = 'All users must have a name.' flash.now[:alert] = _('All users must have a name.')
return render 'new_user_map' return render 'new_user_map'
end end
session[:fogbugz_user_map] = user_map session[:fogbugz_user_map] = user_map
flash[:notice] = 'The user map has been saved. Continue by selecting the projects you want to import.' flash[:notice] = _('The user map has been saved. Continue by selecting the projects you want to import.')
redirect_to status_import_fogbugz_path redirect_to status_import_fogbugz_path
end end
......
...@@ -46,7 +46,7 @@ class Import::GiteaController < Import::GithubController ...@@ -46,7 +46,7 @@ class Import::GiteaController < Import::GithubController
def provider_auth def provider_auth
if session[access_token_key].blank? || provider_url.blank? if session[access_token_key].blank? || provider_url.blank?
redirect_to new_import_gitea_url, redirect_to new_import_gitea_url,
alert: 'You need to specify both an Access Token and a Host URL.' alert: _('You need to specify both an Access Token and a Host URL.')
end end
end end
......
...@@ -42,7 +42,7 @@ class Import::GitlabController < Import::BaseController ...@@ -42,7 +42,7 @@ class Import::GitlabController < Import::BaseController
render json: { errors: project_save_error(project) }, status: :unprocessable_entity render json: { errors: project_save_error(project) }, status: :unprocessable_entity
end end
else else
render json: { errors: 'This namespace has already been taken! Please choose another one.' }, status: :unprocessable_entity render json: { errors: _('This namespace has already been taken! Please choose another one.') }, status: :unprocessable_entity
end end
end end
......
...@@ -13,7 +13,7 @@ class Import::GitlabProjectsController < Import::BaseController ...@@ -13,7 +13,7 @@ class Import::GitlabProjectsController < Import::BaseController
def create def create
unless file_is_valid? unless file_is_valid?
return redirect_back_or_default(options: { alert: "You need to upload a GitLab project export archive (ending in .gz)." }) return redirect_back_or_default(options: { alert: _("You need to upload a GitLab project export archive (ending in .gz).") })
end end
@project = ::Projects::GitlabProjectsImportService.new(current_user, project_params).execute @project = ::Projects::GitlabProjectsImportService.new(current_user, project_params).execute
...@@ -21,7 +21,7 @@ class Import::GitlabProjectsController < Import::BaseController ...@@ -21,7 +21,7 @@ class Import::GitlabProjectsController < Import::BaseController
if @project.saved? if @project.saved?
redirect_to( redirect_to(
project_path(@project), project_path(@project),
notice: "Project '#{@project.name}' is being imported." notice: _("Project '%{project_name}' is being imported.") % { project_name: @project.name }
) )
else else
redirect_back_or_default(options: { alert: "Project could not be imported: #{@project.errors.full_messages.join(', ')}" }) redirect_back_or_default(options: { alert: "Project could not be imported: #{@project.errors.full_messages.join(', ')}" })
......
...@@ -11,18 +11,18 @@ class Import::GoogleCodeController < Import::BaseController ...@@ -11,18 +11,18 @@ class Import::GoogleCodeController < Import::BaseController
dump_file = params[:dump_file] dump_file = params[:dump_file]
unless dump_file.respond_to?(:read) unless dump_file.respond_to?(:read)
return redirect_back_or_default(options: { alert: "You need to upload a Google Takeout archive." }) return redirect_back_or_default(options: { alert: _("You need to upload a Google Takeout archive.") })
end end
begin begin
dump = JSON.parse(dump_file.read) dump = JSON.parse(dump_file.read)
rescue rescue
return redirect_back_or_default(options: { alert: "The uploaded file is not a valid Google Takeout archive." }) return redirect_back_or_default(options: { alert: _("The uploaded file is not a valid Google Takeout archive.") })
end end
client = Gitlab::GoogleCodeImport::Client.new(dump) client = Gitlab::GoogleCodeImport::Client.new(dump)
unless client.valid? unless client.valid?
return redirect_back_or_default(options: { alert: "The uploaded file is not a valid Google Takeout archive." }) return redirect_back_or_default(options: { alert: _("The uploaded file is not a valid Google Takeout archive.") })
end end
session[:google_code_dump] = dump session[:google_code_dump] = dump
...@@ -44,13 +44,13 @@ class Import::GoogleCodeController < Import::BaseController ...@@ -44,13 +44,13 @@ class Import::GoogleCodeController < Import::BaseController
begin begin
user_map = JSON.parse(user_map_json) user_map = JSON.parse(user_map_json)
rescue rescue
flash.now[:alert] = "The entered user map is not a valid JSON user map." flash.now[:alert] = _("The entered user map is not a valid JSON user map.")
return render "new_user_map" return render "new_user_map"
end end
unless user_map.is_a?(Hash) && user_map.all? { |k, v| k.is_a?(String) && v.is_a?(String) } unless user_map.is_a?(Hash) && user_map.all? { |k, v| k.is_a?(String) && v.is_a?(String) }
flash.now[:alert] = "The entered user map is not a valid JSON user map." flash.now[:alert] = _("The entered user map is not a valid JSON user map.")
return render "new_user_map" return render "new_user_map"
end end
...@@ -62,7 +62,7 @@ class Import::GoogleCodeController < Import::BaseController ...@@ -62,7 +62,7 @@ class Import::GoogleCodeController < Import::BaseController
session[:google_code_user_map] = user_map session[:google_code_user_map] = user_map
flash[:notice] = "The user map has been saved. Continue by selecting the projects you want to import." flash[:notice] = _("The user map has been saved. Continue by selecting the projects you want to import.")
redirect_to status_import_google_code_path redirect_to status_import_google_code_path
end end
......
...@@ -29,7 +29,7 @@ class Projects::BlobController < Projects::ApplicationController ...@@ -29,7 +29,7 @@ class Projects::BlobController < Projects::ApplicationController
end end
def create def create
create_commit(Files::CreateService, success_notice: "The file has been successfully created.", create_commit(Files::CreateService, success_notice: _("The file has been successfully created."),
success_path: -> { project_blob_path(@project, File.join(@branch_name, @file_path)) }, success_path: -> { project_blob_path(@project, File.join(@branch_name, @file_path)) },
failure_view: :new, failure_view: :new,
failure_path: project_new_blob_path(@project, @ref)) failure_path: project_new_blob_path(@project, @ref))
...@@ -81,7 +81,7 @@ class Projects::BlobController < Projects::ApplicationController ...@@ -81,7 +81,7 @@ class Projects::BlobController < Projects::ApplicationController
end end
def destroy def destroy
create_commit(Files::DeleteService, success_notice: "The file has been successfully deleted.", create_commit(Files::DeleteService, success_notice: _("The file has been successfully deleted."),
success_path: -> { after_delete_path }, success_path: -> { after_delete_path },
failure_view: :show, failure_view: :show,
failure_path: project_blob_path(@project, @id)) failure_path: project_blob_path(@project, @id))
......
...@@ -115,7 +115,7 @@ class Projects::BranchesController < Projects::ApplicationController ...@@ -115,7 +115,7 @@ class Projects::BranchesController < Projects::ApplicationController
DeleteMergedBranchesService.new(@project, current_user).async_execute DeleteMergedBranchesService.new(@project, current_user).async_execute
redirect_to project_branches_path(@project), redirect_to project_branches_path(@project),
notice: 'Merged branches are being deleted. This can take some time depending on the number of branches. Please refresh the page to see changes.' notice: _('Merged branches are being deleted. This can take some time depending on the number of branches. Please refresh the page to see changes.')
end end
private private
...@@ -143,7 +143,7 @@ class Projects::BranchesController < Projects::ApplicationController ...@@ -143,7 +143,7 @@ class Projects::BranchesController < Projects::ApplicationController
def redirect_for_legacy_index_sort_or_search def redirect_for_legacy_index_sort_or_search
# Normalize a legacy URL with redirect # Normalize a legacy URL with redirect
if request.format != :json && !params[:state].presence && [:sort, :search, :page].any? { |key| params[key].presence } if request.format != :json && !params[:state].presence && [:sort, :search, :page].any? { |key| params[key].presence }
redirect_to project_branches_filtered_path(@project, state: 'all'), notice: 'Update your bookmarked URLs as filtered/sorted branches URL has been changed.' redirect_to project_branches_filtered_path(@project, state: 'all'), notice: _('Update your bookmarked URLs as filtered/sorted branches URL has been changed.')
end end
end end
......
...@@ -38,7 +38,7 @@ class Projects::DeployKeysController < Projects::ApplicationController ...@@ -38,7 +38,7 @@ class Projects::DeployKeysController < Projects::ApplicationController
def update def update
if deploy_key.update(update_params) if deploy_key.update(update_params)
flash[:notice] = 'Deploy key was successfully updated.' flash[:notice] = _('Deploy key was successfully updated.')
redirect_to_repository_settings(@project, anchor: 'js-deploy-keys-settings') redirect_to_repository_settings(@project, anchor: 'js-deploy-keys-settings')
else else
render 'edit' render 'edit'
......
...@@ -18,7 +18,7 @@ class Projects::GroupLinksController < Projects::ApplicationController ...@@ -18,7 +18,7 @@ class Projects::GroupLinksController < Projects::ApplicationController
flash[:alert] = result[:message] if result[:http_status] == 409 flash[:alert] = result[:message] if result[:http_status] == 409
else else
flash[:alert] = 'Please select a group.' flash[:alert] = _('Please select a group.')
end end
redirect_to project_project_members_path(project) redirect_to project_project_members_path(project)
......
...@@ -32,7 +32,7 @@ class Projects::HooksController < Projects::ApplicationController ...@@ -32,7 +32,7 @@ class Projects::HooksController < Projects::ApplicationController
def update def update
if hook.update(hook_params) if hook.update(hook_params)
flash[:notice] = 'Hook was successfully updated.' flash[:notice] = _('Hook was successfully updated.')
redirect_to project_settings_integrations_path(@project) redirect_to project_settings_integrations_path(@project)
else else
render 'edit' render 'edit'
......
...@@ -42,9 +42,9 @@ class Projects::ImportsController < Projects::ApplicationController ...@@ -42,9 +42,9 @@ class Projects::ImportsController < Projects::ApplicationController
def finished_notice def finished_notice
if @project.forked? if @project.forked?
'The project was successfully forked.' _('The project was successfully forked.')
else else
'The project was successfully imported.' _('The project was successfully imported.')
end end
end end
......
...@@ -95,9 +95,9 @@ class Projects::IssuesController < Projects::ApplicationController ...@@ -95,9 +95,9 @@ class Projects::IssuesController < Projects::ApplicationController
if service.discussions_to_resolve.count(&:resolved?) > 0 if service.discussions_to_resolve.count(&:resolved?) > 0
flash[:notice] = if service.discussion_to_resolve_id flash[:notice] = if service.discussion_to_resolve_id
"Resolved 1 discussion." _("Resolved 1 discussion.")
else else
"Resolved all discussions." _("Resolved all discussions.")
end end
end end
......
...@@ -122,7 +122,7 @@ class Projects::JobsController < Projects::ApplicationController ...@@ -122,7 +122,7 @@ class Projects::JobsController < Projects::ApplicationController
def erase def erase
if @build.erase(erased_by: current_user) if @build.erase(erased_by: current_user)
redirect_to project_job_path(project, @build), redirect_to project_job_path(project, @build),
notice: "Job has been successfully erased!" notice: _("Job has been successfully erased!")
else else
respond_422 respond_422
end end
......
...@@ -132,7 +132,7 @@ class Projects::LabelsController < Projects::ApplicationController ...@@ -132,7 +132,7 @@ class Projects::LabelsController < Projects::ApplicationController
respond_to do |format| respond_to do |format|
format.html do format.html do
redirect_to(project_labels_path(@project), redirect_to(project_labels_path(@project),
notice: 'Failed to promote label due to internal error. Please contact administrators.') notice: _('Failed to promote label due to internal error. Please contact administrators.'))
end end
format.js format.js
end end
......
...@@ -26,7 +26,7 @@ class Projects::LfsApiController < Projects::GitHttpClientController ...@@ -26,7 +26,7 @@ class Projects::LfsApiController < Projects::GitHttpClientController
def deprecated def deprecated
render( render(
json: { json: {
message: 'Server supports batch API only, please update your Git LFS client to version 1.0.1 and up.', message: _('Server supports batch API only, please update your Git LFS client to version 1.0.1 and up.'),
documentation_url: "#{Gitlab.config.gitlab.url}/help" documentation_url: "#{Gitlab.config.gitlab.url}/help"
}, },
status: :not_implemented status: :not_implemented
...@@ -62,7 +62,7 @@ class Projects::LfsApiController < Projects::GitHttpClientController ...@@ -62,7 +62,7 @@ class Projects::LfsApiController < Projects::GitHttpClientController
else else
object[:error] = { object[:error] = {
code: 404, code: 404,
message: "Object does not exist on the server or you don't have permissions to access it" message: _("Object does not exist on the server or you don't have permissions to access it")
} }
end end
end end
......
...@@ -16,12 +16,12 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap ...@@ -16,12 +16,12 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap
render json: @conflicts_list render json: @conflicts_list
elsif @merge_request.can_be_merged? elsif @merge_request.can_be_merged?
render json: { render json: {
message: 'The merge conflicts for this merge request have already been resolved. Please return to the merge request.', message: _('The merge conflicts for this merge request have already been resolved. Please return to the merge request.'),
type: 'error' type: 'error'
} }
else else
render json: { render json: {
message: 'The merge conflicts for this merge request cannot be resolved through GitLab. Please try to resolve them locally.', message: _('The merge conflicts for this merge request cannot be resolved through GitLab. Please try to resolve them locally.'),
type: 'error' type: 'error'
} }
end end
...@@ -43,7 +43,7 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap ...@@ -43,7 +43,7 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap
return render_404 unless @conflicts_list.can_be_resolved_in_ui? return render_404 unless @conflicts_list.can_be_resolved_in_ui?
if @merge_request.can_be_merged? if @merge_request.can_be_merged?
render status: :bad_request, json: { message: 'The merge conflicts for this merge request have already been resolved.' } render status: :bad_request, json: { message: _('The merge conflicts for this merge request have already been resolved.') }
return return
end end
...@@ -52,7 +52,7 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap ...@@ -52,7 +52,7 @@ class Projects::MergeRequests::ConflictsController < Projects::MergeRequests::Ap
.new(merge_request) .new(merge_request)
.execute(current_user, params) .execute(current_user, params)
flash[:notice] = 'All merge conflicts were resolved. The merge request can now be merged.' flash[:notice] = _('All merge conflicts were resolved. The merge request can now be merged.')
render json: { redirect_to: project_merge_request_url(@project, @merge_request, resolved_conflicts: true) } render json: { redirect_to: project_merge_request_url(@project, @merge_request, resolved_conflicts: true) }
rescue Gitlab::Git::Conflict::Resolver::ResolutionError => e rescue Gitlab::Git::Conflict::Resolver::ResolutionError => e
......
...@@ -18,7 +18,7 @@ class Projects::MirrorsController < Projects::ApplicationController ...@@ -18,7 +18,7 @@ class Projects::MirrorsController < Projects::ApplicationController
result = ::Projects::UpdateService.new(project, current_user, mirror_params).execute result = ::Projects::UpdateService.new(project, current_user, mirror_params).execute
if result[:status] == :success if result[:status] == :success
flash[:notice] = 'Mirroring settings were successfully updated.' flash[:notice] = _('Mirroring settings were successfully updated.')
else else
flash[:alert] = project.errors.full_messages.join(', ').html_safe flash[:alert] = project.errors.full_messages.join(', ').html_safe
end end
...@@ -38,7 +38,7 @@ class Projects::MirrorsController < Projects::ApplicationController ...@@ -38,7 +38,7 @@ class Projects::MirrorsController < Projects::ApplicationController
def update_now def update_now
if params[:sync_remote] if params[:sync_remote]
project.update_remote_mirrors project.update_remote_mirrors
flash[:notice] = "The remote repository is being updated..." flash[:notice] = _("The remote repository is being updated...")
end end
redirect_to_repository_settings(project, anchor: 'js-push-remote-settings') redirect_to_repository_settings(project, anchor: 'js-push-remote-settings')
......
...@@ -50,9 +50,11 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController ...@@ -50,9 +50,11 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController
job_id = RunPipelineScheduleWorker.perform_async(schedule.id, current_user.id) job_id = RunPipelineScheduleWorker.perform_async(schedule.id, current_user.id)
if job_id if job_id
flash[:notice] = "Successfully scheduled a pipeline to run. Go to the <a href=\"#{project_pipelines_path(@project)}\">Pipelines page</a> for details.".html_safe link_to_pipelines = view_context.link_to(_('Pipelines page'), project_pipelines_path(@project))
message = _("Successfully scheduled a pipeline to run. Go to the %{link_to_pipelines} for details.").html_safe % { link_to_pipelines: link_to_pipelines }
flash[:notice] = message.html_safe
else else
flash[:alert] = 'Unable to schedule a pipeline to run immediately' flash[:alert] = _('Unable to schedule a pipeline to run immediately')
end end
redirect_to pipeline_schedules_path(@project) redirect_to pipeline_schedules_path(@project)
...@@ -85,7 +87,7 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController ...@@ -85,7 +87,7 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController
return unless limiter.throttled?([current_user, schedule], 1) return unless limiter.throttled?([current_user, schedule], 1)
flash[:alert] = 'You cannot play this scheduled pipeline at the moment. Please wait a minute.' flash[:alert] = _('You cannot play this scheduled pipeline at the moment. Please wait a minute.')
redirect_to pipeline_schedules_path(@project) redirect_to pipeline_schedules_path(@project)
end end
......
...@@ -15,7 +15,7 @@ class Projects::RunnersController < Projects::ApplicationController ...@@ -15,7 +15,7 @@ class Projects::RunnersController < Projects::ApplicationController
def update def update
if Ci::UpdateRunnerService.new(@runner).update(runner_params) if Ci::UpdateRunnerService.new(@runner).update(runner_params)
redirect_to project_runner_path(@project, @runner), notice: 'Runner was successfully updated.' redirect_to project_runner_path(@project, @runner), notice: _('Runner was successfully updated.')
else else
render 'edit' render 'edit'
end end
...@@ -31,17 +31,17 @@ class Projects::RunnersController < Projects::ApplicationController ...@@ -31,17 +31,17 @@ class Projects::RunnersController < Projects::ApplicationController
def resume def resume
if Ci::UpdateRunnerService.new(@runner).update(active: true) if Ci::UpdateRunnerService.new(@runner).update(active: true)
redirect_to project_runners_path(@project), notice: 'Runner was successfully updated.' redirect_to project_runners_path(@project), notice: _('Runner was successfully updated.')
else else
redirect_to project_runners_path(@project), alert: 'Runner was not updated.' redirect_to project_runners_path(@project), alert: _('Runner was not updated.')
end end
end end
def pause def pause
if Ci::UpdateRunnerService.new(@runner).update(active: false) if Ci::UpdateRunnerService.new(@runner).update(active: false)
redirect_to project_runners_path(@project), notice: 'Runner was successfully updated.' redirect_to project_runners_path(@project), notice: _('Runner was successfully updated.')
else else
redirect_to project_runners_path(@project), alert: 'Runner was not updated.' redirect_to project_runners_path(@project), alert: _('Runner was not updated.')
end end
end end
......
...@@ -43,20 +43,20 @@ class Projects::ServicesController < Projects::ApplicationController ...@@ -43,20 +43,20 @@ class Projects::ServicesController < Projects::ApplicationController
if outcome[:success] if outcome[:success]
{} {}
else else
{ error: true, message: 'Test failed.', service_response: outcome[:result].to_s, test_failed: true } { error: true, message: _('Test failed.'), service_response: outcome[:result].to_s, test_failed: true }
end end
else else
{ error: true, message: 'Validations failed.', service_response: @service.errors.full_messages.join(','), test_failed: false } { error: true, message: _('Validations failed.'), service_response: @service.errors.full_messages.join(','), test_failed: false }
end end
rescue Gitlab::HTTP::BlockedUrlError => e rescue Gitlab::HTTP::BlockedUrlError => e
{ error: true, message: 'Test failed.', service_response: e.message, test_failed: true } { error: true, message: _('Test failed.'), service_response: e.message, test_failed: true }
end end
def success_message def success_message
if @service.active? if @service.active?
"#{@service.title} activated." _("%{service_title} activated.") % { service_title: @service.title }
else else
"#{@service.title} settings saved, but not activated." _("%{service_title} settings saved, but not activated.") % { service_title: @service.title }
end end
end end
......
...@@ -13,7 +13,7 @@ module Projects ...@@ -13,7 +13,7 @@ module Projects
Projects::UpdateService.new(project, current_user, update_params).tap do |service| Projects::UpdateService.new(project, current_user, update_params).tap do |service|
result = service.execute result = service.execute
if result[:status] == :success if result[:status] == :success
flash[:notice] = "Pipelines settings for '#{@project.name}' were successfully updated." flash[:notice] = _("Pipelines settings for '%{project_name}' were successfully updated.") % { project_name: @project.name }
run_autodevops_pipeline(service) run_autodevops_pipeline(service)
...@@ -39,7 +39,7 @@ module Projects ...@@ -39,7 +39,7 @@ module Projects
def reset_registration_token def reset_registration_token
@project.reset_runners_token! @project.reset_runners_token!
flash[:notice] = 'New runners registration token has been generated!' flash[:notice] = _('New runners registration token has been generated!')
redirect_to namespace_project_settings_ci_cd_path redirect_to namespace_project_settings_ci_cd_path
end end
...@@ -58,7 +58,7 @@ module Projects ...@@ -58,7 +58,7 @@ module Projects
return unless service.run_auto_devops_pipeline? return unless service.run_auto_devops_pipeline?
if @project.empty_repo? if @project.empty_repo?
flash[:warning] = "This repository is currently empty. A new Auto DevOps pipeline will be created after a new file has been pushed to a branch." flash[:warning] = _("This repository is currently empty. A new Auto DevOps pipeline will be created after a new file has been pushed to a branch.")
return return
end end
......
...@@ -37,7 +37,7 @@ class Projects::TreeController < Projects::ApplicationController ...@@ -37,7 +37,7 @@ class Projects::TreeController < Projects::ApplicationController
def create_dir def create_dir
return render_404 unless @commit_params.values.all? return render_404 unless @commit_params.values.all?
create_commit(Files::CreateDirService, success_notice: "The directory has been successfully created.", create_commit(Files::CreateDirService, success_notice: _("The directory has been successfully created."),
success_path: project_tree_path(@project, File.join(@branch_name, @dir_name)), success_path: project_tree_path(@project, File.join(@branch_name, @dir_name)),
failure_path: project_tree_path(@project, @ref)) failure_path: project_tree_path(@project, @ref))
end end
......
...@@ -16,9 +16,9 @@ class Projects::TriggersController < Projects::ApplicationController ...@@ -16,9 +16,9 @@ class Projects::TriggersController < Projects::ApplicationController
@trigger = project.triggers.create(trigger_params.merge(owner: current_user)) @trigger = project.triggers.create(trigger_params.merge(owner: current_user))
if @trigger.valid? if @trigger.valid?
flash[:notice] = 'Trigger was created successfully.' flash[:notice] = _('Trigger was created successfully.')
else else
flash[:alert] = 'You could not create a new trigger.' flash[:alert] = _('You could not create a new trigger.')
end end
redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers') redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers')
...@@ -26,9 +26,9 @@ class Projects::TriggersController < Projects::ApplicationController ...@@ -26,9 +26,9 @@ class Projects::TriggersController < Projects::ApplicationController
def take_ownership def take_ownership
if trigger.update(owner: current_user) if trigger.update(owner: current_user)
flash[:notice] = 'Trigger was re-assigned.' flash[:notice] = _('Trigger was re-assigned.')
else else
flash[:alert] = 'You could not take ownership of trigger.' flash[:alert] = _('You could not take ownership of trigger.')
end end
redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers') redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers')
...@@ -39,7 +39,7 @@ class Projects::TriggersController < Projects::ApplicationController ...@@ -39,7 +39,7 @@ class Projects::TriggersController < Projects::ApplicationController
def update def update
if trigger.update(trigger_params) if trigger.update(trigger_params)
redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers'), notice: 'Trigger was successfully updated.' redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers'), notice: _('Trigger was successfully updated.')
else else
render action: "edit" render action: "edit"
end end
...@@ -47,9 +47,9 @@ class Projects::TriggersController < Projects::ApplicationController ...@@ -47,9 +47,9 @@ class Projects::TriggersController < Projects::ApplicationController
def destroy def destroy
if trigger.destroy if trigger.destroy
flash[:notice] = "Trigger removed." flash[:notice] = _("Trigger removed.")
else else
flash[:alert] = "Could not remove the trigger." flash[:alert] = _("Could not remove the trigger.")
end end
redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers'), status: :found redirect_to project_settings_ci_cd_path(@project, anchor: 'js-pipeline-triggers'), status: :found
......
...@@ -49,7 +49,7 @@ class Projects::WikisController < Projects::ApplicationController ...@@ -49,7 +49,7 @@ class Projects::WikisController < Projects::ApplicationController
if @page.valid? if @page.valid?
redirect_to( redirect_to(
project_wiki_path(@project, @page), project_wiki_path(@project, @page),
notice: 'Wiki was successfully updated.' notice: _('Wiki was successfully updated.')
) )
else else
render 'edit' render 'edit'
...@@ -65,7 +65,7 @@ class Projects::WikisController < Projects::ApplicationController ...@@ -65,7 +65,7 @@ class Projects::WikisController < Projects::ApplicationController
if @page.persisted? if @page.persisted?
redirect_to( redirect_to(
project_wiki_path(@project, @page), project_wiki_path(@project, @page),
notice: 'Wiki was successfully updated.' notice: _('Wiki was successfully updated.')
) )
else else
render action: "edit" render action: "edit"
...@@ -85,7 +85,7 @@ class Projects::WikisController < Projects::ApplicationController ...@@ -85,7 +85,7 @@ class Projects::WikisController < Projects::ApplicationController
else else
redirect_to( redirect_to(
project_wiki_path(@project, :home), project_wiki_path(@project, :home),
notice: "Page not found" notice: _("Page not found")
) )
end end
end end
...@@ -95,7 +95,7 @@ class Projects::WikisController < Projects::ApplicationController ...@@ -95,7 +95,7 @@ class Projects::WikisController < Projects::ApplicationController
redirect_to project_wiki_path(@project, :home), redirect_to project_wiki_path(@project, :home),
status: 302, status: 302,
notice: "Page was successfully deleted" notice: _("Page was successfully deleted")
rescue Gitlab::Git::Wiki::OperationError => e rescue Gitlab::Git::Wiki::OperationError => e
@error = e @error = e
render 'edit' render 'edit'
...@@ -118,7 +118,7 @@ class Projects::WikisController < Projects::ApplicationController ...@@ -118,7 +118,7 @@ class Projects::WikisController < Projects::ApplicationController
@sidebar_wiki_entries = WikiPage.group_by_directory(@project_wiki.pages(limit: 15)) @sidebar_wiki_entries = WikiPage.group_by_directory(@project_wiki.pages(limit: 15))
end end
rescue ProjectWiki::CouldNotCreateWikiError rescue ProjectWiki::CouldNotCreateWikiError
flash[:notice] = "Could not create Wiki Repository at this time. Please try again later." flash[:notice] = _("Could not create Wiki Repository at this time. Please try again later.")
redirect_to project_path(@project) redirect_to project_path(@project)
false false
end end
...@@ -155,7 +155,7 @@ class Projects::WikisController < Projects::ApplicationController ...@@ -155,7 +155,7 @@ class Projects::WikisController < Projects::ApplicationController
end end
def set_encoding_error def set_encoding_error
flash.now[:notice] = "The content of this page is not encoded in UTF-8. Edits can only be made via the Git repository." flash.now[:notice] = _("The content of this page is not encoded in UTF-8. Edits can only be made via the Git repository.")
end end
def file_blob def file_blob
......
...@@ -144,6 +144,15 @@ msgstr "" ...@@ -144,6 +144,15 @@ msgstr ""
msgid "%{percent}%% complete" msgid "%{percent}%% complete"
msgstr "" msgstr ""
msgid "%{service_title} activated."
msgstr ""
msgid "%{service_title} settings saved, but not activated."
msgstr ""
msgid "%{spammable_titlecase} was submitted to Akismet successfully."
msgstr ""
msgid "%{strong_start}%{branch_count}%{strong_end} Branch" msgid "%{strong_start}%{branch_count}%{strong_end} Branch"
msgid_plural "%{strong_start}%{branch_count}%{strong_end} Branches" msgid_plural "%{strong_start}%{branch_count}%{strong_end} Branches"
msgstr[0] "" msgstr[0] ""
...@@ -372,6 +381,9 @@ msgstr "" ...@@ -372,6 +381,9 @@ msgstr ""
msgid "Access expiration date" msgid "Access expiration date"
msgstr "" msgstr ""
msgid "Access forbidden. Check your access level."
msgstr ""
msgid "Account" msgid "Account"
msgstr "" msgstr ""
...@@ -609,9 +621,18 @@ msgstr "" ...@@ -609,9 +621,18 @@ msgstr ""
msgid "All issues for this milestone are closed. You may close this milestone now." msgid "All issues for this milestone are closed. You may close this milestone now."
msgstr "" msgstr ""
msgid "All merge conflicts were resolved. The merge request can now be merged."
msgstr ""
msgid "All todos were marked as done."
msgstr ""
msgid "All users" msgid "All users"
msgstr "" msgstr ""
msgid "All users must have a name."
msgstr ""
msgid "Allow commits from members who can merge to the target branch." msgid "Allow commits from members who can merge to the target branch."
msgstr "" msgstr ""
...@@ -954,6 +975,9 @@ msgstr "" ...@@ -954,6 +975,9 @@ msgstr ""
msgid "Authentication method" msgid "Authentication method"
msgstr "" msgstr ""
msgid "Authentication via U2F device failed."
msgstr ""
msgid "Author" msgid "Author"
msgstr "" msgstr ""
...@@ -2447,6 +2471,15 @@ msgstr "" ...@@ -2447,6 +2471,15 @@ msgstr ""
msgid "Copy token to clipboard" msgid "Copy token to clipboard"
msgstr "" msgstr ""
msgid "Could not connect to FogBugz, check your URL"
msgstr ""
msgid "Could not create Wiki Repository at this time. Please try again later."
msgstr ""
msgid "Could not remove the trigger."
msgstr ""
msgid "Could not retrieve the pipeline status. For troubleshooting steps, read the %{linkStart}documentation.%{linkEnd}" msgid "Could not retrieve the pipeline status. For troubleshooting steps, read the %{linkStart}documentation.%{linkEnd}"
msgstr "" msgstr ""
...@@ -3370,6 +3403,9 @@ msgstr "" ...@@ -3370,6 +3403,9 @@ msgstr ""
msgid "Error updating todo status." msgid "Error updating todo status."
msgstr "" msgstr ""
msgid "Error uploading file"
msgstr ""
msgid "Error while loading the merge request. Please try again." msgid "Error while loading the merge request. Please try again."
msgstr "" msgstr ""
...@@ -3541,6 +3577,9 @@ msgstr "" ...@@ -3541,6 +3577,9 @@ msgstr ""
msgid "Failed to load errors from Sentry. Error message: %{errorMessage}" msgid "Failed to load errors from Sentry. Error message: %{errorMessage}"
msgstr "" msgstr ""
msgid "Failed to promote label due to internal error. Please contact administrators."
msgstr ""
msgid "Failed to remove issue from board, please try again." msgid "Failed to remove issue from board, please try again."
msgstr "" msgstr ""
...@@ -3786,6 +3825,9 @@ msgstr "" ...@@ -3786,6 +3825,9 @@ msgstr ""
msgid "Git" msgid "Git"
msgstr "" msgstr ""
msgid "Git LFS is not enabled on this GitLab server, contact your admin."
msgstr ""
msgid "Git global setup" msgid "Git global setup"
msgstr "" msgstr ""
...@@ -3966,6 +4008,9 @@ msgstr "" ...@@ -3966,6 +4008,9 @@ msgstr ""
msgid "GroupSettings|Learn more about badges." msgid "GroupSettings|Learn more about badges."
msgstr "" msgstr ""
msgid "GroupSettings|New runners registration token has been generated!"
msgstr ""
msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" msgid "GroupSettings|Prevent sharing a project within %{group} with other groups"
msgstr "" msgstr ""
...@@ -4130,6 +4175,9 @@ msgstr "" ...@@ -4130,6 +4175,9 @@ msgstr ""
msgid "Hook was successfully created." msgid "Hook was successfully created."
msgstr "" msgstr ""
msgid "Hook was successfully updated."
msgstr ""
msgid "Housekeeping successfully started" msgid "Housekeeping successfully started"
msgstr "" msgstr ""
...@@ -4409,12 +4457,21 @@ msgstr "" ...@@ -4409,12 +4457,21 @@ msgstr ""
msgid "Introducing Your Conversational Development Index" msgid "Introducing Your Conversational Development Index"
msgstr "" msgstr ""
msgid "Invalid Login or password"
msgstr ""
msgid "Invalid file."
msgstr ""
msgid "Invalid input, please avoid emojis" msgid "Invalid input, please avoid emojis"
msgstr "" msgstr ""
msgid "Invalid pin code" msgid "Invalid pin code"
msgstr "" msgstr ""
msgid "Invalid two-factor code."
msgstr ""
msgid "Invitation" msgid "Invitation"
msgstr "" msgstr ""
...@@ -4478,6 +4535,9 @@ msgstr "" ...@@ -4478,6 +4535,9 @@ msgstr ""
msgid "Job has been erased" msgid "Job has been erased"
msgstr "" msgstr ""
msgid "Job has been successfully erased!"
msgstr ""
msgid "Job is stuck. Check runners." msgid "Job is stuck. Check runners."
msgstr "" msgstr ""
...@@ -4986,6 +5046,9 @@ msgstr "" ...@@ -4986,6 +5046,9 @@ msgstr ""
msgid "Merged" msgid "Merged"
msgstr "" msgstr ""
msgid "Merged branches are being deleted. This can take some time depending on the number of branches. Please refresh the page to see changes."
msgstr ""
msgid "Messages" msgid "Messages"
msgstr "" msgstr ""
...@@ -5079,6 +5142,9 @@ msgstr "" ...@@ -5079,6 +5142,9 @@ msgstr ""
msgid "Mirroring repositories" msgid "Mirroring repositories"
msgstr "" msgstr ""
msgid "Mirroring settings were successfully updated."
msgstr ""
msgid "MissingSSHKeyWarningLink|add an SSH key" msgid "MissingSSHKeyWarningLink|add an SSH key"
msgstr "" msgstr ""
...@@ -5384,6 +5450,9 @@ msgstr "" ...@@ -5384,6 +5450,9 @@ msgstr ""
msgid "Not enough data" msgid "Not enough data"
msgstr "" msgstr ""
msgid "Not found."
msgstr ""
msgid "Not now" msgid "Not now"
msgstr "" msgstr ""
...@@ -5489,6 +5558,9 @@ msgstr "" ...@@ -5489,6 +5558,9 @@ msgstr ""
msgid "November" msgid "November"
msgstr "" msgstr ""
msgid "Object does not exist on the server or you don't have permissions to access it"
msgstr ""
msgid "Oct" msgid "Oct"
msgstr "" msgstr ""
...@@ -5590,6 +5662,12 @@ msgstr "" ...@@ -5590,6 +5662,12 @@ msgstr ""
msgid "Owner" msgid "Owner"
msgstr "" msgstr ""
msgid "Page not found"
msgstr ""
msgid "Page was successfully deleted"
msgstr ""
msgid "Pages" msgid "Pages"
msgstr "" msgstr ""
...@@ -5752,6 +5830,12 @@ msgstr "" ...@@ -5752,6 +5830,12 @@ msgstr ""
msgid "Pipelines for last year" msgid "Pipelines for last year"
msgstr "" msgstr ""
msgid "Pipelines page"
msgstr ""
msgid "Pipelines settings for '%{project_name}' were successfully updated."
msgstr ""
msgid "Pipelines|Build with confidence" msgid "Pipelines|Build with confidence"
msgstr "" msgstr ""
...@@ -5896,6 +5980,9 @@ msgstr "" ...@@ -5896,6 +5980,9 @@ msgstr ""
msgid "Please note that this application is not provided by GitLab and you should verify its authenticity before allowing access." msgid "Please note that this application is not provided by GitLab and you should verify its authenticity before allowing access."
msgstr "" msgstr ""
msgid "Please select a group."
msgstr ""
msgid "Please select at least one filter to see results" msgid "Please select at least one filter to see results"
msgstr "" msgstr ""
...@@ -6217,6 +6304,12 @@ msgstr "" ...@@ -6217,6 +6304,12 @@ msgstr ""
msgid "Project \"%{name}\" is no longer available. Select another project to continue." msgid "Project \"%{name}\" is no longer available. Select another project to continue."
msgstr "" msgstr ""
msgid "Project %{project_repo} could not be found"
msgstr ""
msgid "Project '%{project_name}' is being imported."
msgstr ""
msgid "Project '%{project_name}' is in the process of being deleted." msgid "Project '%{project_name}' is in the process of being deleted."
msgstr "" msgstr ""
...@@ -6696,6 +6789,12 @@ msgstr "" ...@@ -6696,6 +6789,12 @@ msgstr ""
msgid "Resolved" msgid "Resolved"
msgstr "" msgstr ""
msgid "Resolved 1 discussion."
msgstr ""
msgid "Resolved all discussions."
msgstr ""
msgid "Response metrics (AWS ELB)" msgid "Response metrics (AWS ELB)"
msgstr "" msgstr ""
...@@ -7019,6 +7118,9 @@ msgstr "" ...@@ -7019,6 +7118,9 @@ msgstr ""
msgid "September" msgid "September"
msgstr "" msgstr ""
msgid "Server supports batch API only, please update your Git LFS client to version 1.0.1 and up."
msgstr ""
msgid "Server version" msgid "Server version"
msgstr "" msgstr ""
...@@ -7603,6 +7705,9 @@ msgstr "" ...@@ -7603,6 +7705,9 @@ msgstr ""
msgid "Successfully removed email." msgid "Successfully removed email."
msgstr "" msgstr ""
msgid "Successfully scheduled a pipeline to run. Go to the %{link_to_pipelines} for details."
msgstr ""
msgid "Successfully unblocked" msgid "Successfully unblocked"
msgstr "" msgstr ""
...@@ -7756,6 +7861,9 @@ msgstr "" ...@@ -7756,6 +7861,9 @@ msgstr ""
msgid "Test coverage parsing" msgid "Test coverage parsing"
msgstr "" msgstr ""
msgid "Test failed."
msgstr ""
msgid "The Git LFS objects will <strong>not</strong> be synced." msgid "The Git LFS objects will <strong>not</strong> be synced."
msgstr "" msgstr ""
...@@ -7774,9 +7882,24 @@ msgstr "" ...@@ -7774,9 +7882,24 @@ msgstr ""
msgid "The collection of events added to the data gathered for that stage." msgid "The collection of events added to the data gathered for that stage."
msgstr "" msgstr ""
msgid "The content of this page is not encoded in UTF-8. Edits can only be made via the Git repository."
msgstr ""
msgid "The deployment of this job to %{environmentLink} did not succeed." msgid "The deployment of this job to %{environmentLink} did not succeed."
msgstr "" msgstr ""
msgid "The directory has been successfully created."
msgstr ""
msgid "The entered user map is not a valid JSON user map."
msgstr ""
msgid "The file has been successfully created."
msgstr ""
msgid "The file has been successfully deleted."
msgstr ""
msgid "The fork relationship has been removed." msgid "The fork relationship has been removed."
msgstr "" msgstr ""
...@@ -7789,6 +7912,12 @@ msgstr "" ...@@ -7789,6 +7912,12 @@ msgstr ""
msgid "The import will time out after %{timeout}. For repositories that take longer, use a clone/push combination." msgid "The import will time out after %{timeout}. For repositories that take longer, use a clone/push combination."
msgstr "" msgstr ""
msgid "The invitation has already been accepted."
msgstr ""
msgid "The invitation was successfully resent."
msgstr ""
msgid "The issue stage shows the time it takes from creating an issue to assigning the issue to a milestone, or add the issue to a list on your Issue Board. Begin creating issues to see data for this stage." msgid "The issue stage shows the time it takes from creating an issue to assigning the issue to a milestone, or add the issue to a list on your Issue Board. Begin creating issues to see data for this stage."
msgstr "" msgstr ""
...@@ -7798,6 +7927,15 @@ msgstr "" ...@@ -7798,6 +7927,15 @@ msgstr ""
msgid "The maximum file size allowed is 200KB." msgid "The maximum file size allowed is 200KB."
msgstr "" msgstr ""
msgid "The merge conflicts for this merge request cannot be resolved through GitLab. Please try to resolve them locally."
msgstr ""
msgid "The merge conflicts for this merge request have already been resolved."
msgstr ""
msgid "The merge conflicts for this merge request have already been resolved. Please return to the merge request."
msgstr ""
msgid "The name %{entryName} is already taken in this directory." msgid "The name %{entryName} is already taken in this directory."
msgstr "" msgstr ""
...@@ -7822,6 +7960,15 @@ msgstr "" ...@@ -7822,6 +7960,15 @@ msgstr ""
msgid "The project can be accessed without any authentication." msgid "The project can be accessed without any authentication."
msgstr "" msgstr ""
msgid "The project was successfully forked."
msgstr ""
msgid "The project was successfully imported."
msgstr ""
msgid "The remote repository is being updated..."
msgstr ""
msgid "The repository for this project does not exist." msgid "The repository for this project does not exist."
msgstr "" msgstr ""
...@@ -7852,12 +7999,18 @@ msgstr "" ...@@ -7852,12 +7999,18 @@ msgstr ""
msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination." msgid "The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination."
msgstr "" msgstr ""
msgid "The uploaded file is not a valid Google Takeout archive."
msgstr ""
msgid "The usage ping is disabled, and cannot be configured through this form." msgid "The usage ping is disabled, and cannot be configured through this form."
msgstr "" msgstr ""
msgid "The user is being deleted." msgid "The user is being deleted."
msgstr "" msgstr ""
msgid "The user map has been saved. Continue by selecting the projects you want to import."
msgstr ""
msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of <code>:</code>. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side." msgid "The user map is a JSON document mapping the Google Code users that participated on your projects to the way their email addresses and usernames will be imported into GitLab. You can change this by changing the value on the right hand side of <code>:</code>. Be sure to preserve the surrounding double quotes, other punctuation and the email address or username on the left hand side."
msgstr "" msgstr ""
...@@ -7921,6 +8074,9 @@ msgstr "" ...@@ -7921,6 +8074,9 @@ msgstr ""
msgid "There was an error when unsubscribing from this label." msgid "There was an error when unsubscribing from this label."
msgstr "" msgstr ""
msgid "There was an error with the reCAPTCHA. Please solve the reCAPTCHA again."
msgstr ""
msgid "These existing issues have a similar title. It might be better to comment there instead of creating another similar issue." msgid "These existing issues have a similar title. It might be better to comment there instead of creating another similar issue."
msgstr "" msgstr ""
...@@ -8071,6 +8227,9 @@ msgstr "" ...@@ -8071,6 +8227,9 @@ msgstr ""
msgid "This merge request is locked." msgid "This merge request is locked."
msgstr "" msgstr ""
msgid "This namespace has already been taken! Please choose another one."
msgstr ""
msgid "This option is disabled as you don't have write permissions for the current branch" msgid "This option is disabled as you don't have write permissions for the current branch"
msgstr "" msgstr ""
...@@ -8107,6 +8266,9 @@ msgstr "" ...@@ -8107,6 +8266,9 @@ msgstr ""
msgid "This repository" msgid "This repository"
msgstr "" msgstr ""
msgid "This repository is currently empty. A new Auto DevOps pipeline will be created after a new file has been pushed to a branch."
msgstr ""
msgid "This runner will only run on pipelines triggered on protected branches" msgid "This runner will only run on pipelines triggered on protected branches"
msgstr "" msgstr ""
...@@ -8393,6 +8555,9 @@ msgstr "" ...@@ -8393,6 +8555,9 @@ msgstr ""
msgid "Todo" msgid "Todo"
msgstr "" msgstr ""
msgid "Todo was successfully marked as done."
msgstr ""
msgid "Todos" msgid "Todos"
msgstr "" msgstr ""
...@@ -8450,6 +8615,9 @@ msgstr "" ...@@ -8450,6 +8615,9 @@ msgstr ""
msgid "Trending" msgid "Trending"
msgstr "" msgstr ""
msgid "Trigger removed."
msgstr ""
msgid "Trigger this manual action" msgid "Trigger this manual action"
msgstr "" msgstr ""
...@@ -8459,6 +8627,15 @@ msgstr "" ...@@ -8459,6 +8627,15 @@ msgstr ""
msgid "Trigger variables:" msgid "Trigger variables:"
msgstr "" msgstr ""
msgid "Trigger was created successfully."
msgstr ""
msgid "Trigger was re-assigned."
msgstr ""
msgid "Trigger was successfully updated."
msgstr ""
msgid "Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions." msgid "Triggers can force a specific branch or tag to get rebuilt with an API call. These tokens will impersonate their associated user including their access to projects and their project permissions."
msgstr "" msgstr ""
...@@ -8483,9 +8660,15 @@ msgstr "" ...@@ -8483,9 +8660,15 @@ msgstr ""
msgid "Type" msgid "Type"
msgstr "" msgstr ""
msgid "Unable to connect to server: %{error}"
msgstr ""
msgid "Unable to load the diff. %{button_try_again}" msgid "Unable to load the diff. %{button_try_again}"
msgstr "" msgstr ""
msgid "Unable to schedule a pipeline to run immediately"
msgstr ""
msgid "Unblock" msgid "Unblock"
msgstr "" msgstr ""
...@@ -8561,6 +8744,9 @@ msgstr "" ...@@ -8561,6 +8744,9 @@ msgstr ""
msgid "Update now" msgid "Update now"
msgstr "" msgstr ""
msgid "Update your bookmarked URLs as filtered/sorted branches URL has been changed."
msgstr ""
msgid "Update your group name, description, avatar, and visibility." msgid "Update your group name, description, avatar, and visibility."
msgstr "" msgstr ""
...@@ -8657,6 +8843,12 @@ msgstr "" ...@@ -8657,6 +8843,12 @@ msgstr ""
msgid "User was successfully created." msgid "User was successfully created."
msgstr "" msgstr ""
msgid "User was successfully removed from group and any subresources."
msgstr ""
msgid "User was successfully removed from project."
msgstr ""
msgid "User was successfully updated." msgid "User was successfully updated."
msgstr "" msgstr ""
...@@ -8750,6 +8942,9 @@ msgstr "" ...@@ -8750,6 +8942,9 @@ msgstr ""
msgid "Validate your GitLab CI configuration file" msgid "Validate your GitLab CI configuration file"
msgstr "" msgstr ""
msgid "Validations failed."
msgstr ""
msgid "Value" msgid "Value"
msgstr "" msgstr ""
...@@ -8888,6 +9083,9 @@ msgstr "" ...@@ -8888,6 +9083,9 @@ msgstr ""
msgid "Wiki" msgid "Wiki"
msgstr "" msgstr ""
msgid "Wiki was successfully updated."
msgstr ""
msgid "WikiClone|Clone your wiki" msgid "WikiClone|Clone your wiki"
msgstr "" msgstr ""
...@@ -9107,6 +9305,12 @@ msgstr "" ...@@ -9107,6 +9305,12 @@ msgstr ""
msgid "You can move around the graph by using the arrow keys." msgid "You can move around the graph by using the arrow keys."
msgstr "" msgstr ""
msgid "You can now submit a merge request to get this change into the original branch."
msgstr ""
msgid "You can now submit a merge request to get this change into the original project."
msgstr ""
msgid "You can only add files when you are on a branch" msgid "You can only add files when you are on a branch"
msgstr "" msgstr ""
...@@ -9134,9 +9338,18 @@ msgstr "" ...@@ -9134,9 +9338,18 @@ msgstr ""
msgid "You cannot impersonate an internal user" msgid "You cannot impersonate an internal user"
msgstr "" msgstr ""
msgid "You cannot play this scheduled pipeline at the moment. Please wait a minute."
msgstr ""
msgid "You cannot write to this read-only GitLab instance." msgid "You cannot write to this read-only GitLab instance."
msgstr "" msgstr ""
msgid "You could not create a new trigger."
msgstr ""
msgid "You could not take ownership of trigger."
msgstr ""
msgid "You do not have any subscriptions yet" msgid "You do not have any subscriptions yet"
msgstr "" msgstr ""
...@@ -9155,6 +9368,9 @@ msgstr "" ...@@ -9155,6 +9368,9 @@ msgstr ""
msgid "You have reached your project limit" msgid "You have reached your project limit"
msgstr "" msgstr ""
msgid "You left the \"%{membershipable_human_name}\" %{source_type}."
msgstr ""
msgid "You may also add variables that are made available to the running application by prepending the variable key with <code>K8S_SECRET_</code>." msgid "You may also add variables that are made available to the running application by prepending the variable key with <code>K8S_SECRET_</code>."
msgstr "" msgstr ""
...@@ -9170,6 +9386,15 @@ msgstr "" ...@@ -9170,6 +9386,15 @@ msgstr ""
msgid "You need to register a two-factor authentication app before you can set up a U2F device." msgid "You need to register a two-factor authentication app before you can set up a U2F device."
msgstr "" msgstr ""
msgid "You need to specify both an Access Token and a Host URL."
msgstr ""
msgid "You need to upload a GitLab project export archive (ending in .gz)."
msgstr ""
msgid "You need to upload a Google Takeout archive."
msgstr ""
msgid "You will lose all changes you've made to this file. This action cannot be undone." msgid "You will lose all changes you've made to this file. This action cannot be undone."
msgstr "" msgstr ""
...@@ -9242,6 +9467,9 @@ msgstr "" ...@@ -9242,6 +9467,9 @@ msgstr ""
msgid "Your U2F device was registered!" msgid "Your U2F device was registered!"
msgstr "" msgstr ""
msgid "Your access request to the %{source_type} has been withdrawn."
msgstr ""
msgid "Your account uses dedicated credentials for the \"%{group_name}\" group and can only be updated through SSO." msgid "Your account uses dedicated credentials for the \"%{group_name}\" group and can only be updated through SSO."
msgstr "" msgstr ""
...@@ -9263,6 +9491,9 @@ msgstr "" ...@@ -9263,6 +9491,9 @@ msgstr ""
msgid "Your changes have been saved" msgid "Your changes have been saved"
msgstr "" msgstr ""
msgid "Your changes have been successfully committed."
msgstr ""
msgid "Your comment will not be visible to the public." msgid "Your comment will not be visible to the public."
msgstr "" msgstr ""
...@@ -9287,6 +9518,9 @@ msgstr "" ...@@ -9287,6 +9518,9 @@ msgstr ""
msgid "Your projects" msgid "Your projects"
msgstr "" msgstr ""
msgid "Your request for access has been queued for review."
msgstr ""
msgid "a deleted user" msgid "a deleted user"
msgstr "" msgstr ""
...@@ -9366,6 +9600,9 @@ msgstr "" ...@@ -9366,6 +9600,9 @@ msgstr ""
msgid "estimateCommand|%{slash_command} will update the estimated time with the latest command." msgid "estimateCommand|%{slash_command} will update the estimated time with the latest command."
msgstr "" msgstr ""
msgid "failed"
msgstr ""
msgid "for %{link_to_merge_request} with %{link_to_merge_request_source_branch}" msgid "for %{link_to_merge_request} with %{link_to_merge_request_source_branch}"
msgstr "" msgstr ""
...@@ -9743,6 +9980,9 @@ msgstr "" ...@@ -9743,6 +9980,9 @@ msgstr ""
msgid "stuck" msgid "stuck"
msgstr "" msgstr ""
msgid "success"
msgstr ""
msgid "syntax is correct" msgid "syntax is correct"
msgstr "" msgstr ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment