diff --git a/.rubocop_todo/graphql/descriptions.yml b/.rubocop_todo/graphql/descriptions.yml index 5ab98be73dd..181c1d1a533 100644 --- a/.rubocop_todo/graphql/descriptions.yml +++ b/.rubocop_todo/graphql/descriptions.yml @@ -2,18 +2,6 @@ # Cop supports --autocorrect. Graphql/Descriptions: Exclude: - - 'app/graphql/types/deployment_tag_type.rb' - - 'app/graphql/types/design_management/design_at_version_type.rb' - - 'app/graphql/types/design_management/design_fields.rb' - - 'app/graphql/types/diff_stats_type.rb' - - 'app/graphql/types/event_type.rb' - - 'app/graphql/types/group_type.rb' - - 'app/graphql/types/issue_type.rb' - - 'app/graphql/types/issues/negated_issue_filter_input_type.rb' - - 'app/graphql/types/merge_request_type.rb' - - 'app/graphql/types/merge_requests/interacts_with_merge_request.rb' - - 'app/graphql/types/milestone_sort_enum.rb' - - 'app/graphql/types/milestone_type.rb' - 'app/graphql/types/namespace/package_settings_type.rb' - 'app/graphql/types/notes/noteable_interface.rb' - 'app/graphql/types/packages/cleanup/policy_type.rb' diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 30754fe562d..893f4bff2cf 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -5ba826bb0ae2842ea51fbfb42d6cdb5a0fd12f2f +3f3bfa812d4677b2f61884fb13aa5257707352c6 diff --git a/app/assets/javascripts/notes/components/note_awards_list.vue b/app/assets/javascripts/notes/components/note_awards_list.vue index 21f226cd207..f968cc5a299 100644 --- a/app/assets/javascripts/notes/components/note_awards_list.vue +++ b/app/assets/javascripts/notes/components/note_awards_list.vue @@ -30,6 +30,11 @@ export default { type: Boolean, required: true, }, + defaultAwards: { + type: Array, + required: false, + default: () => [], + }, }, computed: { ...mapGetters(['getUserData']), @@ -62,6 +67,7 @@ export default { :awards="awards" :can-award-emoji="canAwardEmoji" :current-user-id="getUserData.id" + :default-awards="defaultAwards" @award="handleAward($event)" /> diff --git a/app/assets/javascripts/notes/components/note_body.vue b/app/assets/javascripts/notes/components/note_body.vue index 8e2c343de97..7c5d8525e9d 100644 --- a/app/assets/javascripts/notes/components/note_body.vue +++ b/app/assets/javascripts/notes/components/note_body.vue @@ -3,7 +3,7 @@ import { escape } from 'lodash'; // eslint-disable-next-line no-restricted-imports import { mapActions, mapGetters, mapState } from 'vuex'; import SafeHtml from '~/vue_shared/directives/safe_html'; -import { __ } from '~/locale'; +import { __, sprintf } from '~/locale'; import Suggestions from '~/vue_shared/components/markdown/suggestions.vue'; import { renderGFM } from '~/behaviors/markdown/render_gfm'; import NoteAttachment from './note_attachment.vue'; @@ -107,6 +107,33 @@ export default { return escape(suggestion); }, + isDuoFirstReviewComment() { + // Must be a Duo bot comment of type DiffNote + if (this.note.author.user_type !== 'duo_code_review_bot' || this.note.type !== 'DiffNote') { + return false; + } + // Get the discussion + const discussion = this.getDiscussion(this.note.discussion_id); + // If can't get discussion or this is not the first note, don't show feedback + return discussion?.notes?.length > 0 && discussion.notes[0].id === this.note.id; + }, + defaultAwardsList() { + return this.isDuoFirstReviewComment ? ['thumbsup', 'thumbsdown'] : []; + }, + duoFeedbackText() { + return sprintf( + __( + 'Rate this response %{separator} %{codeStart}%{botUser}%{codeEnd} in reply for more questions', + ), + { + separator: '•', + codeStart: '', + botUser: '@GitLabDuo', + codeEnd: '', + }, + false, + ); + }, }, watch: { note: { @@ -226,13 +253,19 @@ export default { :action-text="__('Edited')" class="note_edited_ago" /> +
diff --git a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue index 0e3e001614b..3ce5e5ab991 100644 --- a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue +++ b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue @@ -33,6 +33,7 @@ import { SIGNATURE_BADGE_TOOLTIP, DOCKER_MEDIA_TYPE, OCI_MEDIA_TYPE, + MinimumAccessLevelText, } from '../../constants/index'; import SignatureDetailsModal from './signature_details_modal.vue'; @@ -172,10 +173,10 @@ export default { return `${this.tag.name}_badge`; }, accessLevelForDelete() { - return this.tag.protection?.minimumAccessLevelForDelete; + return MinimumAccessLevelText[this.tag.protection?.minimumAccessLevelForDelete]; }, accessLevelForPush() { - return this.tag.protection?.minimumAccessLevelForPush; + return MinimumAccessLevelText[this.tag.protection?.minimumAccessLevelForPush]; }, }, }; @@ -216,10 +217,16 @@ export default { {{ s__('ContainerRegistry|This tag is protected') }}

- {{ s__('ContainerRegistry|Minimum role to push: ') }} - {{ accessLevelForPush }} - {{ s__('ContainerRegistry|Minimum role to delete: ') }} - {{ accessLevelForDelete }} + diff --git a/app/assets/javascripts/packages_and_registries/container_registry/explorer/constants/details.js b/app/assets/javascripts/packages_and_registries/container_registry/explorer/constants/details.js index 78e59c5c0f1..db796af3e70 100644 --- a/app/assets/javascripts/packages_and_registries/container_registry/explorer/constants/details.js +++ b/app/assets/javascripts/packages_and_registries/container_registry/explorer/constants/details.js @@ -177,3 +177,9 @@ export const PACKAGE_DELETE_HELP_PAGE_PATH = helpPagePath( export const DOCKER_MEDIA_TYPE = 'application/vnd.docker.distribution.manifest.list.v2+json'; export const OCI_MEDIA_TYPE = 'application/vnd.oci.image.index.v1+json'; + +export const MinimumAccessLevelText = { + ADMIN: s__('AdminUsers|Administrator'), + MAINTAINER: __('Maintainer'), + OWNER: __('Owner'), +}; diff --git a/app/assets/javascripts/packages_and_registries/settings/project/components/container_protection_tag_rules.vue b/app/assets/javascripts/packages_and_registries/settings/project/components/container_protection_tag_rules.vue index c5c587883c8..ae3d20b5488 100644 --- a/app/assets/javascripts/packages_and_registries/settings/project/components/container_protection_tag_rules.vue +++ b/app/assets/javascripts/packages_and_registries/settings/project/components/container_protection_tag_rules.vue @@ -319,23 +319,25 @@ export default {

diff --git a/app/graphql/types/deployment_tag_type.rb b/app/graphql/types/deployment_tag_type.rb index abc52a2d312..7e56c155152 100644 --- a/app/graphql/types/deployment_tag_type.rb +++ b/app/graphql/types/deployment_tag_type.rb @@ -9,15 +9,15 @@ module Types field :name, GraphQL::Types::String, - description: 'Name of this git tag.' + description: 'Name of the git tag.' field :path, GraphQL::Types::String, - description: 'Path for this tag.' + description: 'Path for the tag.' field :web_path, GraphQL::Types::String, - description: 'Web path for this tag.' + description: 'Web path for the tag.' end # rubocop:enable Graphql/AuthorizeTypes end diff --git a/app/graphql/types/design_management/design_at_version_type.rb b/app/graphql/types/design_management/design_at_version_type.rb index cbc5f23a230..6169965c5e7 100644 --- a/app/graphql/types/design_management/design_at_version_type.rb +++ b/app/graphql/types/design_management/design_at_version_type.rb @@ -18,7 +18,7 @@ module Types field :version, Types::DesignManagement::VersionType, null: false, - description: 'Version this design-at-versions is pinned to.' + description: 'Version the design-at-versions is pinned to.' field :design, Types::DesignManagement::DesignType, diff --git a/app/graphql/types/design_management/design_fields.rb b/app/graphql/types/design_management/design_fields.rb index b99d370924e..c475291808a 100644 --- a/app/graphql/types/design_management/design_fields.rb +++ b/app/graphql/types/design_management/design_fields.rb @@ -7,7 +7,7 @@ module Types field_class Types::BaseField - field :id, GraphQL::Types::ID, description: 'ID of this design.', null: false + field :id, GraphQL::Types::ID, description: 'ID of the design.', null: false field :project, Types::ProjectType, null: false, description: 'Project the design belongs to.' field :issue, Types::IssueType, null: false, description: 'Issue the design belongs to.' field :filename, GraphQL::Types::String, null: false, description: 'Filename of the design.' @@ -23,16 +23,16 @@ module Types null: false, calls_gitaly: true, extras: [:parent], - description: 'Diff refs for this design.' + description: 'Diff refs for the design.' field :event, Types::DesignManagement::DesignVersionEventEnum, null: false, extras: [:parent], - description: 'How this design was changed in the current version.' + description: 'How the design was changed in the current version.' field :notes_count, GraphQL::Types::Int, null: false, method: :user_notes_count, - description: 'Total count of user-created notes for this design.' + description: 'Total count of user-created notes for the design.' def diff_refs(parent:) version = cached_stateful_version(parent) diff --git a/app/graphql/types/diff_stats_type.rb b/app/graphql/types/diff_stats_type.rb index 8007639e55b..bbab9b2260e 100644 --- a/app/graphql/types/diff_stats_type.rb +++ b/app/graphql/types/diff_stats_type.rb @@ -9,9 +9,9 @@ module Types description 'Changes to a single file' field :additions, GraphQL::Types::Int, null: false, - description: 'Number of lines added to this file.' + description: 'Number of lines added to the file.' field :deletions, GraphQL::Types::Int, null: false, - description: 'Number of lines deleted from this file.' + description: 'Number of lines deleted from the file.' field :path, GraphQL::Types::String, null: false, description: 'File path, relative to repository root.' diff --git a/app/graphql/types/event_type.rb b/app/graphql/types/event_type.rb index 00cfe77eda6..3ebcd6ec43e 100644 --- a/app/graphql/types/event_type.rb +++ b/app/graphql/types/event_type.rb @@ -14,7 +14,7 @@ module Types null: false field :author, Types::UserType, - description: 'Author of this event.', + description: 'Author of the event.', null: false field :action, Types::EventActionEnum, @@ -22,19 +22,19 @@ module Types null: false field :created_at, Types::TimeType, - description: 'When this event was created.', + description: 'When the event was created.', null: false field :updated_at, Types::TimeType, - description: 'When this event was updated.', + description: 'When the event was updated.', null: false field :project, Types::ProjectType, - description: 'Project of this event.', + description: 'Project of the event.', null: true field :target, Types::Users::EventTargetType, - description: 'The target of the event', + description: 'Target of the event.', calls_gitaly: true def author diff --git a/app/graphql/types/group_type.rb b/app/graphql/types/group_type.rb index 68ceae4efa4..e4e46433d80 100644 --- a/app/graphql/types/group_type.rb +++ b/app/graphql/types/group_type.rb @@ -40,7 +40,7 @@ module Types field :share_with_group_lock, type: GraphQL::Types::Boolean, null: true, - description: 'Indicates if sharing a project with another group within this group is prevented.' + description: 'Indicates if sharing a project with another group within the group is prevented.' field :project_creation_level, type: GraphQL::Types::String, @@ -57,7 +57,7 @@ module Types field :require_two_factor_authentication, type: GraphQL::Types::Boolean, null: true, - description: 'Indicates if all users in this group are required to set up two-factor authentication.' + description: 'Indicates if all users in the group are required to set up two-factor authentication.' field :two_factor_grace_period, type: GraphQL::Types::Int, @@ -67,7 +67,7 @@ module Types field :auto_devops_enabled, type: GraphQL::Types::Boolean, null: true, - description: 'Indicates whether Auto DevOps is enabled for all projects within this group.' + description: 'Indicates whether Auto DevOps is enabled for all projects within the group.' field :emails_disabled, type: GraphQL::Types::Boolean, @@ -81,7 +81,7 @@ module Types field :max_access_level, Types::AccessLevelType, null: false, - description: 'The maximum access level of the current user in the group.' + description: 'Maximum access level of the current user in the group.' field :mentions_disabled, type: GraphQL::Types::Boolean, @@ -139,7 +139,7 @@ module Types field :label, Types::LabelType, null: true, - description: 'Label available on this group.' do + description: 'Label available on the group.' do argument :title, type: GraphQL::Types::String, required: true, @@ -238,17 +238,17 @@ module Types field :descendant_groups_count, GraphQL::Types::Int, null: false, - description: 'Count of direct descendant groups of this group.' + description: 'Count of direct descendant groups of the group.' field :group_members_count, GraphQL::Types::Int, null: false, - description: 'Count of direct members of this group.' + description: 'Count of direct members of the group.' field :projects_count, GraphQL::Types::Int, null: false, - description: 'Count of direct projects in this group.' + description: 'Count of direct projects in the group.' field :pipeline_analytics, Types::Ci::AnalyticsType, null: true, @@ -339,7 +339,7 @@ module Types GraphQL::Types::Boolean, null: true, method: :math_rendering_limits_enabled?, - description: 'Indicates if math rendering limits are used for this group.' + description: 'Indicates if math rendering limits are used for the group.' field :is_linked_to_subscription, GraphQL::Types::Boolean, diff --git a/app/graphql/types/issue_type.rb b/app/graphql/types/issue_type.rb index 48081d397a2..07fdc994a5a 100644 --- a/app/graphql/types/issue_type.rb +++ b/app/graphql/types/issue_type.rb @@ -126,7 +126,7 @@ module Types description: 'Task completion status of the issue.' field :design_collection, Types::DesignManagement::DesignCollectionType, null: true, - description: 'Collection of design images associated with this issue.' + description: 'Collection of design images associated with the issue.' field :type, Types::IssueTypeEnum, null: true, method: :issue_type, @@ -135,7 +135,7 @@ module Types field :alert_management_alert, Types::AlertManagement::AlertType, null: true, - description: 'Alert associated to this issue.', + description: 'Alert associated to the issue.', deprecated: { reason: 'Use `alert_management_alerts`', milestone: '15.6' } field :alert_management_alerts, @@ -155,7 +155,7 @@ module Types description: 'Updated Issue after it got moved to another project.' field :closed_as_duplicate_of, Types::IssueType, null: true, - description: 'Issue this issue was closed as a duplicate of.' + description: 'Issue the issue was closed as a duplicate of.' field :create_note_email, GraphQL::Types::String, null: true, description: 'User specific email address for the issue.' diff --git a/app/graphql/types/issues/negated_issue_filter_input_type.rb b/app/graphql/types/issues/negated_issue_filter_input_type.rb index 79dd3719fe6..791780d8236 100644 --- a/app/graphql/types/issues/negated_issue_filter_input_type.rb +++ b/app/graphql/types/issues/negated_issue_filter_input_type.rb @@ -19,10 +19,10 @@ module Types description: 'List of IIDs of issues to exclude. For example, `[1, 2]`.' argument :label_name, [GraphQL::Types::String], required: false, - description: 'Labels not applied to this issue.' + description: 'Labels not applied to the issue.' argument :milestone_title, [GraphQL::Types::String], required: false, - description: 'Milestone not applied to this issue.' + description: 'Milestone not applied to the issue.' argument :milestone_wildcard_id, ::Types::NegatedMilestoneWildcardIdEnum, required: false, description: 'Filter by negated milestone wildcard values.' diff --git a/app/graphql/types/merge_request_type.rb b/app/graphql/types/merge_request_type.rb index 7cf61c0f3c5..eec8378dbf7 100644 --- a/app/graphql/types/merge_request_type.rb +++ b/app/graphql/types/merge_request_type.rb @@ -25,9 +25,9 @@ module Types field :diff_head_sha, GraphQL::Types::String, null: true, calls_gitaly: true, description: 'Diff head SHA of the merge request.' field :diff_refs, Types::DiffRefsType, null: true, - description: 'References of the base SHA, the head SHA, and the start SHA for this merge request.' + description: 'References of the base SHA, the head SHA, and the start SHA for the merge request.' field :diff_stats, [Types::DiffStatsType], null: true, calls_gitaly: true, - description: 'Details about which files were changed in this merge request.' do + description: 'Details about which files were changed in the merge request.' do argument :path, GraphQL::Types::String, required: false, description: 'Specific file path.' end field :draft, GraphQL::Types::Boolean, method: :draft?, null: false, @@ -75,7 +75,7 @@ module Types field :default_squash_commit_message, GraphQL::Types::String, null: true, calls_gitaly: true, description: 'Default squash commit message of the merge request.' field :diff_stats_summary, Types::DiffStatsSummaryType, null: true, calls_gitaly: true, - description: 'Summary of which files were changed in this merge request.' + description: 'Summary of which files were changed in the merge request.' field :diverged_from_target_branch, GraphQL::Types::Boolean, null: false, calls_gitaly: true, method: :diverged_from_target_branch?, @@ -176,7 +176,7 @@ module Types complexity: 5, description: 'Assignees of the merge request.' field :author, Types::MergeRequests::AuthorType, null: true, - description: 'User who created this merge request.' + description: 'User who created the merge request.' field :discussion_locked, GraphQL::Types::Boolean, description: 'Indicates if comments on the merge request are locked to members only.', null: false @@ -215,7 +215,7 @@ module Types complexity: 5, description: 'Users from whom a review has been requested.' field :subscribed, GraphQL::Types::Boolean, method: :subscribed?, null: false, complexity: 5, - description: 'Indicates if the currently logged in user is subscribed to this merge request.' + description: 'Indicates if the currently logged in user is subscribed to the merge request.' field :supports_lock_on_merge, GraphQL::Types::Boolean, null: false, method: :supports_lock_on_merge?, description: 'Indicates if the merge request supports locked labels.' field :task_completion_status, Types::TaskCompletionStatus, null: false, @@ -245,7 +245,7 @@ module Types field :has_ci, GraphQL::Types::Boolean, null: false, method: :has_ci?, description: 'Indicates if the merge request has CI.' field :merge_user, Types::UserType, null: true, - description: 'User who merged this merge request or set it to auto-merge.' + description: 'User who merged the merge request or set it to auto-merge.' field :mergeable, GraphQL::Types::Boolean, null: false, method: :mergeable?, calls_gitaly: true, description: 'Indicates if the merge request is mergeable.' field :security_auto_fix, diff --git a/app/graphql/types/merge_requests/interacts_with_merge_request.rb b/app/graphql/types/merge_requests/interacts_with_merge_request.rb index e826c8d5009..aed6f0256d7 100644 --- a/app/graphql/types/merge_requests/interacts_with_merge_request.rb +++ b/app/graphql/types/merge_requests/interacts_with_merge_request.rb @@ -10,7 +10,7 @@ module Types type: ::Types::UserMergeRequestInteractionType, null: true, extras: [:parent], - description: "Details of this user's interactions with the merge request." + description: "Details of the user's interactions with the merge request." end def merge_request_interaction(parent:, id: nil) diff --git a/app/graphql/types/milestone_sort_enum.rb b/app/graphql/types/milestone_sort_enum.rb index e70bd07f791..061daa88d2f 100644 --- a/app/graphql/types/milestone_sort_enum.rb +++ b/app/graphql/types/milestone_sort_enum.rb @@ -8,12 +8,12 @@ module Types value 'DUE_DATE_ASC', 'Milestone due date by ascending order.', value: :due_date_asc value 'DUE_DATE_DESC', 'Milestone due date by descending order.', value: :due_date_desc value 'EXPIRED_LAST_DUE_DATE_ASC', - 'Group milestones in this order: non-expired milestones with due dates, non-expired milestones ' \ - 'without due dates and expired milestones then sort by due date in ascending order.', - value: :expired_last_due_date_asc + value: :expired_last_due_date_asc, + description: 'Group milestones in the order: non-expired milestones with due dates, non-expired milestones ' \ + 'without due dates and expired milestones then sort by due date in ascending order.' value 'EXPIRED_LAST_DUE_DATE_DESC', - 'Group milestones in this order: non-expired milestones with due dates, non-expired milestones ' \ - 'without due dates and expired milestones then sort by due date in descending order.', - value: :expired_last_due_date_desc + value: :expired_last_due_date_desc, + description: 'Group milestones in the order: non-expired milestones with due dates, non-expired milestones ' \ + 'without due dates and expired milestones then sort by due date in descending order.' end end diff --git a/app/graphql/types/milestone_type.rb b/app/graphql/types/milestone_type.rb index 68a9299b387..9a99458dd85 100644 --- a/app/graphql/types/milestone_type.rb +++ b/app/graphql/types/milestone_type.rb @@ -70,7 +70,7 @@ module Types field :releases, ::Types::ReleaseType.connection_type, null: true, - description: 'Releases associated with this milestone.' + description: 'Releases associated with the milestone.' def stats milestone diff --git a/app/helpers/snippets_helper.rb b/app/helpers/snippets_helper.rb index dc4db2c2021..efe87500b4c 100644 --- a/app/helpers/snippets_helper.rb +++ b/app/helpers/snippets_helper.rb @@ -76,10 +76,19 @@ module SnippetsHelper tooltip = n_('%d file', '%d files', file_count) % file_count - tag.span(class: 'file_count', title: tooltip, data: { toggle: 'tooltip', container: 'body' }) do - concat(sprite_icon('documents', css_class: 'gl-align-middle')) + render Pajamas::ButtonComponent.new( + category: :tertiary, + size: :small, + icon: 'documents', + button_options: { + title: tooltip, + data: { toggle: 'tooltip', container: 'body' }, + aria: { label: tooltip }, + class: "file_count gl-min-h-0 gl-min-w-0 !gl-bg-transparent !gl-p-0" + } + ) do concat(' ') - concat(file_count) + concat(file_count.to_s) end end diff --git a/app/models/concerns/web_hooks/hook.rb b/app/models/concerns/web_hooks/hook.rb index 666bc95dbac..5660c697148 100644 --- a/app/models/concerns/web_hooks/hook.rb +++ b/app/models/concerns/web_hooks/hook.rb @@ -65,6 +65,8 @@ module WebHooks validates :interpolated_url, public_url: true, if: ->(hook) { hook.url_variables? && hook.errors.empty? } validates :custom_headers, json_schema: { filename: 'web_hooks_custom_headers' } validates :custom_webhook_template, length: { maximum: 4096 } + validates :name, length: { maximum: 255 } + validates :description, length: { maximum: 2048 } enum :branch_filter_strategy, { wildcard: 0, diff --git a/app/models/packages/conan/file_metadatum.rb b/app/models/packages/conan/file_metadatum.rb index c8de1df5eff..65ff3e0e156 100644 --- a/app/models/packages/conan/file_metadatum.rb +++ b/app/models/packages/conan/file_metadatum.rb @@ -23,6 +23,7 @@ class Packages::Conan::FileMetadatum < ApplicationRecord PACKAGE_FILES = ::Gitlab::Regex::Packages::CONAN_PACKAGE_FILES PACKAGE_BINARY = 'conan_package.tgz' CONAN_MANIFEST = 'conanmanifest.txt' + CONANINFO_TXT = 'conaninfo.txt' def recipe_revision_value recipe_revision&.revision || DEFAULT_REVISION diff --git a/app/services/packages/conan/create_package_file_service.rb b/app/services/packages/conan/create_package_file_service.rb index e1c35b4e156..98bd50b1e39 100644 --- a/app/services/packages/conan/create_package_file_service.rb +++ b/app/services/packages/conan/create_package_file_service.rb @@ -34,6 +34,10 @@ module Packages package_file.save! end + if package_file.file_name == ::Packages::Conan::FileMetadatum::CONANINFO_TXT && Feature.enabled?(:parse_conan_metadata_on_upload, Project.actor_from_id(package_file.project_id)) + ::Packages::Conan::ProcessPackageFileWorker.perform_async(package_file.id) + end + ServiceResponse.success(payload: { package_file: package_file }) rescue ActiveRecord::RecordInvalid => e ServiceResponse.error(message: e.message, reason: :invalid_package_file) diff --git a/app/services/packages/conan/metadata_extraction_service.rb b/app/services/packages/conan/metadata_extraction_service.rb new file mode 100644 index 00000000000..1d8a78cce53 --- /dev/null +++ b/app/services/packages/conan/metadata_extraction_service.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +module Packages + module Conan + class MetadataExtractionService + include Gitlab::Utils::StrongMemoize + + ExtractionError = Class.new(StandardError) + + SECTION_HEADER_REGEX = /^\[(\w{1,50})\]$/ + RECIPE_HASH_SECTION = 'recipe_hash' + ALLOWED_SECTIONS = %w[requires recipe_hash options settings].freeze + + def initialize(package_file) + @package_file = package_file + end + + def execute + result = parse_conaninfo_content + + package_reference.update!(info: result) + ServiceResponse.success + rescue ActiveRecord::RecordInvalid => e + error_message = e.record.errors.full_messages.first + raise ExtractionError, "conaninfo.txt file too large" if error_message.include?("Info conaninfo is too large") + + raise ExtractionError, "conaninfo.txt metadata failedto be saved: #{error_message}" + end + + private + + attr_reader :package_file + + def parse_conaninfo_content + package_file.file.use_open_file(unlink_early: false) do |open_file| + parse_file_contents(File.open(open_file.file_path)) + end + rescue StandardError => e + raise ExtractionError, "Error while parsing conaninfo.txt: #{e.message}" + end + + def parse_file_contents(file) + result = {} + current_section = current_data = nil + + file.each do |line| + line = line.strip + next if line.empty? + + section_name = section_name_from(line) + if section_name + if current_section && current_data && allowed_section?(current_section) + result[current_section] = current_data + end + + current_section = section_name + current_data = nil + elsif current_section && allowed_section?(current_section) + validate_recipe_hash_section(current_section, current_data) + current_data = process_section_line(current_section, line, current_data) + end + end + + result[current_section] = current_data if current_section && current_data && allowed_section?(current_section) + result + end + + def validate_recipe_hash_section(section, data) + return unless section == RECIPE_HASH_SECTION && data + + raise ExtractionError, 'The recipe_hash section cannot have multiple lines' + end + + def process_section_line(section, line, data) + return line if section == RECIPE_HASH_SECTION + return process_key_value_line(line, data) if line.include?('=') + + process_array_line(line, data) + end + + def process_key_value_line(line, data) + data ||= {} + key, value = line.split('=', 2).map(&:strip) + raise ExtractionError, "Invalid key-value line: #{line}" if key.empty? || value.empty? + + data[key] = value + data + end + + def process_array_line(line, data) + data ||= [] + data << line + end + + def allowed_section?(section) + strong_memoize_with(:allowed_section, section) do + ALLOWED_SECTIONS.include?(section) + end + end + + def section_name_from(line) + section = line.match(SECTION_HEADER_REGEX)&.captures&.first + raise ExtractionError, "Invalid section header: #{line}" if section.nil? && line.start_with?('[') + + section + end + + def package_reference + package_file.conan_file_metadatum.package_reference + end + end + end +end diff --git a/app/validators/json_schemas/conan_package_info.json b/app/validators/json_schemas/conan_package_info.json index 3e2df2d8bc0..8f160732928 100644 --- a/app/validators/json_schemas/conan_package_info.json +++ b/app/validators/json_schemas/conan_package_info.json @@ -1,33 +1,28 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "description": "Conan Info Schema", - "oneOf": [ - { - "type": "object", - "additionalProperties": false + "type": "object", + "properties": { + "recipe_hash": { + "type": "string" }, - { + "settings": { "type": "object", - "properties": { - "settings": { - "type": "object" - }, - "requires": { - "type": "array", - "items": { - "type": "string" - } - }, - "options": { - "type": "object" - } - }, - "required": [ - "settings", - "requires", - "options" - ], - "additionalProperties": true + "additionalProperties": { + "type": "string" + } + }, + "options": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "requires": { + "type": "array", + "items": { + "type": "string" + } } - ] + } } diff --git a/app/views/projects/readme_templates/default.md.tt b/app/views/projects/readme_templates/default.md.tt index 7a21473bbea..780a2e12278 100644 --- a/app/views/projects/readme_templates/default.md.tt +++ b/app/views/projects/readme_templates/default.md.tt @@ -12,7 +12,7 @@ Already a pro? Just edit this README.md and make it your own. Want to make it ea ## Add your files - [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +- [ ] [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command: ``` cd existing_repo diff --git a/app/views/shared/snippets/_snippet.html.haml b/app/views/shared/snippets/_snippet.html.haml index 6e19f2b199b..2989d379268 100644 --- a/app/views/shared/snippets/_snippet.html.haml +++ b/app/views/shared/snippets/_snippet.html.haml @@ -26,12 +26,11 @@ = _('created %{timeAgo} by %{author}').html_safe % { timeAgo: created_at, author: author } .sm:gl-flex.gl-flex-col.gl-items-end{ data: { testid: 'snippet-file-count-content', qa_snippet_files: snippet.statistics&.file_count } } - .gl-flex.gl-gap-4.gl-items-center + .gl-flex.gl-gap-3.gl-items-center - if notes_count > 0 - %span.has-tooltip{ title: _('Comments') } - = sprite_icon('comments') + = render Pajamas::ButtonComponent.new(category: :tertiary, size: :small, icon: 'comments', button_options: { class: 'has-tooltip !gl-bg-transparent !gl-p-0', title: _('Comments'), aria: { label: _('Comments') } }) do = notes_count = snippet_file_count(snippet) - %span.has-tooltip{ title: visibility_level_label(snippet.visibility_level), data: { testid: 'snippet-visibility-content', qa_snippet_visibility: visibility_level_label(snippet.visibility_level) } } + = render Pajamas::ButtonComponent.new(category: :tertiary, size: :small, button_options: { class: 'has-tooltip !gl-bg-transparent !gl-p-0', title: _(visibility_level_label(snippet.visibility_level)), aria: { label: _(snippet.visibility_level) }, data: { testid: 'snippet-visibility-content', qa_snippet_visibility: visibility_level_label(snippet.visibility_level) } }) do = visibility_level_icon(snippet.visibility_level) .gl-whitespace-nowrap.gl-text-sm.gl-text-subtle= _('updated %{timeAgo}').html_safe % { timeAgo: time_ago_with_tooltip(snippet.updated_at, placement: 'bottom') } diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 0140d207b76..4d3d0fa852d 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -2134,6 +2134,16 @@ :tags: - :cronjob_child :queue_namespace: :package_cleanup +- :name: package_repositories:packages_conan_process_package_file + :worker_name: Packages::Conan::ProcessPackageFileWorker + :feature_category: :package_registry + :has_external_dependencies: false + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: true + :tags: [] + :queue_namespace: :package_repositories - :name: package_repositories:packages_debian_generate_distribution :worker_name: Packages::Debian::GenerateDistributionWorker :feature_category: :package_registry diff --git a/app/workers/concerns/packages/error_handling.rb b/app/workers/concerns/packages/error_handling.rb index a1b1b58aad5..1ca125ee14f 100644 --- a/app/workers/concerns/packages/error_handling.rb +++ b/app/workers/concerns/packages/error_handling.rb @@ -17,7 +17,8 @@ module Packages ::Packages::Rubygems::ProcessGemService::ExtractionError, ::Packages::Rubygems::ProcessGemService::InvalidMetadataError, ::Packages::Npm::ProcessPackageFileService::ExtractionError, - ::Packages::Npm::CheckManifestCoherenceService::MismatchError + ::Packages::Npm::CheckManifestCoherenceService::MismatchError, + ::Packages::Conan::MetadataExtractionService::ExtractionError ].freeze def process_package_file_error(package_file:, exception:, extra_log_payload: {}) diff --git a/app/workers/packages/conan/process_package_file_worker.rb b/app/workers/packages/conan/process_package_file_worker.rb new file mode 100644 index 00000000000..0c451e2de91 --- /dev/null +++ b/app/workers/packages/conan/process_package_file_worker.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module Packages + module Conan + class ProcessPackageFileWorker + include ApplicationWorker + + data_consistency :sticky + queue_namespace :package_repositories + feature_category :package_registry + deduplicate :until_executed + idempotent! + + def perform(package_file_id) + package_file = ::Packages::PackageFile.find_by_id(package_file_id) + return unless package_file + + ::Packages::Conan::MetadataExtractionService.new(package_file).execute + rescue StandardError => exception + logger.warn( + message: "Error processing conaninfo.txt file", + error: exception.message, + package_file: package_file.id, + project_id: package_file.project_id, + package_name: package_file.package.name, + package_version: package_file.package.version + ) + end + end + end +end diff --git a/config/feature_flags/gitlab_com_derisk/parse_conan_metadata_on_upload.yml b/config/feature_flags/gitlab_com_derisk/parse_conan_metadata_on_upload.yml new file mode 100644 index 00000000000..ab0715d3e40 --- /dev/null +++ b/config/feature_flags/gitlab_com_derisk/parse_conan_metadata_on_upload.yml @@ -0,0 +1,9 @@ +--- +name: parse_conan_metadata_on_upload +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/33892 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178728 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/523693 +milestone: '17.10' +group: group::package registry +type: gitlab_com_derisk +default_enabled: false diff --git a/config/feature_flags/gitlab_com_derisk/use_primary_and_secondary_stores_for_sessions.yml b/config/feature_flags/gitlab_com_derisk/use_primary_and_secondary_stores_for_sessions.yml new file mode 100644 index 00000000000..a94f8ae3249 --- /dev/null +++ b/config/feature_flags/gitlab_com_derisk/use_primary_and_secondary_stores_for_sessions.yml @@ -0,0 +1,9 @@ +--- +name: use_primary_and_secondary_stores_for_sessions +feature_issue_url: https://gitlab.com/gitlab-com/gl-infra/data-access/durability/team/-/issues/28 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175735 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/509337 +milestone: '17.9' +group: group::durability +type: gitlab_com_derisk +default_enabled: false diff --git a/config/feature_flags/gitlab_com_derisk/use_primary_store_as_default_for_sessions.yml b/config/feature_flags/gitlab_com_derisk/use_primary_store_as_default_for_sessions.yml new file mode 100644 index 00000000000..c2f8b4b29dd --- /dev/null +++ b/config/feature_flags/gitlab_com_derisk/use_primary_store_as_default_for_sessions.yml @@ -0,0 +1,9 @@ +--- +name: use_primary_store_as_default_for_sessions +feature_issue_url: https://gitlab.com/gitlab-com/gl-infra/data-access/durability/team/-/issues/28 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175735 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/509338 +milestone: '17.9' +group: group::durability +type: gitlab_com_derisk +default_enabled: false diff --git a/config/sidekiq_queues.yml b/config/sidekiq_queues.yml index b6ae765d6a9..7f2dfcbdcf0 100644 --- a/config/sidekiq_queues.yml +++ b/config/sidekiq_queues.yml @@ -979,6 +979,10 @@ - 1 - - vulnerabilities_archival_archive - 1 +- - vulnerabilities_archival_export_export + - 1 +- - vulnerabilities_archival_export_purge + - 1 - - vulnerabilities_mark_dropped_as_resolved - 1 - - vulnerabilities_namespace_historical_statistics_process_transfer_events diff --git a/db/docs/batched_background_migrations/backfill_ci_runners_partitioned_table.yml b/db/docs/batched_background_migrations/backfill_ci_runners_partitioned_table.yml index 6a0ba603c57..969d6922558 100644 --- a/db/docs/batched_background_migrations/backfill_ci_runners_partitioned_table.yml +++ b/db/docs/batched_background_migrations/backfill_ci_runners_partitioned_table.yml @@ -4,5 +4,5 @@ description: This migration copies runners from ci_runners to the new partitione feature_category: runner introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166520 milestone: '17.8' -queued_migration_version: 20250103092422 +queued_migration_version: 20241219100359 finalized_by: 20250113151324 diff --git a/db/docs/batched_background_migrations/backfill_snippet_repositories_snippet_organization_id.yml b/db/docs/batched_background_migrations/backfill_snippet_repositories_snippet_organization_id.yml new file mode 100644 index 00000000000..121472bfeee --- /dev/null +++ b/db/docs/batched_background_migrations/backfill_snippet_repositories_snippet_organization_id.yml @@ -0,0 +1,8 @@ +--- +migration_job_name: BackfillSnippetRepositoriesSnippetOrganizationId +description: Backfills sharding key `snippet_repositories.snippet_organization_id` from `snippets`. +feature_category: source_code_management +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175410 +milestone: '17.10' +queued_migration_version: 20241211134715 +finalized_by: # version of the migration that finalized this BBM diff --git a/db/docs/batched_background_migrations/backfill_snippet_repositories_snippet_project_id.yml b/db/docs/batched_background_migrations/backfill_snippet_repositories_snippet_project_id.yml new file mode 100644 index 00000000000..84acd05fa7c --- /dev/null +++ b/db/docs/batched_background_migrations/backfill_snippet_repositories_snippet_project_id.yml @@ -0,0 +1,8 @@ +--- +migration_job_name: BackfillSnippetRepositoriesSnippetProjectId +description: Backfills sharding key `snippet_repositories.snippet_project_id` from `snippets`. +feature_category: source_code_management +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175410 +milestone: '17.10' +queued_migration_version: 20241211134710 +finalized_by: # version of the migration that finalized this BBM diff --git a/db/docs/batched_background_migrations/backfill_snippet_user_mentions_snippet_organization_id.yml b/db/docs/batched_background_migrations/backfill_snippet_user_mentions_snippet_organization_id.yml new file mode 100644 index 00000000000..a8ae221afab --- /dev/null +++ b/db/docs/batched_background_migrations/backfill_snippet_user_mentions_snippet_organization_id.yml @@ -0,0 +1,8 @@ +--- +migration_job_name: BackfillSnippetUserMentionsSnippetOrganizationId +description: Backfills sharding key `snippet_user_mentions.snippet_organization_id` from `snippets`. +feature_category: source_code_management +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180836 +milestone: '17.10' +queued_migration_version: 20250209004158 +finalized_by: # version of the migration that finalized this BBM diff --git a/db/docs/batched_background_migrations/backfill_snippet_user_mentions_snippet_project_id.yml b/db/docs/batched_background_migrations/backfill_snippet_user_mentions_snippet_project_id.yml new file mode 100644 index 00000000000..6b7aa11d0c9 --- /dev/null +++ b/db/docs/batched_background_migrations/backfill_snippet_user_mentions_snippet_project_id.yml @@ -0,0 +1,8 @@ +--- +migration_job_name: BackfillSnippetUserMentionsSnippetProjectId +description: Backfills sharding key `snippet_user_mentions.snippet_project_id` from `snippets`. +feature_category: source_code_management +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180836 +milestone: '17.10' +queued_migration_version: 20250209004153 +finalized_by: # version of the migration that finalized this BBM diff --git a/db/docs/batched_background_migrations/copy_runner_taggings.yml b/db/docs/batched_background_migrations/copy_runner_taggings.yml index 63406a86aca..4efc879c59a 100644 --- a/db/docs/batched_background_migrations/copy_runner_taggings.yml +++ b/db/docs/batched_background_migrations/copy_runner_taggings.yml @@ -4,5 +4,5 @@ description: Copy taggings data for the ci_runners table into the new sharded ci feature_category: runner introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175578 milestone: '17.8' -queued_migration_version: 20241219100359 +queued_migration_version: 20250103092422 finalized_by: 20250114135714 diff --git a/db/docs/batched_background_migrations/remove_orphaned_vulnerability_notes_batched_migration.yml b/db/docs/batched_background_migrations/remove_orphaned_vulnerability_notes_batched_migration.yml new file mode 100644 index 00000000000..b2b5c223f90 --- /dev/null +++ b/db/docs/batched_background_migrations/remove_orphaned_vulnerability_notes_batched_migration.yml @@ -0,0 +1,8 @@ +--- +migration_job_name: RemoveOrphanedVulnerabilityNotesBatchedMigration +description: Removes orphaned Notes for which the Vulnerability no longer exists. +feature_category: vulnerability_management +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180624 +milestone: '17.10' +queued_migration_version: 20250304184254 +finalized_by: # version of the migration that finalized this BBM diff --git a/db/docs/projects_branch_rules_merge_request_approval_settings.yml b/db/docs/projects_branch_rules_merge_request_approval_settings.yml new file mode 100644 index 00000000000..ef138f6b8ce --- /dev/null +++ b/db/docs/projects_branch_rules_merge_request_approval_settings.yml @@ -0,0 +1,13 @@ +--- +table_name: projects_branch_rules_merge_request_approval_settings +classes: + - Projects::BranchRules::MergeRequestApprovalSetting +feature_categories: + - source_code_management +description: Contains merge request approval settings for a protected branch +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183679 +milestone: '17.10' +gitlab_schema: gitlab_main_cell +sharding_key: + project_id: projects +table_size: small diff --git a/db/docs/snippet_repositories.yml b/db/docs/snippet_repositories.yml index 3d96ecc4ab2..40d10b5236b 100644 --- a/db/docs/snippet_repositories.yml +++ b/db/docs/snippet_repositories.yml @@ -28,3 +28,6 @@ desired_sharding_key: table: snippets sharding_key: organization_id belongs_to: snippet +desired_sharding_key_migration_job_name: +- BackfillSnippetRepositoriesSnippetProjectId +- BackfillSnippetRepositoriesSnippetOrganizationId diff --git a/db/docs/snippet_user_mentions.yml b/db/docs/snippet_user_mentions.yml index 6593be58448..b00fa10cc41 100644 --- a/db/docs/snippet_user_mentions.yml +++ b/db/docs/snippet_user_mentions.yml @@ -29,3 +29,6 @@ desired_sharding_key: table: snippets sharding_key: organization_id belongs_to: snippet +desired_sharding_key_migration_job_name: +- BackfillSnippetUserMentionsSnippetProjectId +- BackfillSnippetUserMentionsSnippetOrganizationId diff --git a/db/migrate/20241211134706_add_snippet_project_id_to_snippet_repositories.rb b/db/migrate/20241211134706_add_snippet_project_id_to_snippet_repositories.rb new file mode 100644 index 00000000000..17a81f99077 --- /dev/null +++ b/db/migrate/20241211134706_add_snippet_project_id_to_snippet_repositories.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddSnippetProjectIdToSnippetRepositories < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def change + add_column :snippet_repositories, :snippet_project_id, :bigint + end +end diff --git a/db/migrate/20241211134711_add_snippet_organization_id_to_snippet_repositories.rb b/db/migrate/20241211134711_add_snippet_organization_id_to_snippet_repositories.rb new file mode 100644 index 00000000000..bcc8b3eb764 --- /dev/null +++ b/db/migrate/20241211134711_add_snippet_organization_id_to_snippet_repositories.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddSnippetOrganizationIdToSnippetRepositories < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def change + add_column :snippet_repositories, :snippet_organization_id, :bigint + end +end diff --git a/db/migrate/20250209004149_add_snippet_project_id_to_snippet_user_mentions.rb b/db/migrate/20250209004149_add_snippet_project_id_to_snippet_user_mentions.rb new file mode 100644 index 00000000000..06e99cda5a6 --- /dev/null +++ b/db/migrate/20250209004149_add_snippet_project_id_to_snippet_user_mentions.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddSnippetProjectIdToSnippetUserMentions < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def change + add_column :snippet_user_mentions, :snippet_project_id, :bigint + end +end diff --git a/db/migrate/20250209004154_add_snippet_organization_id_to_snippet_user_mentions.rb b/db/migrate/20250209004154_add_snippet_organization_id_to_snippet_user_mentions.rb new file mode 100644 index 00000000000..f40b1e1c469 --- /dev/null +++ b/db/migrate/20250209004154_add_snippet_organization_id_to_snippet_user_mentions.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddSnippetOrganizationIdToSnippetUserMentions < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def change + add_column :snippet_user_mentions, :snippet_organization_id, :bigint + end +end diff --git a/db/migrate/20250304134327_index_vulnerability_archived_records_on_archive_id_and_id.rb b/db/migrate/20250304134327_index_vulnerability_archived_records_on_archive_id_and_id.rb new file mode 100644 index 00000000000..1ea2d6554b9 --- /dev/null +++ b/db/migrate/20250304134327_index_vulnerability_archived_records_on_archive_id_and_id.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class IndexVulnerabilityArchivedRecordsOnArchiveIdAndId < Gitlab::Database::Migration[2.2] + INDEX_NAME = 'index_vulnerability_archived_records_on_archive_id_and_id' + + disable_ddl_transaction! + milestone '17.10' + + def up + add_concurrent_index :vulnerability_archived_records, %i[archive_id id], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :vulnerability_archived_records, INDEX_NAME + end +end diff --git a/db/migrate/20250304134552_drop_index_from_vulnerability_archived_records_on_archive_id.rb b/db/migrate/20250304134552_drop_index_from_vulnerability_archived_records_on_archive_id.rb new file mode 100644 index 00000000000..6ffc1109545 --- /dev/null +++ b/db/migrate/20250304134552_drop_index_from_vulnerability_archived_records_on_archive_id.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class DropIndexFromVulnerabilityArchivedRecordsOnArchiveId < Gitlab::Database::Migration[2.2] + INDEX_NAME = 'index_vulnerability_archived_records_on_archive_id' + + disable_ddl_transaction! + milestone '17.10' + + def up + remove_concurrent_index_by_name :vulnerability_archived_records, INDEX_NAME + end + + def down + add_concurrent_index :vulnerability_archived_records, :archive_id, name: INDEX_NAME + end +end diff --git a/db/migrate/20250310162645_create_projects_branch_rules_merge_request_approval_settings.rb b/db/migrate/20250310162645_create_projects_branch_rules_merge_request_approval_settings.rb new file mode 100644 index 00000000000..fe86baf7be1 --- /dev/null +++ b/db/migrate/20250310162645_create_projects_branch_rules_merge_request_approval_settings.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class CreateProjectsBranchRulesMergeRequestApprovalSettings < Gitlab::Database::Migration[2.2] + milestone '17.10' + + PROTECTED_BRANCH_INDEX = 'idx_branch_rules_mr_approval_settings_on_protected_branch_id' + PROJECT_INDEX = 'idx_branch_rules_mr_approval_settings_on_project_id' + + def change + create_table :projects_branch_rules_merge_request_approval_settings do |t| # rubocop:disable Migration/EnsureFactoryForTable -- See https://gitlab.com/gitlab-org/gitlab/-/issues/504620 + t.timestamps_with_timezone null: false + t.belongs_to :protected_branch, foreign_key: false, null: false, index: { + unique: true, name: PROTECTED_BRANCH_INDEX + } + t.belongs_to :project, foreign_key: false, null: false, index: { name: PROJECT_INDEX } + t.boolean :prevent_author_approval, default: false, null: false + t.boolean :prevent_committer_approval, default: false, null: false + t.boolean :prevent_editing_approval_rules, default: false, null: false + t.boolean :require_reauthentication_to_approve, default: false, null: false + t.integer :approval_removals, default: 1, null: false, limit: 2 + end + end +end diff --git a/db/migrate/20250310170756_add_fk_to_projects_branch_rules_merge_request_approval_settings_protected_branch.rb b/db/migrate/20250310170756_add_fk_to_projects_branch_rules_merge_request_approval_settings_protected_branch.rb new file mode 100644 index 00000000000..79e082e9a61 --- /dev/null +++ b/db/migrate/20250310170756_add_fk_to_projects_branch_rules_merge_request_approval_settings_protected_branch.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddFkToProjectsBranchRulesMergeRequestApprovalSettingsProtectedBranch < Gitlab::Database::Migration[2.2] + disable_ddl_transaction! + milestone '17.10' + + def up + add_concurrent_foreign_key( + :projects_branch_rules_merge_request_approval_settings, + :protected_branches, column: :protected_branch_id, + on_delete: :cascade, + reverse_lock_order: true + ) + end + + def down + with_lock_retries do + remove_foreign_key_if_exists( + :projects_branch_rules_merge_request_approval_settings, + column: :protected_branch_id, + reverse_lock_order: true + ) + end + end +end diff --git a/db/migrate/20250310190111_add_fk_to_projects_branch_rules_merge_request_approval_settings_project.rb b/db/migrate/20250310190111_add_fk_to_projects_branch_rules_merge_request_approval_settings_project.rb new file mode 100644 index 00000000000..1926bc56026 --- /dev/null +++ b/db/migrate/20250310190111_add_fk_to_projects_branch_rules_merge_request_approval_settings_project.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddFkToProjectsBranchRulesMergeRequestApprovalSettingsProject < Gitlab::Database::Migration[2.2] + disable_ddl_transaction! + milestone '17.10' + + def up + add_concurrent_foreign_key( + :projects_branch_rules_merge_request_approval_settings, + :projects, column: :project_id, + on_delete: :cascade, + reverse_lock_order: true + ) + end + + def down + with_lock_retries do + remove_foreign_key_if_exists( + :projects_branch_rules_merge_request_approval_settings, + column: :project_id, + reverse_lock_order: true + ) + end + end +end diff --git a/db/post_migrate/20241211134707_index_snippet_repositories_on_snippet_project_id.rb b/db/post_migrate/20241211134707_index_snippet_repositories_on_snippet_project_id.rb new file mode 100644 index 00000000000..0b9d3814883 --- /dev/null +++ b/db/post_migrate/20241211134707_index_snippet_repositories_on_snippet_project_id.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class IndexSnippetRepositoriesOnSnippetProjectId < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + INDEX_NAME = 'index_snippet_repositories_on_snippet_project_id' + + def up + add_concurrent_index :snippet_repositories, :snippet_project_id, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :snippet_repositories, INDEX_NAME + end +end diff --git a/db/post_migrate/20241211134708_add_snippet_repositories_snippet_project_id_fk.rb b/db/post_migrate/20241211134708_add_snippet_repositories_snippet_project_id_fk.rb new file mode 100644 index 00000000000..50428f82638 --- /dev/null +++ b/db/post_migrate/20241211134708_add_snippet_repositories_snippet_project_id_fk.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddSnippetRepositoriesSnippetProjectIdFk < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :snippet_repositories, :projects, column: :snippet_project_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :snippet_repositories, column: :snippet_project_id + end + end +end diff --git a/db/post_migrate/20241211134709_add_snippet_repositories_snippet_project_id_trigger.rb b/db/post_migrate/20241211134709_add_snippet_repositories_snippet_project_id_trigger.rb new file mode 100644 index 00000000000..26ae122606f --- /dev/null +++ b/db/post_migrate/20241211134709_add_snippet_repositories_snippet_project_id_trigger.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class AddSnippetRepositoriesSnippetProjectIdTrigger < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def up + install_sharding_key_assignment_trigger( + table: :snippet_repositories, + sharding_key: :snippet_project_id, + parent_table: :snippets, + parent_sharding_key: :project_id, + foreign_key: :snippet_id + ) + end + + def down + remove_sharding_key_assignment_trigger( + table: :snippet_repositories, + sharding_key: :snippet_project_id, + parent_table: :snippets, + parent_sharding_key: :project_id, + foreign_key: :snippet_id + ) + end +end diff --git a/db/post_migrate/20241211134710_queue_backfill_snippet_repositories_snippet_project_id.rb b/db/post_migrate/20241211134710_queue_backfill_snippet_repositories_snippet_project_id.rb new file mode 100644 index 00000000000..2b16f78a37f --- /dev/null +++ b/db/post_migrate/20241211134710_queue_backfill_snippet_repositories_snippet_project_id.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class QueueBackfillSnippetRepositoriesSnippetProjectId < Gitlab::Database::Migration[2.2] + milestone '17.10' + restrict_gitlab_migration gitlab_schema: :gitlab_main_cell + + MIGRATION = "BackfillSnippetRepositoriesSnippetProjectId" + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 1000 + SUB_BATCH_SIZE = 100 + + def up + queue_batched_background_migration( + MIGRATION, + :snippet_repositories, + :snippet_id, + :snippet_project_id, + :snippets, + :project_id, + :snippet_id, + job_interval: DELAY_INTERVAL, + batch_size: BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + delete_batched_background_migration( + MIGRATION, + :snippet_repositories, + :snippet_id, + [ + :snippet_project_id, + :snippets, + :project_id, + :snippet_id + ] + ) + end +end diff --git a/db/post_migrate/20241211134712_index_snippet_repositories_on_snippet_organization_id.rb b/db/post_migrate/20241211134712_index_snippet_repositories_on_snippet_organization_id.rb new file mode 100644 index 00000000000..b6023a7272b --- /dev/null +++ b/db/post_migrate/20241211134712_index_snippet_repositories_on_snippet_organization_id.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class IndexSnippetRepositoriesOnSnippetOrganizationId < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + INDEX_NAME = 'index_snippet_repositories_on_snippet_organization_id' + + def up + add_concurrent_index :snippet_repositories, :snippet_organization_id, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :snippet_repositories, INDEX_NAME + end +end diff --git a/db/post_migrate/20241211134713_add_snippet_repositories_snippet_organization_id_fk.rb b/db/post_migrate/20241211134713_add_snippet_repositories_snippet_organization_id_fk.rb new file mode 100644 index 00000000000..8c821c32bd3 --- /dev/null +++ b/db/post_migrate/20241211134713_add_snippet_repositories_snippet_organization_id_fk.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddSnippetRepositoriesSnippetOrganizationIdFk < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :snippet_repositories, :organizations, column: :snippet_organization_id, + on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :snippet_repositories, column: :snippet_organization_id + end + end +end diff --git a/db/post_migrate/20241211134714_add_snippet_repositories_snippet_organization_id_trigger.rb b/db/post_migrate/20241211134714_add_snippet_repositories_snippet_organization_id_trigger.rb new file mode 100644 index 00000000000..7a9cd4d0f56 --- /dev/null +++ b/db/post_migrate/20241211134714_add_snippet_repositories_snippet_organization_id_trigger.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class AddSnippetRepositoriesSnippetOrganizationIdTrigger < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def up + install_sharding_key_assignment_trigger( + table: :snippet_repositories, + sharding_key: :snippet_organization_id, + parent_table: :snippets, + parent_sharding_key: :organization_id, + foreign_key: :snippet_id + ) + end + + def down + remove_sharding_key_assignment_trigger( + table: :snippet_repositories, + sharding_key: :snippet_organization_id, + parent_table: :snippets, + parent_sharding_key: :organization_id, + foreign_key: :snippet_id + ) + end +end diff --git a/db/post_migrate/20241211134715_queue_backfill_snippet_repositories_snippet_organization_id.rb b/db/post_migrate/20241211134715_queue_backfill_snippet_repositories_snippet_organization_id.rb new file mode 100644 index 00000000000..cdba4aa6b35 --- /dev/null +++ b/db/post_migrate/20241211134715_queue_backfill_snippet_repositories_snippet_organization_id.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class QueueBackfillSnippetRepositoriesSnippetOrganizationId < Gitlab::Database::Migration[2.2] + milestone '17.10' + restrict_gitlab_migration gitlab_schema: :gitlab_main_cell + + MIGRATION = "BackfillSnippetRepositoriesSnippetOrganizationId" + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 1000 + SUB_BATCH_SIZE = 100 + + def up + queue_batched_background_migration( + MIGRATION, + :snippet_repositories, + :snippet_id, + :snippet_organization_id, + :snippets, + :organization_id, + :snippet_id, + job_interval: DELAY_INTERVAL, + batch_size: BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + delete_batched_background_migration( + MIGRATION, + :snippet_repositories, + :snippet_id, + [ + :snippet_organization_id, + :snippets, + :organization_id, + :snippet_id + ] + ) + end +end diff --git a/db/post_migrate/20250103092422_requeue_backfill_ci_runners_partitioned_table.rb b/db/post_migrate/20241219100359_requeue_backfill_ci_runners_partitioned_table.rb similarity index 100% rename from db/post_migrate/20250103092422_requeue_backfill_ci_runners_partitioned_table.rb rename to db/post_migrate/20241219100359_requeue_backfill_ci_runners_partitioned_table.rb diff --git a/db/post_migrate/20241219100359_queue_copy_runner_taggings.rb b/db/post_migrate/20250103092422_queue_copy_runner_taggings.rb similarity index 100% rename from db/post_migrate/20241219100359_queue_copy_runner_taggings.rb rename to db/post_migrate/20250103092422_queue_copy_runner_taggings.rb diff --git a/db/post_migrate/20250209004150_index_snippet_user_mentions_on_snippet_project_id.rb b/db/post_migrate/20250209004150_index_snippet_user_mentions_on_snippet_project_id.rb new file mode 100644 index 00000000000..3d739f341e2 --- /dev/null +++ b/db/post_migrate/20250209004150_index_snippet_user_mentions_on_snippet_project_id.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class IndexSnippetUserMentionsOnSnippetProjectId < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + INDEX_NAME = 'index_snippet_user_mentions_on_snippet_project_id' + + def up + add_concurrent_index :snippet_user_mentions, :snippet_project_id, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :snippet_user_mentions, INDEX_NAME + end +end diff --git a/db/post_migrate/20250209004151_add_snippet_user_mentions_snippet_project_id_fk.rb b/db/post_migrate/20250209004151_add_snippet_user_mentions_snippet_project_id_fk.rb new file mode 100644 index 00000000000..b1928b6f681 --- /dev/null +++ b/db/post_migrate/20250209004151_add_snippet_user_mentions_snippet_project_id_fk.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddSnippetUserMentionsSnippetProjectIdFk < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :snippet_user_mentions, :projects, column: :snippet_project_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :snippet_user_mentions, column: :snippet_project_id + end + end +end diff --git a/db/post_migrate/20250209004152_add_snippet_user_mentions_snippet_project_id_trigger.rb b/db/post_migrate/20250209004152_add_snippet_user_mentions_snippet_project_id_trigger.rb new file mode 100644 index 00000000000..8b2985370bf --- /dev/null +++ b/db/post_migrate/20250209004152_add_snippet_user_mentions_snippet_project_id_trigger.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class AddSnippetUserMentionsSnippetProjectIdTrigger < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def up + install_sharding_key_assignment_trigger( + table: :snippet_user_mentions, + sharding_key: :snippet_project_id, + parent_table: :snippets, + parent_sharding_key: :project_id, + foreign_key: :snippet_id + ) + end + + def down + remove_sharding_key_assignment_trigger( + table: :snippet_user_mentions, + sharding_key: :snippet_project_id, + parent_table: :snippets, + parent_sharding_key: :project_id, + foreign_key: :snippet_id + ) + end +end diff --git a/db/post_migrate/20250209004153_queue_backfill_snippet_user_mentions_snippet_project_id.rb b/db/post_migrate/20250209004153_queue_backfill_snippet_user_mentions_snippet_project_id.rb new file mode 100644 index 00000000000..851570fa0f8 --- /dev/null +++ b/db/post_migrate/20250209004153_queue_backfill_snippet_user_mentions_snippet_project_id.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class QueueBackfillSnippetUserMentionsSnippetProjectId < Gitlab::Database::Migration[2.2] + milestone '17.10' + restrict_gitlab_migration gitlab_schema: :gitlab_main_cell + + MIGRATION = "BackfillSnippetUserMentionsSnippetProjectId" + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 1000 + SUB_BATCH_SIZE = 100 + + def up + queue_batched_background_migration( + MIGRATION, + :snippet_user_mentions, + :id, + :snippet_project_id, + :snippets, + :project_id, + :snippet_id, + job_interval: DELAY_INTERVAL, + batch_size: BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + delete_batched_background_migration( + MIGRATION, + :snippet_user_mentions, + :id, + [ + :snippet_project_id, + :snippets, + :project_id, + :snippet_id + ] + ) + end +end diff --git a/db/post_migrate/20250209004155_index_snippet_user_mentions_on_snippet_organization_id.rb b/db/post_migrate/20250209004155_index_snippet_user_mentions_on_snippet_organization_id.rb new file mode 100644 index 00000000000..93e9e1e3bb6 --- /dev/null +++ b/db/post_migrate/20250209004155_index_snippet_user_mentions_on_snippet_organization_id.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class IndexSnippetUserMentionsOnSnippetOrganizationId < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + INDEX_NAME = 'index_snippet_user_mentions_on_snippet_organization_id' + + def up + add_concurrent_index :snippet_user_mentions, :snippet_organization_id, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :snippet_user_mentions, INDEX_NAME + end +end diff --git a/db/post_migrate/20250209004156_add_snippet_user_mentions_snippet_organization_id_fk.rb b/db/post_migrate/20250209004156_add_snippet_user_mentions_snippet_organization_id_fk.rb new file mode 100644 index 00000000000..c2db38637e6 --- /dev/null +++ b/db/post_migrate/20250209004156_add_snippet_user_mentions_snippet_organization_id_fk.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddSnippetUserMentionsSnippetOrganizationIdFk < Gitlab::Database::Migration[2.2] + milestone '17.10' + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :snippet_user_mentions, :organizations, column: :snippet_organization_id, + on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :snippet_user_mentions, column: :snippet_organization_id + end + end +end diff --git a/db/post_migrate/20250209004157_add_snippet_user_mentions_snippet_organization_id_trigger.rb b/db/post_migrate/20250209004157_add_snippet_user_mentions_snippet_organization_id_trigger.rb new file mode 100644 index 00000000000..1a1240eb479 --- /dev/null +++ b/db/post_migrate/20250209004157_add_snippet_user_mentions_snippet_organization_id_trigger.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class AddSnippetUserMentionsSnippetOrganizationIdTrigger < Gitlab::Database::Migration[2.2] + milestone '17.10' + + def up + install_sharding_key_assignment_trigger( + table: :snippet_user_mentions, + sharding_key: :snippet_organization_id, + parent_table: :snippets, + parent_sharding_key: :organization_id, + foreign_key: :snippet_id + ) + end + + def down + remove_sharding_key_assignment_trigger( + table: :snippet_user_mentions, + sharding_key: :snippet_organization_id, + parent_table: :snippets, + parent_sharding_key: :organization_id, + foreign_key: :snippet_id + ) + end +end diff --git a/db/post_migrate/20250209004158_queue_backfill_snippet_user_mentions_snippet_organization_id.rb b/db/post_migrate/20250209004158_queue_backfill_snippet_user_mentions_snippet_organization_id.rb new file mode 100644 index 00000000000..520235454b6 --- /dev/null +++ b/db/post_migrate/20250209004158_queue_backfill_snippet_user_mentions_snippet_organization_id.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class QueueBackfillSnippetUserMentionsSnippetOrganizationId < Gitlab::Database::Migration[2.2] + milestone '17.10' + restrict_gitlab_migration gitlab_schema: :gitlab_main_cell + + MIGRATION = "BackfillSnippetUserMentionsSnippetOrganizationId" + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 1000 + SUB_BATCH_SIZE = 100 + + def up + queue_batched_background_migration( + MIGRATION, + :snippet_user_mentions, + :id, + :snippet_organization_id, + :snippets, + :organization_id, + :snippet_id, + job_interval: DELAY_INTERVAL, + batch_size: BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + delete_batched_background_migration( + MIGRATION, + :snippet_user_mentions, + :id, + [ + :snippet_organization_id, + :snippets, + :organization_id, + :snippet_id + ] + ) + end +end diff --git a/db/post_migrate/20250304184254_queue_remove_orphaned_vulnerability_notes_batched_migration.rb b/db/post_migrate/20250304184254_queue_remove_orphaned_vulnerability_notes_batched_migration.rb new file mode 100644 index 00000000000..a8e29e1cc53 --- /dev/null +++ b/db/post_migrate/20250304184254_queue_remove_orphaned_vulnerability_notes_batched_migration.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class QueueRemoveOrphanedVulnerabilityNotesBatchedMigration < Gitlab::Database::Migration[2.2] + milestone '17.10' + + restrict_gitlab_migration gitlab_schema: :gitlab_main + + MIGRATION = "RemoveOrphanedVulnerabilityNotesBatchedMigration" + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 1000 + SUB_BATCH_SIZE = 100 + + def up + queue_batched_background_migration( + MIGRATION, + :notes, + :id, + job_interval: DELAY_INTERVAL, + batch_size: BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + delete_batched_background_migration(MIGRATION, :notes, :id, []) + end +end diff --git a/db/post_migrate/20250307080100_switch_record_change_tracking_to_p_ci_runner_machines_table.rb b/db/post_migrate/20250307080100_switch_record_change_tracking_to_p_ci_runner_machines_table.rb index 52bcb1bea60..391ffcec90c 100644 --- a/db/post_migrate/20250307080100_switch_record_change_tracking_to_p_ci_runner_machines_table.rb +++ b/db/post_migrate/20250307080100_switch_record_change_tracking_to_p_ci_runner_machines_table.rb @@ -1,50 +1,14 @@ # frozen_string_literal: true class SwitchRecordChangeTrackingToPCiRunnerMachinesTable < Gitlab::Database::Migration[2.2] - include Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers - - disable_ddl_transaction! - milestone '17.10' - PARTITIONED_TABLE = :ci_runner_machines - TABLES = %i[ - instance_type_ci_runner_machines group_type_ci_runner_machines project_type_ci_runner_machines ci_runner_machines - ].freeze - def up - # Remove current LFK trigger that is currently assigned to ci_runner_machines_archived, due to the call to - # replace_with_partitioned_table: - # CREATE TRIGGER ci_runner_machines_loose_fk_trigger AFTER DELETE ON ci_runner_machines_archived - # REFERENCING OLD TABLE AS old_table - # FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); - drop_trigger(:ci_runner_machines_archived, :ci_runner_machines_loose_fk_trigger, if_exists: true) - - # Reattaching the new trigger function to the existing partitioned tables - # but with an overridden table name - TABLES.each do |table| - with_lock_retries do - untrack_record_deletions(table) - - track_record_deletions_override_table_name(table, PARTITIONED_TABLE) - end - end + # no-op due to https://gitlab.com/gitlab-com/gl-infra/production/-/issues/19476, retried in + # RetrySwitchRecordChangeTrackingToPCiRunnerMachinesTable end def down - TABLES.each do |table| - with_lock_retries do - untrack_record_deletions(table) - end - end - - # Mimic track_record_deletions but in a way to restore the previous state - # (i.e. trigger on ci_runner_machines_archived but still named ci_runner_machines_loose_fk_trigger) - execute(<<~SQL.squish) - CREATE TRIGGER #{record_deletion_trigger_name(PARTITIONED_TABLE)} - AFTER DELETE ON ci_runner_machines_archived REFERENCING OLD TABLE AS old_table - FOR EACH STATEMENT - EXECUTE FUNCTION #{INSERT_FUNCTION_NAME}(); - SQL + # no-op end end diff --git a/db/post_migrate/20250307080101_retry_switch_record_change_tracking_to_p_ci_runner_machines_table.rb b/db/post_migrate/20250307080101_retry_switch_record_change_tracking_to_p_ci_runner_machines_table.rb new file mode 100644 index 00000000000..73fe185c7b5 --- /dev/null +++ b/db/post_migrate/20250307080101_retry_switch_record_change_tracking_to_p_ci_runner_machines_table.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +class RetrySwitchRecordChangeTrackingToPCiRunnerMachinesTable < Gitlab::Database::Migration[2.2] + include Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers + + disable_ddl_transaction! + + milestone '17.10' + + PARTITIONED_TABLE = :ci_runner_machines + TABLES = %i[ + instance_type_ci_runner_machines group_type_ci_runner_machines project_type_ci_runner_machines ci_runner_machines + ].freeze + + def up + # Remove current LFK trigger that is currently assigned to ci_runner_machines_archived, due to the call to + # replace_with_partitioned_table: + # CREATE TRIGGER ci_runner_machines_loose_fk_trigger AFTER DELETE ON ci_runner_machines_archived + # REFERENCING OLD TABLE AS old_table + # FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); + with_lock_retries do + # rubocop:disable Migration/WithLockRetriesDisallowedMethod -- false positive + drop_trigger(:ci_runner_machines_archived, :ci_runner_machines_loose_fk_trigger) + # rubocop:enable Migration/WithLockRetriesDisallowedMethod + end + + # Reattaching the new trigger function to the existing partitioned tables + # but with an overridden table name + TABLES.each do |table| + with_lock_retries do + untrack_record_deletions(table) + + track_record_deletions_override_table_name(table, PARTITIONED_TABLE) + end + end + end + + def down + TABLES.each do |table| + with_lock_retries do + untrack_record_deletions(table) + end + end + + # Mimic track_record_deletions but in a way to restore the previous state + # (i.e. trigger on ci_runner_machines_archived but still named ci_runner_machines_loose_fk_trigger) + with_lock_retries do + execute(<<~SQL.squish) + CREATE TRIGGER #{record_deletion_trigger_name(PARTITIONED_TABLE)} + AFTER DELETE ON ci_runner_machines_archived REFERENCING OLD TABLE AS old_table + FOR EACH STATEMENT + EXECUTE FUNCTION #{INSERT_FUNCTION_NAME}(); + SQL + end + end +end diff --git a/db/schema_migrations/20241211134706 b/db/schema_migrations/20241211134706 new file mode 100644 index 00000000000..dbd9892d811 --- /dev/null +++ b/db/schema_migrations/20241211134706 @@ -0,0 +1 @@ +48f5f852380a7a3e179c913568219ae8799b32c9b59c0f3219be6dc31a45332b \ No newline at end of file diff --git a/db/schema_migrations/20241211134707 b/db/schema_migrations/20241211134707 new file mode 100644 index 00000000000..3666178c5dc --- /dev/null +++ b/db/schema_migrations/20241211134707 @@ -0,0 +1 @@ +4a3a2de5da48f40751d6b7bacb5a4081954eda13a31f535e0e65c17c821c2e3a \ No newline at end of file diff --git a/db/schema_migrations/20241211134708 b/db/schema_migrations/20241211134708 new file mode 100644 index 00000000000..3f17f0a8f49 --- /dev/null +++ b/db/schema_migrations/20241211134708 @@ -0,0 +1 @@ +d3b3fd1a860be5e1fcf4b1ed8a645d350c9527601db2bf9d0cc5cf8872382026 \ No newline at end of file diff --git a/db/schema_migrations/20241211134709 b/db/schema_migrations/20241211134709 new file mode 100644 index 00000000000..ed08f8c43a5 --- /dev/null +++ b/db/schema_migrations/20241211134709 @@ -0,0 +1 @@ +035aea2280dca568860cf636727798b9f2a0d98669d8302d12ed8183f07035c7 \ No newline at end of file diff --git a/db/schema_migrations/20241211134710 b/db/schema_migrations/20241211134710 new file mode 100644 index 00000000000..c87cf892cf9 --- /dev/null +++ b/db/schema_migrations/20241211134710 @@ -0,0 +1 @@ +38438dced134d7c7bf46dc0bb955f566c4edaebe6bd47b9a4b7d39027c2f0e98 \ No newline at end of file diff --git a/db/schema_migrations/20241211134711 b/db/schema_migrations/20241211134711 new file mode 100644 index 00000000000..8c107f5215d --- /dev/null +++ b/db/schema_migrations/20241211134711 @@ -0,0 +1 @@ +7bcb615592724e6a9b499293e5e4eb48daab5a867499a707735fbe336c46b78e \ No newline at end of file diff --git a/db/schema_migrations/20241211134712 b/db/schema_migrations/20241211134712 new file mode 100644 index 00000000000..a6ccbf74662 --- /dev/null +++ b/db/schema_migrations/20241211134712 @@ -0,0 +1 @@ +e53745adeacf8ec8b3ca1f343927942093bdfbccb76d56ac90b4728f967bf7c8 \ No newline at end of file diff --git a/db/schema_migrations/20241211134713 b/db/schema_migrations/20241211134713 new file mode 100644 index 00000000000..18e4111c5bc --- /dev/null +++ b/db/schema_migrations/20241211134713 @@ -0,0 +1 @@ +22d6304d4124f9353db4c409c7a30c7b8bc4536233cb7f388706111f0ca48515 \ No newline at end of file diff --git a/db/schema_migrations/20241211134714 b/db/schema_migrations/20241211134714 new file mode 100644 index 00000000000..98a4d47780a --- /dev/null +++ b/db/schema_migrations/20241211134714 @@ -0,0 +1 @@ +841b185889673d3293c949d91a53baf5501109846d0b2d625d50c2582fe610f2 \ No newline at end of file diff --git a/db/schema_migrations/20241211134715 b/db/schema_migrations/20241211134715 new file mode 100644 index 00000000000..e92a3224a66 --- /dev/null +++ b/db/schema_migrations/20241211134715 @@ -0,0 +1 @@ +4af7bbac18c391a5168bc68fbc53e046884f848c25d8c217aae397a37e52fe80 \ No newline at end of file diff --git a/db/schema_migrations/20250209004149 b/db/schema_migrations/20250209004149 new file mode 100644 index 00000000000..f5879fab2d4 --- /dev/null +++ b/db/schema_migrations/20250209004149 @@ -0,0 +1 @@ +2b7d3200dbb39701dc29899fa9a91cb8fd6f4524c2dd18fa83809f3986000eb6 \ No newline at end of file diff --git a/db/schema_migrations/20250209004150 b/db/schema_migrations/20250209004150 new file mode 100644 index 00000000000..4191c06dc6c --- /dev/null +++ b/db/schema_migrations/20250209004150 @@ -0,0 +1 @@ +889bd985841d24ba0726a7401e8bc41f8d85469c3c7ab70299eef09121203a9a \ No newline at end of file diff --git a/db/schema_migrations/20250209004151 b/db/schema_migrations/20250209004151 new file mode 100644 index 00000000000..fb57321ce9d --- /dev/null +++ b/db/schema_migrations/20250209004151 @@ -0,0 +1 @@ +fbdf2c73b97679360386e74734f0be035f64bfc15abe62ff45fb761fb640568f \ No newline at end of file diff --git a/db/schema_migrations/20250209004152 b/db/schema_migrations/20250209004152 new file mode 100644 index 00000000000..5934d950002 --- /dev/null +++ b/db/schema_migrations/20250209004152 @@ -0,0 +1 @@ +ac9d9f71b29435b1283b52cc8bf0f90a1e6ff456fd4003e84152096a17ebfaab \ No newline at end of file diff --git a/db/schema_migrations/20250209004153 b/db/schema_migrations/20250209004153 new file mode 100644 index 00000000000..57b3fc39e52 --- /dev/null +++ b/db/schema_migrations/20250209004153 @@ -0,0 +1 @@ +707bb0c8657cd871427511c75efdc70e8745e8d38b9cf7491cb78e5e132b9452 \ No newline at end of file diff --git a/db/schema_migrations/20250209004154 b/db/schema_migrations/20250209004154 new file mode 100644 index 00000000000..0750302634f --- /dev/null +++ b/db/schema_migrations/20250209004154 @@ -0,0 +1 @@ +b9a499b4bfcd8933f92cf9e1f66da493e615d1cff94233271a280d4506ad6287 \ No newline at end of file diff --git a/db/schema_migrations/20250209004155 b/db/schema_migrations/20250209004155 new file mode 100644 index 00000000000..0b5eaadc812 --- /dev/null +++ b/db/schema_migrations/20250209004155 @@ -0,0 +1 @@ +cc669986d1c2e8896173e076c846a65e1bbe7d0fd4c438d80b90d3515d0d036f \ No newline at end of file diff --git a/db/schema_migrations/20250209004156 b/db/schema_migrations/20250209004156 new file mode 100644 index 00000000000..f520c863013 --- /dev/null +++ b/db/schema_migrations/20250209004156 @@ -0,0 +1 @@ +398980e7624f9591314c8117929c02c65a259a29f00c662e737b94429739c309 \ No newline at end of file diff --git a/db/schema_migrations/20250209004157 b/db/schema_migrations/20250209004157 new file mode 100644 index 00000000000..e20f1c3ff78 --- /dev/null +++ b/db/schema_migrations/20250209004157 @@ -0,0 +1 @@ +38c5a2c2fb5e72a01c6b8004076f62b51403fefd0c9e4014ab7bfcad7db7ab98 \ No newline at end of file diff --git a/db/schema_migrations/20250209004158 b/db/schema_migrations/20250209004158 new file mode 100644 index 00000000000..58eb1c37419 --- /dev/null +++ b/db/schema_migrations/20250209004158 @@ -0,0 +1 @@ +60c6ea7a1a479512f661ae542f430f1ddb6abe30a57bb2a301de4ef4e9bfed53 \ No newline at end of file diff --git a/db/schema_migrations/20250304134327 b/db/schema_migrations/20250304134327 new file mode 100644 index 00000000000..3e042c68270 --- /dev/null +++ b/db/schema_migrations/20250304134327 @@ -0,0 +1 @@ +22c4e9ded5b0474d1854de01a1b363394df170e63fc05b0a1b8d968aaa891505 \ No newline at end of file diff --git a/db/schema_migrations/20250304134552 b/db/schema_migrations/20250304134552 new file mode 100644 index 00000000000..923bcd16534 --- /dev/null +++ b/db/schema_migrations/20250304134552 @@ -0,0 +1 @@ +6d2337f6c66588dfe3d7e3f6fa2b0cf73160a2a0256b28cefb1f58f54c88adfb \ No newline at end of file diff --git a/db/schema_migrations/20250304184254 b/db/schema_migrations/20250304184254 new file mode 100644 index 00000000000..86b17c95441 --- /dev/null +++ b/db/schema_migrations/20250304184254 @@ -0,0 +1 @@ +0c6eba6946c0434d649293804a2ab50c0f45590ca9d583435aa0aea05a668b9d \ No newline at end of file diff --git a/db/schema_migrations/20250307080101 b/db/schema_migrations/20250307080101 new file mode 100644 index 00000000000..5a604458634 --- /dev/null +++ b/db/schema_migrations/20250307080101 @@ -0,0 +1 @@ +3c998c5fb4772cdd55ce6018628cc76189793c2d4afd03de2a9affa98d0025a8 \ No newline at end of file diff --git a/db/schema_migrations/20250310162645 b/db/schema_migrations/20250310162645 new file mode 100644 index 00000000000..9b3a6f8fc16 --- /dev/null +++ b/db/schema_migrations/20250310162645 @@ -0,0 +1 @@ +14cea79c56bcb50b665936feecc18a8e45154ef969c75be8a1fb107aea60a6be \ No newline at end of file diff --git a/db/schema_migrations/20250310170756 b/db/schema_migrations/20250310170756 new file mode 100644 index 00000000000..ecebd5f23d0 --- /dev/null +++ b/db/schema_migrations/20250310170756 @@ -0,0 +1 @@ +8c66743c43a7f6afafc73c723a6baf2a53597c1a49c50ceff45b10d7f88460de \ No newline at end of file diff --git a/db/schema_migrations/20250310190111 b/db/schema_migrations/20250310190111 new file mode 100644 index 00000000000..2ef4a3151a0 --- /dev/null +++ b/db/schema_migrations/20250310190111 @@ -0,0 +1 @@ +3ad5713d70070b1cf6c85132bd1e132c3a7f5f9112a11dc7014920cb2cbfaa9d \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index a64f166d769..b7b1f4d5852 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -1396,6 +1396,22 @@ RETURN NEW; END $$; +CREATE FUNCTION trigger_1f57c71a69fb() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN +IF NEW."snippet_organization_id" IS NULL THEN + SELECT "organization_id" + INTO NEW."snippet_organization_id" + FROM "snippets" + WHERE "snippets"."id" = NEW."snippet_id"; +END IF; + +RETURN NEW; + +END +$$; + CREATE FUNCTION trigger_206cbe2dc1a2() RETURNS trigger LANGUAGE plpgsql AS $$ @@ -2390,6 +2406,22 @@ RETURN NEW; END $$; +CREATE FUNCTION trigger_7495f5e0efcb() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN +IF NEW."snippet_project_id" IS NULL THEN + SELECT "project_id" + INTO NEW."snippet_project_id" + FROM "snippets" + WHERE "snippets"."id" = NEW."snippet_id"; +END IF; + +RETURN NEW; + +END +$$; + CREATE FUNCTION trigger_765cae42cd77() RETURNS trigger LANGUAGE plpgsql AS $$ @@ -2867,6 +2899,22 @@ RETURN NEW; END $$; +CREATE FUNCTION trigger_93a5b044f4e8() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN +IF NEW."snippet_organization_id" IS NULL THEN + SELECT "organization_id" + INTO NEW."snippet_organization_id" + FROM "snippets" + WHERE "snippets"."id" = NEW."snippet_id"; +END IF; + +RETURN NEW; + +END +$$; + CREATE FUNCTION trigger_94514aeadc50() RETURNS trigger LANGUAGE plpgsql AS $$ @@ -3539,6 +3587,22 @@ RETURN NEW; END $$; +CREATE FUNCTION trigger_d9468bfbb0b4() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN +IF NEW."snippet_project_id" IS NULL THEN + SELECT "project_id" + INTO NEW."snippet_project_id" + FROM "snippets" + WHERE "snippets"."id" = NEW."snippet_id"; +END IF; + +RETURN NEW; + +END +$$; + CREATE FUNCTION trigger_da5fd3d6d75c() RETURNS trigger LANGUAGE plpgsql AS $$ @@ -20534,6 +20598,28 @@ CREATE SEQUENCE project_wiki_repositories_id_seq ALTER SEQUENCE project_wiki_repositories_id_seq OWNED BY project_wiki_repositories.id; +CREATE TABLE projects_branch_rules_merge_request_approval_settings ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + protected_branch_id bigint NOT NULL, + project_id bigint NOT NULL, + prevent_author_approval boolean DEFAULT false NOT NULL, + prevent_committer_approval boolean DEFAULT false NOT NULL, + prevent_editing_approval_rules boolean DEFAULT false NOT NULL, + require_reauthentication_to_approve boolean DEFAULT false NOT NULL, + approval_removals smallint DEFAULT 1 NOT NULL +); + +CREATE SEQUENCE projects_branch_rules_merge_request_approval_settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE projects_branch_rules_merge_request_approval_settings_id_seq OWNED BY projects_branch_rules_merge_request_approval_settings.id; + CREATE TABLE projects_branch_rules_squash_options ( id bigint NOT NULL, protected_branch_id bigint NOT NULL, @@ -21957,6 +22043,8 @@ CREATE TABLE snippet_repositories ( verification_failure text, verification_state smallint DEFAULT 0 NOT NULL, verification_started_at timestamp with time zone, + snippet_project_id bigint, + snippet_organization_id bigint, CONSTRAINT snippet_repositories_verification_failure_text_limit CHECK ((char_length(verification_failure) <= 255)) ); @@ -22020,7 +22108,9 @@ CREATE TABLE snippet_user_mentions ( mentioned_users_ids bigint[], mentioned_projects_ids bigint[], mentioned_groups_ids bigint[], - note_id bigint + note_id bigint, + snippet_project_id bigint, + snippet_organization_id bigint ); CREATE SEQUENCE snippet_user_mentions_id_seq @@ -26394,6 +26484,8 @@ ALTER TABLE ONLY project_wiki_repositories ALTER COLUMN id SET DEFAULT nextval(' ALTER TABLE ONLY projects ALTER COLUMN id SET DEFAULT nextval('projects_id_seq'::regclass); +ALTER TABLE ONLY projects_branch_rules_merge_request_approval_settings ALTER COLUMN id SET DEFAULT nextval('projects_branch_rules_merge_request_approval_settings_id_seq'::regclass); + ALTER TABLE ONLY projects_branch_rules_squash_options ALTER COLUMN id SET DEFAULT nextval('projects_branch_rules_squash_options_id_seq'::regclass); ALTER TABLE ONLY projects_sync_events ALTER COLUMN id SET DEFAULT nextval('projects_sync_events_id_seq'::regclass); @@ -29231,6 +29323,9 @@ ALTER TABLE ONLY project_type_ci_runners ALTER TABLE ONLY project_wiki_repositories ADD CONSTRAINT project_wiki_repositories_pkey PRIMARY KEY (id); +ALTER TABLE ONLY projects_branch_rules_merge_request_approval_settings + ADD CONSTRAINT projects_branch_rules_merge_request_approval_settings_pkey PRIMARY KEY (id); + ALTER TABLE ONLY projects_branch_rules_squash_options ADD CONSTRAINT projects_branch_rules_squash_options_pkey PRIMARY KEY (id); @@ -31449,6 +31544,10 @@ CREATE INDEX idx_audit_events_part_on_entity_id_desc_author_id_created_at ON ONL CREATE INDEX idx_award_emoji_on_user_emoji_name_awardable_type_awardable_id ON award_emoji USING btree (user_id, name, awardable_type, awardable_id); +CREATE INDEX idx_branch_rules_mr_approval_settings_on_project_id ON projects_branch_rules_merge_request_approval_settings USING btree (project_id); + +CREATE UNIQUE INDEX idx_branch_rules_mr_approval_settings_on_protected_branch_id ON projects_branch_rules_merge_request_approval_settings USING btree (protected_branch_id); + CREATE INDEX idx_build_artifacts_size_refreshes_state_updated_at ON project_build_artifacts_size_refreshes USING btree (state, updated_at); CREATE INDEX idx_catalog_resource_cpmt_last_usages_on_cpmt_project_id ON catalog_resource_component_last_usages USING btree (component_project_id); @@ -35587,6 +35686,10 @@ CREATE UNIQUE INDEX index_snippet_repositories_on_disk_path ON snippet_repositor CREATE INDEX index_snippet_repositories_on_shard_id ON snippet_repositories USING btree (shard_id); +CREATE INDEX index_snippet_repositories_on_snippet_organization_id ON snippet_repositories USING btree (snippet_organization_id); + +CREATE INDEX index_snippet_repositories_on_snippet_project_id ON snippet_repositories USING btree (snippet_project_id); + CREATE INDEX index_snippet_repositories_pending_verification ON snippet_repositories USING btree (verified_at NULLS FIRST) WHERE (verification_state = 0); CREATE INDEX index_snippet_repositories_verification_state ON snippet_repositories USING btree (verification_state); @@ -35611,6 +35714,10 @@ CREATE INDEX index_snippet_repository_storage_moves_on_state ON snippet_reposito CREATE UNIQUE INDEX index_snippet_user_mentions_on_note_id ON snippet_user_mentions USING btree (note_id) WHERE (note_id IS NOT NULL); +CREATE INDEX index_snippet_user_mentions_on_snippet_organization_id ON snippet_user_mentions USING btree (snippet_organization_id); + +CREATE INDEX index_snippet_user_mentions_on_snippet_project_id ON snippet_user_mentions USING btree (snippet_project_id); + CREATE INDEX index_snippets_on_author_id ON snippets USING btree (author_id); CREATE INDEX index_snippets_on_content_trigram ON snippets USING gin (content gin_trgm_ops); @@ -36089,7 +36196,7 @@ CREATE INDEX index_vulnerability_archive_exports_on_project_id ON ONLY vulnerabi CREATE INDEX index_vulnerability_archive_exports_on_status ON ONLY vulnerability_archive_exports USING btree (status); -CREATE INDEX index_vulnerability_archived_records_on_archive_id ON vulnerability_archived_records USING btree (archive_id); +CREATE INDEX index_vulnerability_archived_records_on_archive_id_and_id ON vulnerability_archived_records USING btree (archive_id, id); CREATE INDEX index_vulnerability_archived_records_on_project_id ON vulnerability_archived_records USING btree (project_id); @@ -38883,6 +38990,8 @@ CREATE TRIGGER trigger_1ed40f4d5f4e BEFORE INSERT OR UPDATE ON packages_maven_me CREATE TRIGGER trigger_1eda1bc6ef53 BEFORE INSERT OR UPDATE ON merge_request_diff_details FOR EACH ROW EXECUTE FUNCTION trigger_1eda1bc6ef53(); +CREATE TRIGGER trigger_1f57c71a69fb BEFORE INSERT OR UPDATE ON snippet_repositories FOR EACH ROW EXECUTE FUNCTION trigger_1f57c71a69fb(); + CREATE TRIGGER trigger_206cbe2dc1a2 BEFORE INSERT OR UPDATE ON packages_package_files FOR EACH ROW EXECUTE FUNCTION trigger_206cbe2dc1a2(); CREATE TRIGGER trigger_207005e8e995 BEFORE INSERT OR UPDATE ON operations_strategies FOR EACH ROW EXECUTE FUNCTION trigger_207005e8e995(); @@ -39005,6 +39114,8 @@ CREATE TRIGGER trigger_70d3f0bba1de BEFORE INSERT OR UPDATE ON compliance_framew CREATE TRIGGER trigger_740afa9807b8 BEFORE INSERT OR UPDATE ON subscription_user_add_on_assignments FOR EACH ROW EXECUTE FUNCTION trigger_740afa9807b8(); +CREATE TRIGGER trigger_7495f5e0efcb BEFORE INSERT OR UPDATE ON snippet_user_mentions FOR EACH ROW EXECUTE FUNCTION trigger_7495f5e0efcb(); + CREATE TRIGGER trigger_765cae42cd77 BEFORE INSERT OR UPDATE ON bulk_import_trackers FOR EACH ROW EXECUTE FUNCTION trigger_765cae42cd77(); CREATE TRIGGER trigger_77d9fbad5b12 BEFORE INSERT OR UPDATE ON packages_debian_project_distribution_keys FOR EACH ROW EXECUTE FUNCTION trigger_77d9fbad5b12(); @@ -39071,6 +39182,8 @@ CREATE TRIGGER trigger_90fa5c6951f1 BEFORE INSERT OR UPDATE ON dast_profiles_tag CREATE TRIGGER trigger_9259aae92378 BEFORE INSERT OR UPDATE ON packages_build_infos FOR EACH ROW EXECUTE FUNCTION trigger_9259aae92378(); +CREATE TRIGGER trigger_93a5b044f4e8 BEFORE INSERT OR UPDATE ON snippet_user_mentions FOR EACH ROW EXECUTE FUNCTION trigger_93a5b044f4e8(); + CREATE TRIGGER trigger_94514aeadc50 BEFORE INSERT OR UPDATE ON deployment_approvals FOR EACH ROW EXECUTE FUNCTION trigger_94514aeadc50(); CREATE TRIGGER trigger_951ac22c24d7 BEFORE INSERT OR UPDATE ON required_code_owners_sections FOR EACH ROW EXECUTE FUNCTION trigger_951ac22c24d7(); @@ -39159,6 +39272,8 @@ CREATE TRIGGER trigger_d5c895007948 BEFORE INSERT OR UPDATE ON protected_environ CREATE TRIGGER trigger_d8c2de748d8c BEFORE INSERT OR UPDATE ON merge_request_predictions FOR EACH ROW EXECUTE FUNCTION trigger_d8c2de748d8c(); +CREATE TRIGGER trigger_d9468bfbb0b4 BEFORE INSERT OR UPDATE ON snippet_repositories FOR EACH ROW EXECUTE FUNCTION trigger_d9468bfbb0b4(); + CREATE TRIGGER trigger_da5fd3d6d75c BEFORE INSERT OR UPDATE ON packages_composer_metadata FOR EACH ROW EXECUTE FUNCTION trigger_da5fd3d6d75c(); CREATE TRIGGER trigger_dadd660afe2c BEFORE INSERT OR UPDATE ON packages_debian_group_distribution_keys FOR EACH ROW EXECUTE FUNCTION trigger_dadd660afe2c(); @@ -39276,6 +39391,9 @@ ALTER TABLE ONLY ai_active_context_collections ALTER TABLE ONLY deployments ADD CONSTRAINT fk_009fd21147 FOREIGN KEY (environment_id) REFERENCES environments(id) ON DELETE CASCADE; +ALTER TABLE ONLY projects_branch_rules_merge_request_approval_settings + ADD CONSTRAINT fk_00acf20382 FOREIGN KEY (protected_branch_id) REFERENCES protected_branches(id) ON DELETE CASCADE; + ALTER TABLE ONLY epics ADD CONSTRAINT fk_013c9f36ca FOREIGN KEY (due_date_sourcing_epic_id) REFERENCES epics(id) ON DELETE SET NULL; @@ -40179,6 +40297,9 @@ ALTER TABLE ONLY subscription_user_add_on_assignments ALTER TABLE ONLY merge_requests_approval_rules_approver_users ADD CONSTRAINT fk_725cca295c FOREIGN KEY (approval_rule_id) REFERENCES merge_requests_approval_rules(id) ON DELETE CASCADE; +ALTER TABLE ONLY snippet_user_mentions + ADD CONSTRAINT fk_7280faac49 FOREIGN KEY (snippet_project_id) REFERENCES projects(id) ON DELETE CASCADE; + ALTER TABLE ONLY zentao_tracker_data ADD CONSTRAINT fk_72a0e59cd8 FOREIGN KEY (instance_integration_id) REFERENCES instance_integrations(id) ON DELETE CASCADE; @@ -40710,6 +40831,9 @@ ALTER TABLE ONLY member_approvals ALTER TABLE ONLY related_epic_links ADD CONSTRAINT fk_b30520b698 FOREIGN KEY (issue_link_id) REFERENCES issue_links(id) ON DELETE CASCADE; +ALTER TABLE ONLY projects_branch_rules_merge_request_approval_settings + ADD CONSTRAINT fk_b322a941f9 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; + ALTER TABLE ONLY issues ADD CONSTRAINT fk_b37be69be6 FOREIGN KEY (work_item_type_id) REFERENCES work_item_types(id); @@ -41070,6 +41194,9 @@ ALTER TABLE ONLY project_control_compliance_statuses ALTER TABLE ONLY protected_branches ADD CONSTRAINT fk_de9216e774 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE; +ALTER TABLE ONLY snippet_user_mentions + ADD CONSTRAINT fk_def441dfc3 FOREIGN KEY (snippet_organization_id) REFERENCES organizations(id) ON DELETE CASCADE; + ALTER TABLE ONLY work_item_number_field_values ADD CONSTRAINT fk_df27ad8c35 FOREIGN KEY (work_item_id) REFERENCES issues(id) ON DELETE CASCADE; @@ -41193,6 +41320,9 @@ ALTER TABLE ONLY merge_request_context_commits ALTER TABLE ONLY approval_project_rules ADD CONSTRAINT fk_efa5a1e3fb FOREIGN KEY (security_orchestration_policy_configuration_id) REFERENCES security_orchestration_policy_configurations(id) ON DELETE CASCADE; +ALTER TABLE ONLY snippet_repositories + ADD CONSTRAINT fk_efaf4ac269 FOREIGN KEY (snippet_organization_id) REFERENCES organizations(id) ON DELETE CASCADE; + ALTER TABLE ONLY dora_daily_metrics ADD CONSTRAINT fk_efc32a39fa FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -41229,6 +41359,9 @@ ALTER TABLE ONLY abuse_reports ALTER TABLE ONLY timelogs ADD CONSTRAINT fk_f12ef8db70 FOREIGN KEY (timelog_category_id) REFERENCES timelog_categories(id) ON DELETE SET NULL; +ALTER TABLE ONLY snippet_repositories + ADD CONSTRAINT fk_f1319bee9d FOREIGN KEY (snippet_project_id) REFERENCES projects(id) ON DELETE CASCADE; + ALTER TABLE ONLY boards ADD CONSTRAINT fk_f15266b5f9 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; diff --git a/doc/api/graphql/reference/_index.md b/doc/api/graphql/reference/_index.md index d81441887e9..ed561e0ac3c 100644 --- a/doc/api/graphql/reference/_index.md +++ b/doc/api/graphql/reference/_index.md @@ -6485,7 +6485,7 @@ Input type: `GroupUpdateInput` | `fullPath` | [`ID!`](#id) | Full path of the group that will be updated. | | `lockDuoFeaturesEnabled` | [`Boolean`](#boolean) | Indicates if the GitLab Duo features enabled setting is enforced for all subgroups. Introduced in GitLab 16.10: **Status**: Experiment. | | `lockMathRenderingLimitsEnabled` | [`Boolean`](#boolean) | Indicates if math rendering limits are locked for all descendant groups. | -| `mathRenderingLimitsEnabled` | [`Boolean`](#boolean) | Indicates if math rendering limits are used for this group. | +| `mathRenderingLimitsEnabled` | [`Boolean`](#boolean) | Indicates if math rendering limits are used for the group. | | `name` | [`String`](#string) | Name of the namespace. | | `path` | [`String`](#string) | Path of the namespace. | | `sharedRunnersSetting` | [`SharedRunnersSetting`](#sharedrunnerssetting) | Shared runners availability for the namespace and its descendants. | @@ -24793,9 +24793,9 @@ Tags for a given deployment. | Name | Type | Description | | ---- | ---- | ----------- | -| `name` | [`String`](#string) | Name of this git tag. | -| `path` | [`String`](#string) | Path for this tag. | -| `webPath` | [`String`](#string) | Web path for this tag. | +| `name` | [`String`](#string) | Name of the git tag. | +| `path` | [`String`](#string) | Path for the tag. | +| `webPath` | [`String`](#string) | Web path for the tag. | ### `DescriptionVersion` @@ -24835,19 +24835,19 @@ A single design. | `commenters` | [`UserCoreConnection!`](#usercoreconnection) | All commenters on this noteable. (see [Connections](#connections)) | | `description` | [`String`](#string) | Description of the design. | | `descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. | -| `diffRefs` | [`DiffRefs!`](#diffrefs) | Diff refs for this design. | +| `diffRefs` | [`DiffRefs!`](#diffrefs) | Diff refs for the design. | | `discussions` | [`DiscussionConnection!`](#discussionconnection) | All discussions on this noteable. (see [Connections](#connections)) | -| `event` | [`DesignVersionEvent!`](#designversionevent) | How this design was changed in the current version. | +| `event` | [`DesignVersionEvent!`](#designversionevent) | How the design was changed in the current version. | | `filename` | [`String!`](#string) | Filename of the design. | | `fullPath` | [`ID!`](#id) | Full path to the design file. | -| `id` | [`ID!`](#id) | ID of this design. | +| `id` | [`ID!`](#id) | ID of the design. | | `image` | [`String!`](#string) | URL of the full-sized image. | | `imageV432x230` | [`String`](#string) | The URL of the design resized to fit within the bounds of 432x230. This will be `null` if the image has not been generated. | | `imported` | [`Boolean!`](#boolean) | Indicates whether the design was imported. | | `importedFrom` | [`ImportSource!`](#importsource) | Import source of the design. | | `issue` | [`Issue!`](#issue) | Issue the design belongs to. | | `name` | [`String`](#string) | Name or title of this object. | -| `notesCount` | [`Int!`](#int) | Total count of user-created notes for this design. | +| `notesCount` | [`Int!`](#int) | Total count of user-created notes for the design. | | `project` | [`Project!`](#project) | Project the design belongs to. | | `webUrl` | [`String!`](#string) | URL of the design. | @@ -24911,17 +24911,17 @@ A design pinned to a specific version. The image field reflects the design as of | Name | Type | Description | | ---- | ---- | ----------- | | `design` | [`Design!`](#design) | Underlying design. | -| `diffRefs` | [`DiffRefs!`](#diffrefs) | Diff refs for this design. | -| `event` | [`DesignVersionEvent!`](#designversionevent) | How this design was changed in the current version. | +| `diffRefs` | [`DiffRefs!`](#diffrefs) | Diff refs for the design. | +| `event` | [`DesignVersionEvent!`](#designversionevent) | How the design was changed in the current version. | | `filename` | [`String!`](#string) | Filename of the design. | | `fullPath` | [`ID!`](#id) | Full path to the design file. | -| `id` | [`ID!`](#id) | ID of this design. | +| `id` | [`ID!`](#id) | ID of the design. | | `image` | [`String!`](#string) | URL of the full-sized image. | | `imageV432x230` | [`String`](#string) | The URL of the design resized to fit within the bounds of 432x230. This will be `null` if the image has not been generated. | | `issue` | [`Issue!`](#issue) | Issue the design belongs to. | -| `notesCount` | [`Int!`](#int) | Total count of user-created notes for this design. | +| `notesCount` | [`Int!`](#int) | Total count of user-created notes for the design. | | `project` | [`Project!`](#project) | Project the design belongs to. | -| `version` | [`DesignVersion!`](#designversion) | Version this design-at-versions is pinned to. | +| `version` | [`DesignVersion!`](#designversion) | Version the design-at-versions is pinned to. | ### `DesignCollection` @@ -25256,8 +25256,8 @@ Changes to a single file. | Name | Type | Description | | ---- | ---- | ----------- | -| `additions` | [`Int!`](#int) | Number of lines added to this file. | -| `deletions` | [`Int!`](#int) | Number of lines deleted from this file. | +| `additions` | [`Int!`](#int) | Number of lines added to the file. | +| `deletions` | [`Int!`](#int) | Number of lines deleted from the file. | | `path` | [`String!`](#string) | File path, relative to repository root. | ### `DiffStatsSummary` @@ -25803,7 +25803,7 @@ Relationship between an epic and an issue. | `blockedByCount` | [`Int`](#int) | Count of issues blocking this issue. | | `blockedByIssues` | [`IssueConnection`](#issueconnection) | Issues blocking this issue. (see [Connections](#connections)) | | `blockingCount` | [`Int!`](#int) | Count of issues this issue is blocking. | -| `closedAsDuplicateOf` | [`Issue`](#issue) | Issue this issue was closed as a duplicate of. | +| `closedAsDuplicateOf` | [`Issue`](#issue) | Issue the issue was closed as a duplicate of. | | `closedAt` | [`Time`](#time) | Timestamp of when the issue was closed. | | `commenters` | [`UserCoreConnection!`](#usercoreconnection) | All commenters on this noteable. (see [Connections](#connections)) | | `confidential` | [`Boolean!`](#boolean) | Indicates the issue is confidential. | @@ -25812,7 +25812,7 @@ Relationship between an epic and an issue. | `customerRelationsContacts` | [`CustomerRelationsContactConnection`](#customerrelationscontactconnection) | Customer relations contacts of the issue. (see [Connections](#connections)) | | `description` | [`String`](#string) | Description of the issue. | | `descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. | -| `designCollection` | [`DesignCollection`](#designcollection) | Collection of design images associated with this issue. | +| `designCollection` | [`DesignCollection`](#designcollection) | Collection of design images associated with the issue. | | `discussionLocked` | [`Boolean!`](#boolean) | Indicates discussion is locked on the issue. | | `discussions` | [`DiscussionConnection!`](#discussionconnection) | All discussions on this noteable. (see [Connections](#connections)) | | `downvotes` | [`Int!`](#int) | Number of downvotes the issue has received. | @@ -26086,12 +26086,12 @@ Representing an event. | Name | Type | Description | | ---- | ---- | ----------- | | `action` | [`EventAction!`](#eventaction) | Action of the event. | -| `author` | [`UserCore!`](#usercore) | Author of this event. | -| `createdAt` | [`Time!`](#time) | When this event was created. | +| `author` | [`UserCore!`](#usercore) | Author of the event. | +| `createdAt` | [`Time!`](#time) | When the event was created. | | `id` | [`ID!`](#id) | ID of the event. | -| `project` | [`Project`](#project) | Project of this event. | -| `target` | [`EventTargetType`](#eventtargettype) | The target of the event. | -| `updatedAt` | [`Time!`](#time) | When this event was updated. | +| `project` | [`Project`](#project) | Project of the event. | +| `target` | [`EventTargetType`](#eventtargettype) | Target of the event. | +| `updatedAt` | [`Time!`](#time) | When the event was updated. | ### `ExternalAuditEventDestination` @@ -26713,7 +26713,7 @@ GPG signature for a signed commit. | `allowStaleRunnerPruning` | [`Boolean!`](#boolean) | Indicates whether to regularly prune stale group runners. Defaults to false. | | `allowedStatuses` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusConnection`](#workitemwidgetstatusconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. Allowed statuses for the group. | | `amazonS3Configurations` | [`AmazonS3ConfigurationTypeConnection`](#amazons3configurationtypeconnection) | Amazon S3 configurations that receive audit events belonging to the group. (see [Connections](#connections)) | -| `autoDevopsEnabled` | [`Boolean`](#boolean) | Indicates whether Auto DevOps is enabled for all projects within this group. | +| `autoDevopsEnabled` | [`Boolean`](#boolean) | Indicates whether Auto DevOps is enabled for all projects within the group. | | `avatarUrl` | [`String`](#string) | Avatar URL of the group. | | `ciCdSettings` {{< icon name="warning-solid" >}} | [`CiCdSettings`](#cicdsettings) | **Introduced** in GitLab 17.9. **Status**: Experiment. Namespace CI/CD settings for the namespace. | | `containerRepositoriesCount` | [`Int!`](#int) | Number of container repositories in the group. | @@ -26730,7 +26730,7 @@ GPG signature for a signed commit. | `dependencyProxyTotalSize` | [`String!`](#string) | Total size of the dependency proxy cached images. | | `dependencyProxyTotalSizeBytes` | [`BigInt!`](#bigint) | Total size of the dependency proxy cached images in bytes, encoded as a string. | | `dependencyProxyTotalSizeInBytes` {{< icon name="warning-solid" >}} | [`Int!`](#int) | **Deprecated** in GitLab 16.1. Use `dependencyProxyTotalSizeBytes`. | -| `descendantGroupsCount` | [`Int!`](#int) | Count of direct descendant groups of this group. | +| `descendantGroupsCount` | [`Int!`](#int) | Count of direct descendant groups of the group. | | `description` | [`String`](#string) | Description of the namespace. | | `descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. | | `dora` | [`GroupDora`](#groupdora) | Group's DORA metrics. | @@ -26746,7 +26746,7 @@ GPG signature for a signed commit. | `fullName` | [`String!`](#string) | Full name of the namespace. | | `fullPath` | [`ID!`](#id) | Full path of the namespace. | | `googleCloudLoggingConfigurations` | [`GoogleCloudLoggingConfigurationTypeConnection`](#googlecloudloggingconfigurationtypeconnection) | Google Cloud logging configurations that receive audit events belonging to the group. (see [Connections](#connections)) | -| `groupMembersCount` | [`Int!`](#int) | Count of direct members of this group. | +| `groupMembersCount` | [`Int!`](#int) | Count of direct members of the group. | | `id` | [`ID!`](#id) | ID of the namespace. | | `isAdjournedDeletionEnabled` {{< icon name="warning-solid" >}} | [`Boolean!`](#boolean) | **Introduced** in GitLab 16.11. **Status**: Experiment. Indicates if delayed group deletion is enabled. | | `isLinkedToSubscription` | [`Boolean`](#boolean) | Indicates if group is linked to a subscription. | @@ -26754,8 +26754,8 @@ GPG signature for a signed commit. | `lockDuoFeaturesEnabled` {{< icon name="warning-solid" >}} | [`Boolean`](#boolean) | **Introduced** in GitLab 16.10. **Status**: Experiment. Indicates if the GitLab Duo features enabled setting is enforced for all subgroups. | | `lockMathRenderingLimitsEnabled` | [`Boolean`](#boolean) | Indicates if math rendering limits are locked for all descendant groups. | | `markedForDeletionOn` {{< icon name="warning-solid" >}} | [`Time`](#time) | **Introduced** in GitLab 16.11. **Status**: Experiment. Date when group was scheduled to be deleted. | -| `mathRenderingLimitsEnabled` | [`Boolean`](#boolean) | Indicates if math rendering limits are used for this group. | -| `maxAccessLevel` | [`AccessLevel!`](#accesslevel) | The maximum access level of the current user in the group. | +| `mathRenderingLimitsEnabled` | [`Boolean`](#boolean) | Indicates if math rendering limits are used for the group. | +| `maxAccessLevel` | [`AccessLevel!`](#accesslevel) | Maximum access level of the current user in the group. | | `mentionsDisabled` | [`Boolean`](#boolean) | Indicates if a group is disabled from getting mentioned. | | `name` | [`String!`](#string) | Name of the namespace. | | `organizationEditPath` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 17.1. **Status**: Experiment. Path for editing group at the organization level. | @@ -26767,14 +26767,14 @@ GPG signature for a signed commit. | `permanentDeletionDate` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 16.11. **Status**: Experiment. Date when group will be deleted if delayed group deletion is enabled. | | `productAnalyticsStoredEventsLimit` {{< icon name="warning-solid" >}} | [`Int`](#int) | **Introduced** in GitLab 16.9. **Status**: Experiment. Number of product analytics events namespace is permitted to store per cycle. | | `projectCreationLevel` | [`String`](#string) | Permission level required to create projects in the group. | -| `projectsCount` | [`Int!`](#int) | Count of direct projects in this group. | +| `projectsCount` | [`Int!`](#int) | Count of direct projects in the group. | | `recentIssueBoards` | [`BoardConnection`](#boardconnection) | List of recently visited boards of the group. Maximum size is 4. (see [Connections](#connections)) | | `repositorySizeExcessProjectCount` | [`Int`](#int) | Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. | | `requestAccessEnabled` | [`Boolean`](#boolean) | Indicates if users can request access to namespace. | -| `requireTwoFactorAuthentication` | [`Boolean`](#boolean) | Indicates if all users in this group are required to set up two-factor authentication. | +| `requireTwoFactorAuthentication` | [`Boolean`](#boolean) | Indicates if all users in the group are required to set up two-factor authentication. | | `rootStorageStatistics` | [`RootStorageStatistics`](#rootstoragestatistics) | Aggregated storage statistics of the namespace. Only available for root namespaces. | | `securityPolicyProject` | [`Project`](#project) | Security policy project assigned to the namespace. | -| `shareWithGroupLock` | [`Boolean`](#boolean) | Indicates if sharing a project with another group within this group is prevented. | +| `shareWithGroupLock` | [`Boolean`](#boolean) | Indicates if sharing a project with another group within the group is prevented. | | `sharedRunnersSetting` | [`SharedRunnersSetting`](#sharedrunnerssetting) | Shared runners availability for the namespace and its descendants. | | `sidebar` {{< icon name="warning-solid" >}} | [`NamespaceSidebar`](#namespacesidebar) | **Introduced** in GitLab 17.6. **Status**: Experiment. Data needed to render the sidebar for the namespace. | | `stats` | [`GroupStats`](#groupstats) | Group statistics. | @@ -27577,7 +27577,7 @@ four standard [pagination arguments](#pagination-arguments): ##### `Group.label` -Label available on this group. +Label available on the group. Returns [`Label`](#label). @@ -29150,7 +29150,7 @@ Describes an issuable resource link for incident issues. | `blockedByCount` | [`Int`](#int) | Count of issues blocking this issue. | | `blockedByIssues` | [`IssueConnection`](#issueconnection) | Issues blocking this issue. (see [Connections](#connections)) | | `blockingCount` | [`Int!`](#int) | Count of issues this issue is blocking. | -| `closedAsDuplicateOf` | [`Issue`](#issue) | Issue this issue was closed as a duplicate of. | +| `closedAsDuplicateOf` | [`Issue`](#issue) | Issue the issue was closed as a duplicate of. | | `closedAt` | [`Time`](#time) | Timestamp of when the issue was closed. | | `commenters` | [`UserCoreConnection!`](#usercoreconnection) | All commenters on this noteable. (see [Connections](#connections)) | | `confidential` | [`Boolean!`](#boolean) | Indicates the issue is confidential. | @@ -29159,7 +29159,7 @@ Describes an issuable resource link for incident issues. | `customerRelationsContacts` | [`CustomerRelationsContactConnection`](#customerrelationscontactconnection) | Customer relations contacts of the issue. (see [Connections](#connections)) | | `description` | [`String`](#string) | Description of the issue. | | `descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. | -| `designCollection` | [`DesignCollection`](#designcollection) | Collection of design images associated with this issue. | +| `designCollection` | [`DesignCollection`](#designcollection) | Collection of design images associated with the issue. | | `discussionLocked` | [`Boolean!`](#boolean) | Indicates discussion is locked on the issue. | | `discussions` | [`DiscussionConnection!`](#discussionconnection) | All discussions on this noteable. (see [Connections](#connections)) | | `downvotes` | [`Int!`](#int) | Number of downvotes the issue has received. | @@ -29777,7 +29777,7 @@ Defines which user roles, users, or groups can merge into a protected branch. | `approved` | [`Boolean!`](#boolean) | Indicates if the merge request has all the required approvals. | | `approvedBy` | [`UserCoreConnection`](#usercoreconnection) | Users who approved the merge request. (see [Connections](#connections)) | | `assignees` | [`MergeRequestAssigneeConnection`](#mergerequestassigneeconnection) | Assignees of the merge request. (see [Connections](#connections)) | -| `author` | [`MergeRequestAuthor`](#mergerequestauthor) | User who created this merge request. | +| `author` | [`MergeRequestAuthor`](#mergerequestauthor) | User who created the merge request. | | `autoMergeEnabled` | [`Boolean!`](#boolean) | Indicates if auto merge is enabled for the merge request. | | `autoMergeStrategy` | [`String`](#string) | Selected auto merge strategy. | | `availableAutoMergeStrategies` | [`[String!]`](#string) | Array of available auto merge strategies. | @@ -29799,8 +29799,8 @@ Defines which user roles, users, or groups can merge into a protected branch. | `descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. | | `detailedMergeStatus` | [`DetailedMergeStatus`](#detailedmergestatus) | Detailed merge status of the merge request. | | `diffHeadSha` | [`String`](#string) | Diff head SHA of the merge request. | -| `diffRefs` | [`DiffRefs`](#diffrefs) | References of the base SHA, the head SHA, and the start SHA for this merge request. | -| `diffStatsSummary` | [`DiffStatsSummary`](#diffstatssummary) | Summary of which files were changed in this merge request. | +| `diffRefs` | [`DiffRefs`](#diffrefs) | References of the base SHA, the head SHA, and the start SHA for the merge request. | +| `diffStatsSummary` | [`DiffStatsSummary`](#diffstatssummary) | Summary of which files were changed in the merge request. | | `discussionLocked` | [`Boolean!`](#boolean) | Indicates if comments on the merge request are locked to members only. | | `discussions` | [`DiscussionConnection!`](#discussionconnection) | All discussions on this noteable. (see [Connections](#connections)) | | `divergedFromTargetBranch` | [`Boolean!`](#boolean) | Indicates if the source branch is behind the target branch. | @@ -29827,7 +29827,7 @@ Defines which user roles, users, or groups can merge into a protected branch. | `mergeTrainCar` {{< icon name="warning-solid" >}} | [`MergeTrainCar`](#mergetraincar) | **Introduced** in GitLab 17.2. **Status**: Experiment. Represents the merge request in a merge train. | | `mergeTrainIndex` {{< icon name="warning-solid" >}} | [`Int`](#int) | **Deprecated** in GitLab 17.4. Use `index` on `MergeTrains::CarType` instead. | | `mergeTrainsCount` {{< icon name="warning-solid" >}} | [`Int`](#int) | **Deprecated** in GitLab 17.4. Use `count` from `cars` connection on `MergeTrains::TrainType` instead. | -| `mergeUser` | [`UserCore`](#usercore) | User who merged this merge request or set it to auto-merge. | +| `mergeUser` | [`UserCore`](#usercore) | User who merged the merge request or set it to auto-merge. | | `mergeWhenPipelineSucceeds` | [`Boolean`](#boolean) | Indicates if the merge has been set to auto-merge. | | `mergeabilityChecks` {{< icon name="warning-solid" >}} | [`[MergeRequestMergeabilityCheck!]!`](#mergerequestmergeabilitycheck) | **Introduced** in GitLab 16.5. **Status**: Experiment. Status of all mergeability checks of the merge request. | | `mergeable` | [`Boolean!`](#boolean) | Indicates if the merge request is mergeable. | @@ -29860,7 +29860,7 @@ Defines which user roles, users, or groups can merge into a protected branch. | `squashOnMerge` | [`Boolean!`](#boolean) | Indicates if the merge request will be squashed when merged. | | `squashReadOnly` | [`Boolean!`](#boolean) | Indicates if `squashReadOnly` is enabled. | | `state` | [`MergeRequestState!`](#mergerequeststate) | State of the merge request. | -| `subscribed` | [`Boolean!`](#boolean) | Indicates if the currently logged in user is subscribed to this merge request. | +| `subscribed` | [`Boolean!`](#boolean) | Indicates if the currently logged in user is subscribed to the merge request. | | `suggestedReviewers` | [`SuggestedReviewersType`](#suggestedreviewerstype) | Suggested reviewers for merge request. | | `supportsLockOnMerge` | [`Boolean!`](#boolean) | Indicates if the merge request supports locked labels. | | `targetBranch` | [`String!`](#string) | Target branch of the merge request. | @@ -29902,7 +29902,7 @@ four standard [pagination arguments](#pagination-arguments): ##### `MergeRequest.diffStats` -Details about which files were changed in this merge request. +Details about which files were changed in the merge request. Returns [`[DiffStats!]`](#diffstats). @@ -30021,7 +30021,7 @@ A user assigned to a merge request. | `lastActivityOn` | [`Date`](#date) | Date the user last performed any actions. | | `linkedin` | [`String`](#string) | LinkedIn profile name of the user. | | `location` | [`String`](#string) | Location of the user. | -| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of this user's interactions with the merge request. | +| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of the user's interactions with the merge request. | | `name` | [`String!`](#string) | Human-readable name of the user. Returns `****` if the user is a project bot and the requester does not have permission to view the project. | | `namespace` | [`Namespace`](#namespace) | Personal namespace of the user. | | `namespaceCommitEmails` | [`NamespaceCommitEmailConnection`](#namespacecommitemailconnection) | User's custom namespace commit emails. (see [Connections](#connections)) | @@ -30438,7 +30438,7 @@ The author of the merge request. | `lastActivityOn` | [`Date`](#date) | Date the user last performed any actions. | | `linkedin` | [`String`](#string) | LinkedIn profile name of the user. | | `location` | [`String`](#string) | Location of the user. | -| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of this user's interactions with the merge request. | +| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of the user's interactions with the merge request. | | `name` | [`String!`](#string) | Human-readable name of the user. Returns `****` if the user is a project bot and the requester does not have permission to view the project. | | `namespace` | [`Namespace`](#namespace) | Personal namespace of the user. | | `namespaceCommitEmails` | [`NamespaceCommitEmailConnection`](#namespacecommitemailconnection) | User's custom namespace commit emails. (see [Connections](#connections)) | @@ -30906,7 +30906,7 @@ A user participating in a merge request. | `lastActivityOn` | [`Date`](#date) | Date the user last performed any actions. | | `linkedin` | [`String`](#string) | LinkedIn profile name of the user. | | `location` | [`String`](#string) | Location of the user. | -| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of this user's interactions with the merge request. | +| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of the user's interactions with the merge request. | | `name` | [`String!`](#string) | Human-readable name of the user. Returns `****` if the user is a project bot and the requester does not have permission to view the project. | | `namespace` | [`Namespace`](#namespace) | Personal namespace of the user. | | `namespaceCommitEmails` | [`NamespaceCommitEmailConnection`](#namespacecommitemailconnection) | User's custom namespace commit emails. (see [Connections](#connections)) | @@ -31342,7 +31342,7 @@ A user assigned to a merge request as a reviewer. | `lastActivityOn` | [`Date`](#date) | Date the user last performed any actions. | | `linkedin` | [`String`](#string) | LinkedIn profile name of the user. | | `location` | [`String`](#string) | Location of the user. | -| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of this user's interactions with the merge request. | +| `mergeRequestInteraction` | [`UserMergeRequestInteraction`](#usermergerequestinteraction) | Details of the user's interactions with the merge request. | | `name` | [`String!`](#string) | Human-readable name of the user. Returns `****` if the user is a project bot and the requester does not have permission to view the project. | | `namespace` | [`Namespace`](#namespace) | Personal namespace of the user. | | `namespaceCommitEmails` | [`NamespaceCommitEmailConnection`](#namespacecommitemailconnection) | User's custom namespace commit emails. (see [Connections](#connections)) | @@ -31860,7 +31860,7 @@ Represents a milestone. | `iid` | [`ID!`](#id) | Internal ID of the milestone. | | `project` | [`Project`](#project) | Project of the milestone. | | `projectMilestone` | [`Boolean!`](#boolean) | Indicates if milestone is at project level. | -| `releases` | [`ReleaseConnection`](#releaseconnection) | Releases associated with this milestone. (see [Connections](#connections)) | +| `releases` | [`ReleaseConnection`](#releaseconnection) | Releases associated with the milestone. (see [Connections](#connections)) | | `startDate` | [`Time`](#time) | Timestamp of the milestone start date. | | `state` | [`MilestoneStateEnum!`](#milestonestateenum) | State of the milestone. | | `stats` | [`MilestoneStats`](#milestonestats) | Milestone statistics. | @@ -43113,8 +43113,8 @@ Values for sorting milestones. | `CREATED_DESC` | Created at descending order. | | `DUE_DATE_ASC` | Milestone due date by ascending order. | | `DUE_DATE_DESC` | Milestone due date by descending order. | -| `EXPIRED_LAST_DUE_DATE_ASC` | Group milestones in this order: non-expired milestones with due dates, non-expired milestones without due dates and expired milestones then sort by due date in ascending order. | -| `EXPIRED_LAST_DUE_DATE_DESC` | Group milestones in this order: non-expired milestones with due dates, non-expired milestones without due dates and expired milestones then sort by due date in descending order. | +| `EXPIRED_LAST_DUE_DATE_ASC` | Group milestones in the order: non-expired milestones with due dates, non-expired milestones without due dates and expired milestones then sort by due date in ascending order. | +| `EXPIRED_LAST_DUE_DATE_DESC` | Group milestones in the order: non-expired milestones with due dates, non-expired milestones without due dates and expired milestones then sort by due date in descending order. | | `UPDATED_ASC` | Updated at ascending order. | | `UPDATED_DESC` | Updated at descending order. | | `created_asc` {{< icon name="warning-solid" >}} | **Deprecated** in GitLab 13.5. This was renamed. Use: `CREATED_ASC`. | @@ -46249,15 +46249,15 @@ Implementations: | Name | Type | Description | | ---- | ---- | ----------- | -| `diffRefs` | [`DiffRefs!`](#diffrefs) | Diff refs for this design. | -| `event` | [`DesignVersionEvent!`](#designversionevent) | How this design was changed in the current version. | +| `diffRefs` | [`DiffRefs!`](#diffrefs) | Diff refs for the design. | +| `event` | [`DesignVersionEvent!`](#designversionevent) | How the design was changed in the current version. | | `filename` | [`String!`](#string) | Filename of the design. | | `fullPath` | [`ID!`](#id) | Full path to the design file. | -| `id` | [`ID!`](#id) | ID of this design. | +| `id` | [`ID!`](#id) | ID of the design. | | `image` | [`String!`](#string) | URL of the full-sized image. | | `imageV432x230` | [`String`](#string) | The URL of the design resized to fit within the bounds of 432x230. This will be `null` if the image has not been generated. | | `issue` | [`Issue!`](#issue) | Issue the design belongs to. | -| `notesCount` | [`Int!`](#int) | Total count of user-created notes for this design. | +| `notesCount` | [`Int!`](#int) | Total count of user-created notes for the design. | | `project` | [`Project!`](#project) | Project the design belongs to. | #### `Entry` @@ -47722,8 +47722,8 @@ A year and month input for querying product analytics usage data. | `iids` | [`[String!]`](#string) | List of IIDs of issues to exclude. For example, `[1, 2]`. | | `iterationId` | [`[ID!]`](#id) | List of iteration Global IDs not applied to the issue. | | `iterationWildcardId` | [`IterationWildcardId`](#iterationwildcardid) | Filter by negated iteration ID wildcard. | -| `labelName` | [`[String!]`](#string) | Labels not applied to this issue. | -| `milestoneTitle` | [`[String!]`](#string) | Milestone not applied to this issue. | +| `labelName` | [`[String!]`](#string) | Labels not applied to the issue. | +| `milestoneTitle` | [`[String!]`](#string) | Milestone not applied to the issue. | | `milestoneWildcardId` | [`NegatedMilestoneWildcardId`](#negatedmilestonewildcardid) | Filter by negated milestone wildcard values. | | `myReactionEmoji` | [`String`](#string) | Filter by reaction emoji applied by the current user. | | `releaseTag` | [`[String!]`](#string) | Release tag not associated with the issue's milestone. Ignored when parent is a group. | diff --git a/doc/ci/environments/protected_environments.md b/doc/ci/environments/protected_environments.md index 6e847be8a1e..84a18077c07 100644 --- a/doc/ci/environments/protected_environments.md +++ b/doc/ci/environments/protected_environments.md @@ -104,7 +104,7 @@ Alternatively, you can use the API to protect an environment: For example, this group is called `protected-access-group` and has the group ID `9899826`. Note that the rest of the examples in these steps use this group. - ![Group Access](img/protected_access_group_v13_6.png) + ![Protected access group interface showing the New project button](img/protected_access_group_v13_6.png) 1. Use the API to add a user to the group as a reporter: diff --git a/doc/install/install_ai_gateway.md b/doc/install/install_ai_gateway.md index 3e2903077c5..f6775f007a4 100644 --- a/doc/install/install_ai_gateway.md +++ b/doc/install/install_ai_gateway.md @@ -52,12 +52,12 @@ Using the `:latest` tag is **not recommended** as it can cause incompatibility i ``` Replace `` with the version that matches your GitLab instance. For example, if your GitLab version is `v17.9.0`, use `self-hosted-v17.9.0-ee`. - From the container host, accessing `http://localhost:5052/docs` should open the AI gateway API documentation. + From the container host, accessing `http://localhost:5052` should return `{"error":"No authorization header presented"}`. -1. Ensure that port `5052` is forwarded to the container from the host and configure the AI gateway URL through the Rails console: +1. Ensure that port `5052` is forwarded to the container from the host and configure the AI gateway URL through the [Rails console](../administration/operations/rails_console.md): ```ruby - Ai::Setting.instance.update!(ai_gateway_url: 'http://localhost:5052') + Ai::Setting.instance.update!(ai_gateway_url: 'http://ai-gateway-host.example.com:5052') ``` You should configure the URL this way because the URL is stored in the database, and you can then manage it through the Admin area. Although the `AI_GATEWAY_URL` environment variable is still supported for legacy reasons, using the database setting is preferred for better configuration management. diff --git a/doc/operations/incident_management/integrations.md b/doc/operations/incident_management/integrations.md index 080771276f0..34d9ce9b30b 100644 --- a/doc/operations/incident_management/integrations.md +++ b/doc/operations/incident_management/integrations.md @@ -22,7 +22,7 @@ alerts integrations by navigating to **Settings > Monitor** in your project's sidebar menu, and expanding the **Alerts** section. The list displays the integration name, type, and status (enabled or disabled): -![Current Integrations](img/integrations_list_v13_5.png) +![Table showing configured alerts details](img/integrations_list_v13_5.png) ## Configuration diff --git a/doc/user/gitlab_duo/tutorials/fix_code_python_shop.md b/doc/user/gitlab_duo/tutorials/fix_code_python_shop.md index c701d42f29d..eee51dd0957 100644 --- a/doc/user/gitlab_duo/tutorials/fix_code_python_shop.md +++ b/doc/user/gitlab_duo/tutorials/fix_code_python_shop.md @@ -691,10 +691,10 @@ wheels/ {{< /tab >}} {{< tab title="README.md" >}} - + A comprehensive `README` file with setup and usage instructions. -```markdown +````markdown # Bookstore Inventory Management System A Python web application for managing bookstore inventory, built with Flask and SQLite. @@ -721,20 +721,20 @@ A Python web application for managing bookstore inventory, built with Flask and cd python-shop-app ``` -1. Create and activate a virtual environment: +2. Create and activate a virtual environment: ```shell python -m venv myenv source myenv/bin/activate # On Windows: myenv\Scripts\activate ``` -1. Install dependencies: +3. Install dependencies: ```shell pip install -r requirements.txt ``` -1. Set up environment variables: +4. Set up environment variables: Copy `.env.example` to `.env` and modify as needed. @@ -746,7 +746,7 @@ A Python web application for managing bookstore inventory, built with Flask and flask run ``` -1. The API will be available at `http://localhost:5000/` +2. The API will be available at `http://localhost:5000/` ## API Endpoints @@ -763,7 +763,8 @@ Run tests with `pytest`: ```python python -m pytest ``` - +```` + {{< /tab >}} {{< tab title="requirements.txt" >}} diff --git a/doc/user/project/merge_requests/duo_in_merge_requests.md b/doc/user/project/merge_requests/duo_in_merge_requests.md index 7835113466b..6711eefb18d 100644 --- a/doc/user/project/merge_requests/duo_in_merge_requests.md +++ b/doc/user/project/merge_requests/duo_in_merge_requests.md @@ -142,7 +142,7 @@ Provide feedback on this experimental feature in [issue 408991](https://gitlab.c {{< details >}} - Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated -- LLM: Anthropic [Claude 3.7 Sonnet](https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-7-sonnet) +- LLM: Anthropic [Claude 3.5 Sonnet](https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-sonnet) {{< /details >}} diff --git a/doc/user/project/settings/project_access_tokens.md b/doc/user/project/settings/project_access_tokens.md index dcaf6ca72ec..b36157016b5 100644 --- a/doc/user/project/settings/project_access_tokens.md +++ b/doc/user/project/settings/project_access_tokens.md @@ -28,7 +28,7 @@ Use a project access token to authenticate: - The project access token as the password. Project access tokens are similar to [group access tokens](../../group/settings/group_access_tokens.md) -and [personal access tokens](../../profile/personal_access_tokens.md), but project access tokens are scoped to a project, so you cannot use them to access resources from other projects. +and [personal access tokens](../../profile/personal_access_tokens.md), but project access tokens are scoped to a project, so you cannot use them to access another project's resources. On GitLab Self-Managed instances, project access tokens are subject to the same [maximum lifetime limits](../../../administration/settings/account_and_limit_settings.md#limit-the-lifetime-of-access-tokens) as personal access tokens if the limit is set. diff --git a/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_organization_id.rb b/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_organization_id.rb new file mode 100644 index 00000000000..a9fa1321d23 --- /dev/null +++ b/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_organization_id.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module Gitlab + module BackgroundMigration + class BackfillSnippetRepositoriesSnippetOrganizationId < BackfillDesiredShardingKeyJob + operation_name :backfill_snippet_repositories_snippet_organization_id + feature_category :source_code_management + end + end +end diff --git a/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_project_id.rb b/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_project_id.rb new file mode 100644 index 00000000000..fba695a972c --- /dev/null +++ b/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_project_id.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module Gitlab + module BackgroundMigration + class BackfillSnippetRepositoriesSnippetProjectId < BackfillDesiredShardingKeyJob + operation_name :backfill_snippet_repositories_snippet_project_id + feature_category :source_code_management + end + end +end diff --git a/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_organization_id.rb b/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_organization_id.rb new file mode 100644 index 00000000000..11ae10c9bc8 --- /dev/null +++ b/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_organization_id.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module Gitlab + module BackgroundMigration + class BackfillSnippetUserMentionsSnippetOrganizationId < BackfillDesiredShardingKeyJob + operation_name :backfill_snippet_user_mentions_snippet_organization_id + feature_category :source_code_management + end + end +end diff --git a/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_project_id.rb b/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_project_id.rb new file mode 100644 index 00000000000..46670571c40 --- /dev/null +++ b/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_project_id.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module Gitlab + module BackgroundMigration + class BackfillSnippetUserMentionsSnippetProjectId < BackfillDesiredShardingKeyJob + operation_name :backfill_snippet_user_mentions_snippet_project_id + feature_category :source_code_management + end + end +end diff --git a/lib/gitlab/background_migration/remove_orphaned_vulnerability_notes_batched_migration.rb b/lib/gitlab/background_migration/remove_orphaned_vulnerability_notes_batched_migration.rb new file mode 100644 index 00000000000..5ac51e47132 --- /dev/null +++ b/lib/gitlab/background_migration/remove_orphaned_vulnerability_notes_batched_migration.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Gitlab + module BackgroundMigration + class RemoveOrphanedVulnerabilityNotesBatchedMigration < BatchedMigrationJob + operation_name :remove_orphaned_vulnerability_notes + feature_category :vulnerability_management + + def perform + each_sub_batch do |sub_batch| + orphaned_notes = sub_batch + .where(noteable_type: 'Vulnerability') + .where.not(noteable_id: Vulnerability.where(id: sub_batch.pluck(:noteable_id)).pluck(:id)) # rubocop:disable Rails/PluckInWhere -- we want to use pluck here + orphaned_notes.delete_all + end + end + end + end +end diff --git a/lib/gitlab/ci/pipeline/chain/config/content.rb b/lib/gitlab/ci/pipeline/chain/config/content.rb index f7824fb9a89..2bf088d537b 100644 --- a/lib/gitlab/ci/pipeline/chain/config/content.rb +++ b/lib/gitlab/ci/pipeline/chain/config/content.rb @@ -11,7 +11,7 @@ module Gitlab def perform! if pipeline_config&.exists? - @pipeline.build_pipeline_config(content: pipeline_config.content, project_id: @pipeline.project_id) + build_pipeline_config @command.config_content = pipeline_config.content @pipeline.config_source = pipeline_config.source @command.pipeline_config = pipeline_config @@ -39,6 +39,16 @@ module Gitlab ) end end + + def build_pipeline_config + # Inputs may contain secrets, so we don't want to save them in the DB as plain text. + # It's safe to not save a pipeline-config because we are currently considering + # dropping the `p_ci_pipelines_config` table because it's not used anywhere. + # https://gitlab.com/gitlab-org/gitlab/-/issues/520828#note_2364398251 + return if @command.inputs.present? + + @pipeline.build_pipeline_config(content: pipeline_config.content, project_id: @pipeline.project_id) + end end end end diff --git a/lib/gitlab/i18n.rb b/lib/gitlab/i18n.rb index 51bde9ec3df..436f9955587 100644 --- a/lib/gitlab/i18n.rb +++ b/lib/gitlab/i18n.rb @@ -50,12 +50,12 @@ module Gitlab 'eo' => 0, 'es' => 40, 'fil_PH' => 0, - 'fr' => 97, + 'fr' => 98, 'gl_ES' => 0, 'id_ID' => 0, 'it' => 85, 'ja' => 94, - 'ko' => 61, + 'ko' => 62, 'nb_NO' => 15, 'nl_NL' => 0, 'pl_PL' => 1, diff --git a/lib/gitlab/redis.rb b/lib/gitlab/redis.rb index cfd2ada7b2e..dd66d1d51c7 100644 --- a/lib/gitlab/redis.rb +++ b/lib/gitlab/redis.rb @@ -10,6 +10,7 @@ module Gitlab ALL_CLASSES = [ Gitlab::Redis::BufferedCounter, Gitlab::Redis::Cache, + Gitlab::Redis::ClusterSessions, Gitlab::Redis::DbLoadBalancing, Gitlab::Redis::FeatureFlag, *Gitlab::Redis::Queues.instances.values, # dynamically adds QueueShard* classes diff --git a/lib/gitlab/redis/cluster_sessions.rb b/lib/gitlab/redis/cluster_sessions.rb new file mode 100644 index 00000000000..caaad3c29ad --- /dev/null +++ b/lib/gitlab/redis/cluster_sessions.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Gitlab + module Redis + class ClusterSessions < ::Gitlab::Redis::Wrapper + class << self + # The data we store on Sessions used to be stored on SharedState. + def config_fallback + SharedState + end + end + end + end +end diff --git a/lib/gitlab/redis/sessions.rb b/lib/gitlab/redis/sessions.rb index ddcfdf6e798..093f896dbd3 100644 --- a/lib/gitlab/redis/sessions.rb +++ b/lib/gitlab/redis/sessions.rb @@ -2,7 +2,7 @@ module Gitlab module Redis - class Sessions < ::Gitlab::Redis::Wrapper + class Sessions < ::Gitlab::Redis::MultiStoreWrapper SESSION_NAMESPACE = 'session:gitlab' USER_SESSIONS_NAMESPACE = 'session:user:gitlab' USER_SESSIONS_LOOKUP_NAMESPACE = 'session:lookup:user:gitlab' @@ -13,6 +13,10 @@ module Gitlab def self.config_fallback SharedState end + + def self.multistore + MultiStore.create_using_pool(ClusterSessions.pool, pool, store_name) + end end end end diff --git a/locale/bg/gitlab.po b/locale/bg/gitlab.po index a66ad04d087..d358c7466ca 100644 --- a/locale/bg/gitlab.po +++ b/locale/bg/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: bg\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:32\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr "" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/cs_CZ/gitlab.po b/locale/cs_CZ/gitlab.po index 8aca364a7d2..c5a4d9a63e7 100644 --- a/locale/cs_CZ/gitlab.po +++ b/locale/cs_CZ/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: cs\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:32\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr "" @@ -1852,15 +1852,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -4159,7 +4150,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4540,6 +4534,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -11302,6 +11299,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15743,6 +15743,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -17321,6 +17324,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -25303,6 +25309,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -26404,6 +26413,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28663,6 +28678,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -29221,6 +29239,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -29254,6 +29275,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -44465,6 +44489,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -53274,6 +53301,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -53609,6 +53654,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53988,7 +54036,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -54348,6 +54396,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -59265,6 +59316,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -62003,6 +62057,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65953,6 +66010,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/da_DK/gitlab.po b/locale/da_DK/gitlab.po index ff061dc8cd4..840272683f4 100644 --- a/locale/da_DK/gitlab.po +++ b/locale/da_DK/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: da\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:32\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr " %{start} til %{end}" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total} advarsler fundet: viser første %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "Kopiér filindhold" msgid "Copy file path" msgstr "Kopiér filsti" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Kunne ikke indlæse tildelte. Prøv venligst igen." @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "Rediger regelsætprojekt" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/de/gitlab.po b/locale/de/gitlab.po index 11797f45d1e..07d2e921066 100644 --- a/locale/de/gitlab.po +++ b/locale/de/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: de\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr " %{start} bis %{end}" @@ -196,8 +196,8 @@ msgstr[1] "%d Zeichen über dem Limit" msgid "%d character over limit." msgid_plural "%d characters over limit." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d Zeichen über dem Limit." +msgstr[1] "%d Zeichen über dem Limit." msgid "%d character remaining" msgid_plural "%d characters remaining" @@ -1552,15 +1552,6 @@ msgstr "%{total} verbleibendes Ticketgewicht" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total} Warnungen gefunden: erste %{warningsDisplayed} werden angezeigt" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "%{type} „%{name}“ wurde erfolgreich wiederhergestellt" - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type} „%{name}“ wird gelöscht." - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{type} „%{name}“ wird am %{date} gelöscht." - msgid "%{type} must be a %{help_link}" msgstr "%{type} muss ein %{help_link} sein" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "Modell verwendet ein API-Token" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -5450,7 +5447,7 @@ msgid "AiPowered|Assign seats" msgstr "Plätze zuweisen" msgid "AiPowered|Beta Self-hosted models" -msgstr "" +msgstr "Beta – Selbstgehostete Modelle" msgid "AiPowered|By turning on these features, you accept the %{linkStart}GitLab Testing Agreement%{linkEnd}." msgstr "" @@ -5558,7 +5555,7 @@ msgid "AiPowered|Turn on experiment and beta GitLab Duo features" msgstr "" msgid "AiPowered|Use beta self-hosted models features" -msgstr "" +msgstr "Betafunktionen für selbstgehostete Modelle verwenden" msgid "AiPowered|View GitLab Duo settings" msgstr "Einstellungen" @@ -9128,7 +9125,7 @@ msgid "Batch size" msgstr "Batchgröße" msgid "Batch size of namespaces for initial indexing" -msgstr "" +msgstr "Batchgröße von Namensräumen für die anfängliche Indexierung" msgid "Batched Job|Background migrations" msgstr "Hintergrundmigrationen" @@ -10882,11 +10879,14 @@ msgstr "%{count} Platzhalter-Benutzer(inne)n, die Benutzer(inne)n zugeordnet si msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count} Platzhalter-Benutzer(inne)n, die nicht mit Benutzer(inne)n übereinstimmen." +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (benötigt v%{version})" msgid "BulkImport|A CSV file containing a list of placeholder reassignment errors has been attached to this email." -msgstr "" +msgstr "Dieser E-Mail wurde eine CSV-Datei mit einer Liste der Fehler bei der Neuzuweisung von Platzhaltern angehängt." msgid "BulkImport|All items assigned to placeholder users were reassigned to users in %{strong_open}%{group}%{strong_close} according to the uploaded CSV file." msgstr "Alle Elemente, die Platzhalter-Benutzer(inne)n zugewiesen wurden, wurden gemäß der hochgeladenen CSV-Datei erneut Benutzer(inne)n in %{strong_open}%{group}%{strong_close} zugewiesen." @@ -11296,7 +11296,7 @@ msgid "CICD|An error occurred while adding the authentication log entries. Pleas msgstr "" msgid "CICD|An error occurred while removing the auto-added log entries. Please try again." -msgstr "" +msgstr "Beim Entfernen der automatisch hinzugefügten Protokolleinträge ist ein Fehler aufgetreten. Bitte versuche es erneut." msgid "CICD|Are you sure you want to remove %{namespace} from the job token allowlist?" msgstr "Möchtest du wirklich %{namespace} aus der Job-Token-Zulassungsliste entfernen?" @@ -11314,7 +11314,7 @@ msgid "CICD|Authentication log entries were successfully added to the allowlist. msgstr "" msgid "CICD|Authentication log entries were successfully removed from the allowlist." -msgstr "" +msgstr "Die Authentifizierungsprotokolleinträge wurden erfolgreich aus der Zulassungsliste entfernt." msgid "CICD|Authorized groups and projects" msgstr "Autorisierte Gruppen und Projekte" @@ -11419,16 +11419,16 @@ msgid "CICD|Prevent CI/CD job tokens from this project from being used to access msgstr "Verhindere, dass CI/CD-Job-Token aus diesem Projekt für den Zugriff auf andere Projekte verwendet werden, es sei denn, das andere Projekt wird der Zulassungsliste hinzugefügt. Diese Funktion zu deaktivieren stellt ein Sicherheitsrisiko dar, da nicht autorisierte Projekte versuchen könnten, ein aktives Token abzurufen und auf die API zuzugreifen. %{linkStart}Mehr erfahren%{linkEnd}." msgid "CICD|Remove all auto-added allowlist entries" -msgstr "" +msgstr "Alle automatisch hinzugefügten Zulassungslisteneinträge entfernen" msgid "CICD|Remove group or project" msgstr "Gruppe oder Projekt entfernen" msgid "CICD|Removing auto-added allowlist entries. Please wait while the action completes." -msgstr "" +msgstr "Automatisch hinzugefügte Zulassungslisteneinträge werden entfernt. Bitte warte, bis der Vorgang abgeschlossen ist." msgid "CICD|Removing these entries could cause authentication failures or disrupt pipelines." -msgstr "" +msgstr "Das Entfernen dieser Einträge kann zu Authentifizierungsfehlern oder Störungen der Pipelines führen." msgid "CICD|Select the groups and projects authorized to use a CI/CD job token to authenticate requests to this project. %{linkStart}Learn more%{linkEnd}." msgstr "Wähle die Gruppen und Projekte aus, die autorisiert sind, ein CI/CD-Job-Token zur Authentifizierung von Anfragen an dieses Projekt zu verwenden. %{linkStart}Mehr erfahren%{linkEnd}." @@ -11461,7 +11461,7 @@ msgid "CICD|There was a problem fetching authorization logs count." msgstr "" msgid "CICD|This action removes all groups and projects that were auto-added from the authentication log." -msgstr "" +msgstr "Diese Aktion entfernt alle Gruppen und Projekte, die automatisch aus dem Authentifizierungsprotokoll hinzugefügt wurden." msgid "CICD|Unprotected branches will not have access to the cache from protected branches." msgstr "Ungeschützte Branches haben keinen Zugriff auf den Cache aus geschützten Branches." @@ -12594,7 +12594,7 @@ msgid "CiVariables|Pipeline variable access role successfully updated." msgstr "" msgid "CiVariables|Pipeline variable minimum override role successfully updated." -msgstr "" +msgstr "Niedrigste Überschreibungsrolle für die Verwendung von Pipeline-Variablen erfolgreich aktualisiert." msgid "CiVariables|Pipeline variables cannot be used." msgstr "" @@ -13665,10 +13665,10 @@ msgid "ClusterIntegration|Advanced options on this Kubernetes cluster’s integr msgstr "Erweiterte Optionen für die Integration dieses Kubernetes-Clusters" msgid "ClusterIntegration|Agent name" -msgstr "" +msgstr "Agentenname" msgid "ClusterIntegration|Agent setup failed" -msgstr "" +msgstr "Agenteneinrichtung fehlgeschlagen" msgid "ClusterIntegration|Allow GitLab to manage namespaces and service accounts for this cluster." msgstr "Erlaube GitLab, Namensräume und Dienstkonten für diesen Cluster zu verwalten." @@ -13749,7 +13749,7 @@ msgid "ClusterIntegration|Create a Kubernetes cluster" msgstr "Kubernetes-Cluster erstellen" msgid "ClusterIntegration|Create agent and migrate" -msgstr "" +msgstr "Agent erstellen und migrieren" msgid "ClusterIntegration|Deploy each environment to its own namespace. Otherwise, environments within a project share a project-wide namespace. Note that anyone who can trigger a deployment of a namespace can read its secrets. If modified, existing environments will use their current namespaces until the cluster cache is cleared." msgstr "Stelle jede Umgebung in einem eigenem Namensraum bereit. Andernfalls teilen sich Umgebungen innerhalb eines Projekts einen projektweiten Namensraum. Beachte, dass jeder, der die Bereitstellung eines Namensraums auslösen kann, dessen Geheimnisse lesen kann. Falls geändert, verwenden bestehende Umgebungen ihre aktuellen Namensräume, bis der Cluster-Cache geleert wird." @@ -13767,7 +13767,7 @@ msgid "ClusterIntegration|Enable this setting if using role-based access control msgstr "Aktiviere diese Einstellung, wenn rollenbasierte Zugriffskontrolle (RBAC) verwendet werden soll." msgid "ClusterIntegration|Enter a unique name for your new GitLab Agent. This name will be used to identify the agent in your project." -msgstr "" +msgstr "Gib einen eindeutigen Namen für deinen neuen GitLab-Agenten ein. Dieser Name wird zur Identifizierung des Agenten in deinem Projekt verwendet." msgid "ClusterIntegration|Enter details about your cluster. %{linkStart}How do I use a certificate to connect to my cluster?%{linkEnd}" msgstr "Trage Details zu deinem Cluster ein. %{linkStart}Wie verwendet man ein Zertifikat, um sich mit seinem Cluster zu verbinden?%{linkEnd}" @@ -13812,13 +13812,13 @@ msgid "ClusterIntegration|HTTP Error" msgstr "HTTP Fehler" msgid "ClusterIntegration|How do I migrate to the GitLab agent?" -msgstr "" +msgstr "Wie führe ich eine Umstellung auf den GitLab-Agenten durch?" msgid "ClusterIntegration|If you do not wish to delete all associated GitLab resources, you can simply remove the integration." msgstr "Wenn du nicht alle verknüpften GitLab Ressourcen löschen möchtest, kannst du die Integration einfach entfernen." msgid "ClusterIntegration|Installing agent in progress." -msgstr "" +msgstr "Agenteninstallation läuft." msgid "ClusterIntegration|Instance cluster" msgstr "Instanz-Cluster" @@ -13830,7 +13830,7 @@ msgid "ClusterIntegration|Integration enabled" msgstr "Integration aktiviert" msgid "ClusterIntegration|Invalid configuration project" -msgstr "" +msgstr "Ungültiges Konfigurationsprojekt" msgid "ClusterIntegration|Kubernetes cluster is being created..." msgstr "Kubernetes Cluster wird erstellt..." @@ -13851,7 +13851,7 @@ msgid "ClusterIntegration|Learn more about instance Kubernetes clusters" msgstr "Mehr über Instanz-Kubernetes-Cluster erfahren" msgid "ClusterIntegration|Learn more about migrating to GitLab Agent" -msgstr "" +msgstr "Erfahre mehr über die Umstellung auf den GitLab-Agenten" msgid "ClusterIntegration|Make sure your API endpoint is correct" msgstr "Stelle sicher, dass dein API-Endpunkt korrekt ist" @@ -13863,7 +13863,7 @@ msgid "ClusterIntegration|Migrate" msgstr "" msgid "ClusterIntegration|Migrate to GitLab Agent for Kubernetes" -msgstr "" +msgstr "Umstellung auf den GitLab-Agenten für Kubernetes" msgid "ClusterIntegration|Migrating cluster - failed: \"%{error}\"" msgstr "" @@ -13875,7 +13875,7 @@ msgid "ClusterIntegration|Namespace per environment" msgstr "Namensraum nach Umgebung" msgid "ClusterIntegration|New agent name" -msgstr "" +msgstr "Neuer Agentenname" msgid "ClusterIntegration|Node calculations use the Kubernetes Metrics API. Make sure your cluster has metrics installed" msgstr "Knotenberechnungen verwenden die Kubernetes Metrics API. Stelle sicher, dass dein Cluster Metriken installiert hat" @@ -13884,7 +13884,7 @@ msgid "ClusterIntegration|Project cluster" msgstr "Projektcluster" msgid "ClusterIntegration|Project name" -msgstr "" +msgstr "Projektname" msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "Projekt-Namensraum (optional, einzigartig)" @@ -13923,7 +13923,7 @@ msgid "ClusterIntegration|See and edit the details for your Kubernetes cluster" msgstr "Betrachte und ändere die Details deines Kubernetes-Clusters" msgid "ClusterIntegration|Select a project for the GitLab Agent." -msgstr "" +msgstr "Wähle eine Projekt für den GitLab-Agenten aus." msgid "ClusterIntegration|Service Token" msgstr "Service Token" @@ -13944,10 +13944,10 @@ msgid "ClusterIntegration|Specifying a domain will allow you to use Auto Review msgstr "Eine Domäne anzugeben, ermöglicht die automatische Nutzung von Auto-Review-Anwendungen und Bereitstellungsphasen für %{linkStart}Auto DevOps%{linkEnd}. Die Domäne sollte über eine DNS-Wildcard verfügen, die mit der Domäne übereinstimmt. " msgid "ClusterIntegration|Step 1. Connect the agent" -msgstr "" +msgstr "Schritt 1: Agent verbinden" msgid "ClusterIntegration|The %{agent_docs_link_start}GitLab Agent for Kubernetes %{agent_docs_link_end} offers improved security, reliability, and functionality. Follow the steps below to create a new agent and migrate your existing certificate-based integration. The process is automated, but you still need to %{install_docs_link_start}install the agent%{install_docs_link_end} in your cluster." -msgstr "" +msgstr "Der %{agent_docs_link_start}GitLab-Agent für Kubernetes %{agent_docs_link_end} bietet verbesserte Sicherheit, Zuverlässigkeit und Funktionalität. Befolge die folgenden Schritte, um einen neuen Agenten zu erstellen und deine bestehende zertifikatsbasierte Integration umzustellen. Der Vorgang ist automatisiert. Du musst den Agenten jedoch trotzdem %{install_docs_link_start}in deinem Cluster installieren%{install_docs_link_end}." msgid "ClusterIntegration|The Kubernetes certificate used to authenticate to the cluster." msgstr "Das Kubernetes Zertifikat, mit dem sich beim Cluster authentifiziert wird." @@ -13956,10 +13956,10 @@ msgid "ClusterIntegration|The URL used to access the Kubernetes API." msgstr "Die URL, die für den Zugriff auf das Kubernetes-API verwendet wird." msgid "ClusterIntegration|The agent connection is set up." -msgstr "" +msgstr "Die Agentenverbindung ist eingerichtet." msgid "ClusterIntegration|The agent was not installed in the cluster." -msgstr "" +msgstr "Der Agent war nicht im Cluster installiert." msgid "ClusterIntegration|The certificate-based Kubernetes integration is deprecated and will be removed in the future. You should %{linkStart}migrate to the GitLab agent for Kubernetes%{linkEnd}. For more information, see the %{deprecationLinkStart}deprecation epic%{deprecationLinkEnd}, or contact GitLab support." msgstr "Die zertifikatbasierte Kubernetes-Integration ist veraltet und wird in Zukunft entfernt. Du solltest %{linkStart}zum GitLab-Agent für Kubernetes migrieren%{linkEnd}. Weitere Informationen findest du im %{deprecationLinkStart}Deprecation-Epic%{deprecationLinkEnd} oder wende dich an den GitLab-Support." @@ -15309,6 +15309,9 @@ msgstr "Dir wird das Compliance-Center für %{project} angezeigt. Um Information msgid "ComplianceReport|and %{count} more" msgstr "und %{count} mehr" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "Export des Berichts zur Einhaltung von Normen" @@ -16881,6 +16884,9 @@ msgstr "Dateiinhalte kopieren" msgid "Copy file path" msgstr "Dateipfad kopieren" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "Bild-URL kopieren" @@ -20053,7 +20059,7 @@ msgid "Dependencies|Unknown path" msgstr "Unbekannter Pfad" msgid "Dependencies|View dependency paths" -msgstr "" +msgstr "Abhängigkeitspfade anzeigen" msgid "Dependencies|Vulnerabilities" msgstr "Sicherheitslücken" @@ -20074,7 +20080,7 @@ msgid "Dependency list" msgstr "Liste der Abhängigkeiten" msgid "DependencyListExport|License Identifiers" -msgstr "" +msgstr "Lizenzkennungen" msgid "DependencyListExport|Location" msgstr "" @@ -20086,16 +20092,16 @@ msgid "DependencyListExport|Packager" msgstr "Packer" msgid "DependencyListExport|Project" -msgstr "" +msgstr "Projekt" msgid "DependencyListExport|Version" msgstr "" msgid "DependencyListExport|Vulnerabilities Detected" -msgstr "" +msgstr "Sicherheitslücken erkannt" msgid "DependencyListExport|Vulnerability IDs" -msgstr "" +msgstr "Sicherheitslücken-IDs" msgid "DependencyProxy|%{docLinkStart}See the documentation%{docLinkEnd} for other ways to store Docker images in Dependency Proxy cache." msgstr "%{docLinkStart}In der Dokumentation%{docLinkEnd} findest du weitere Möglichkeiten, Docker-Images im Abhängigkeits-Proxy-Cache zu speichern." @@ -24793,6 +24799,9 @@ msgstr "Fehler beim Laden" msgid "Failed to load Roadmap" msgstr "Roadmap konnte nicht geladen werden" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Die Beauftragten konnten nicht geladen werden. Bitte versuche es erneut." @@ -24947,7 +24956,7 @@ msgid "Failed to update branch!" msgstr "Aktualisieren des Branches fehlgeschlagen!" msgid "Failed to update compliance control status. Error: %{error_message}" -msgstr "" +msgstr "Aktualisierung der Kontrolle zum Konformitätsstatus fehlgeschlagen. Fehler: %{error_message}" msgid "Failed to update compliance requirement" msgstr "Aktualisierung der Konformitätsanforderung fehlgeschlagen" @@ -25389,7 +25398,7 @@ msgid "Filter by test cases that are currently open." msgstr "Filtere nach Testfällen, die derzeit offen sind." msgid "Filter list for %{title}" -msgstr "" +msgstr "Liste filtern nach %{title}" msgid "Filter parameters are not valid. Make sure that the end date is after the start date." msgstr "Filterparameter sind nicht gültig. Stelle sicher, dass das Enddatum nach dem Startdatum liegt." @@ -25888,6 +25897,12 @@ msgstr "Die Funktion `labels` kann nur maximal 10 Parameter verwenden." msgid "GCP region configured" msgstr "GCP-Region konfiguriert" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "Gruppe „%{group_name}“ wird gelöscht." msgid "Group '%{group_name}' was successfully updated." msgstr "Gruppe '%{group_name}' wurde erfolgreich aktualisiert." +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "Gruppen-Git-LFS-Status:" @@ -28693,6 +28711,9 @@ msgstr "Übersichts-Hintergrundaggregation für das Dashboard für Wertschöpfun msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "Senden von E-Mail-Benachrichtigungen für diese Gruppe sowie alle ihre Untergruppen und Projekte aktivieren" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "SSH-Zertifikate erzwingen" @@ -28726,6 +28747,9 @@ msgstr "Gruppenpfad darf nicht länger als %{length} Zeichen sein." msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "Wie verwalte ich Gruppen-SSH-Zertifikate?" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "Bitte gib einen Namen für die Kommentarvorlage ein." msgid "Please enter a name for the custom emoji." msgstr "Bitte gib einen Namen für das benutzerdefinierte Emoji ein." +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Bitte gib eine positive Zahl ein" @@ -48544,7 +48571,7 @@ msgid "Remove email participants" msgstr "E-Mail-Teilnehmer(innen) entfernen" msgid "Remove entries" -msgstr "" +msgstr "Einträge löschen" msgid "Remove favicon" msgstr "Favicon entfernen" @@ -52562,6 +52589,24 @@ msgstr "Beispiel: glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "Beispiel: spec/**/*.rb" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "Richtlinienprojekt bearbeiten" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "Richtlinie zur Scanausführung bearbeiten" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "Leerer Richtlinienname" @@ -53270,7 +53318,7 @@ msgstr "Der Scan wählt automatisch einen Runner zur Ausführung aus, da keine T msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "sind falsch positiv" msgid "SecurityOrchestration|are not false positives" msgstr "sind nicht falsch positiv" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "Branch" @@ -53796,7 +53847,7 @@ msgid "SecurityReports|All projects" msgstr "Alle Projekte" msgid "SecurityReports|All report types" -msgstr "" +msgstr "Alle Berichtstypen" msgid "SecurityReports|All scanners" msgstr "" @@ -54093,7 +54144,7 @@ msgid "SecurityReports|Select dismissal reason" msgstr "Ablehnungsgrund auswählen" msgid "SecurityReports|Select project" -msgstr "" +msgstr "Projekt auswählen" msgid "SecurityReports|Select severity" msgstr "" @@ -54497,7 +54548,7 @@ msgid "Selected commits" msgstr "Ausgewählte Commits" msgid "Selected database" -msgstr "" +msgstr "Ausgewählte Datenbank" msgid "Selected for all items." msgstr "Für alle Elemente ausgewählt." @@ -58529,6 +58580,9 @@ msgstr "Das Authentifizierungstoken." msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "Die Basis-URL zur Harbor-Instanz, die mit dem GitLab-Projekt verknüpft ist. Zum Beispiel „https://demo.goharbor.io“." +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "Der Branch für dieses Projekt enthält keine aktive Pipeline-Konfiguration." @@ -59296,7 +59350,7 @@ msgid "There was a problem fetching the keep latest artifacts setting." msgstr "Es gab ein Problem beim Abrufen der Einstellung „Neueste Artefakte beibehalten“." msgid "There was a problem fetching the latest minimum override role." -msgstr "" +msgstr "Beim Abrufen des neuesten niedrigsten Überschreibungsrolle ist ein Fehler aufgetreten." msgid "There was a problem fetching the pipeline summary." msgstr "Beim Abrufen der Pipeline-Zusammenfassung ist ein Fehler aufgetreten." @@ -59317,7 +59371,7 @@ msgid "There was a problem updating the keep latest artifacts setting." msgstr "Es gab ein Problem beim Aktualisieren der Einstellung „Neueste Artefakte beibehalten“." msgid "There was a problem updating the minimum override setting." -msgstr "" +msgstr "Beim Aktualisieren der Einstellung zur niedrigsten Überschreibung ist ein Problem aufgetreten." msgid "There was an error fetching configuration for charts" msgstr "Beim Abrufen der Konfiguration für Diagramme ist ein Fehler aufgetreten" @@ -60980,7 +61034,7 @@ msgid "Todos|For one hour" msgstr "Für eine Stunde" msgid "Todos|Getting started with GitLab Duo" -msgstr "" +msgstr "Erste Schritte mit GitLab Duo" msgid "Todos|Give yourself a pat on the back!" msgstr "Klopf dir selbst auf die Schulter!" @@ -61125,8 +61179,8 @@ msgstr "Ausgesetzt" msgid "Todos|Snoozed 1 to-do" msgid_plural "Todos|Snoozed %d to-dos" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 ausgesetzte Aufgabe" +msgstr[1] "%d ausgesetzte Aufgaben" msgid "Todos|Snoozed until %{date}" msgstr "Ausgesetzt bis zum %{date}" @@ -61197,6 +61251,9 @@ msgstr "Wenn Aufgabenelemente erledigt sind, werden diese hier angezeigt." msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "Wenn Aufgabenelemente ausgesetzt sind, werden diese hier angezeigt." +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "Arbeitsaufgabe" @@ -61204,10 +61261,10 @@ msgid "Todos|You" msgstr "Du" msgid "Todos|You now have access to AI-powered features. Boost your productivity with Code Suggestions and GitLab Duo Chat" -msgstr "" +msgstr "Du hast jetzt Zugriff auf KI-gestützte Funktionen. Steigere deine Produktivität mit Codevorschlägen und GitLab Duo Chat." msgid "Todos|You now have access to AI-powered features. Boost your productivity with Code Suggestions, GitLab Duo Chat, Vulnerability Explanation, and more" -msgstr "" +msgstr "Du hast jetzt Zugriff auf KI-gestützte Funktionen. Steigere deine Produktivität mit Codevorschlägen, GitLab Duo Chat, Erklärungen von Sicherheitslücken und mehr." msgid "Todos|Your SSH key has expired" msgstr "" @@ -62256,7 +62313,7 @@ msgid "Unauthenticated web rate limit period in seconds" msgstr "Limitzeitraum für nicht authentifizierte Webrate in Sekunden" msgid "Unauthorized" -msgstr "" +msgstr "Nicht autorisiert" msgid "Unauthorized to access the cluster agent in this project" msgstr "Du hast keinen Zugriff auf den Cluster-Agent in diesem Projekt." @@ -65084,7 +65141,7 @@ msgid "Vulnerability|The CVSS (Common Vulnerability Scoring System) is a standar msgstr "" msgid "Vulnerability|The Exploit Prediction Scoring System model produces a percentage value between 0 and 100 that represents the likelihood that a vulnerability will be exploited in the next 30 days." -msgstr "" +msgstr "Das Modell des Exploit Prediction Scoring System erstellt einen Prozentwert zwischen 0 und 100, der darstellt, wie wahrscheinlich es ist, dass eine Sicherheitslücke in den nächsten 30 Tagen ausgenutzt werden wird." msgid "Vulnerability|The scanner determined this vulnerability to be a false positive. Verify the evaluation before changing its status. %{linkStart}Learn more about false positive detection.%{linkEnd}" msgstr "Der Scanner hat festgestellt, dass es sich bei dieser Sicherheitslücke um ein falsches Positivum handelt. Überprüfe die Bewertung, bevor du ihren Status änderst. %{linkStart}Erfahre mehr über die Erkennung von falschen Positiven.%{linkEnd}" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "Schulung anzeigen" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "Gefährdete Klasse:" @@ -70938,10 +70998,10 @@ msgid "v%{version} published %{timeAgo}" msgstr "v%{version} veröffentlicht %{timeAgo}" msgid "value \"%{sort}\" is not available on %{namespace}" -msgstr "" +msgstr "Wert „%{sort}“ ist in %{namespace} nicht verfügbar" msgid "value \"%{sort}\" is not available on %{namespace} for work items type %{wit}" -msgstr "" +msgstr "Wert „%{sort}“ ist in %{namespace} für den Arbeitsaufgabentyp %{wit} nicht verfügbar" msgid "value at %{data_pointer} should use only one of: %{requirements}" msgstr "Der Wert bei %{data_pointer} sollte nur eines der folgenden verwenden: %{requirements}" diff --git a/locale/eo/gitlab.po b/locale/eo/gitlab.po index e012aec2272..b972c1effbd 100644 --- a/locale/eo/gitlab.po +++ b/locale/eo/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: eo\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr "" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/es/gitlab.po b/locale/es/gitlab.po index 13308161db2..f2e0052ffbb 100644 --- a/locale/es/gitlab.po +++ b/locale/es/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:34\n" +"PO-Revision-Date: 2025-03-13 12:58\n" msgid " %{start} to %{end}" msgstr " %{start} hasta %{end}" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "Se encontraron %{total} advertencias: mostrando las primeras %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "El/La %{type} %{name} se restauró correctamente." - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "El identificador del modelo debe empezar con %{bedrockIdentifierPrefix}" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "El modelo usa un token de API" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "Hay más modelos disponibles en la versión beta. Puede %{linkStart}activar las funcionalidades beta del modelo autoalojado%{linkEnd}." @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count} Usuarios marcadores de posición no coinciden con los usuarios." +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (requiere v%{version})" @@ -15309,6 +15309,9 @@ msgstr "Este es el centro de cumplimiento de %{project}. Para ver la informació msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "Copiar contenido de archivo" msgid "Copy file path" msgstr "Copiar ruta de archivo" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "La función \"labels\" solo puede tener un máximo de 10 parámetros." msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "Se está eliminando el grupo \"%{group_name}\"." msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "Estado de Git LFS del grupo:" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Ingrese un número no negativo" @@ -52562,6 +52589,24 @@ msgstr "Por ejemplo: glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "Por ejemplo: spec/**/*.rb" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "Editar proyecto de política" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "La rama para este proyecto no tiene ninguna configuración de pipeline activa." @@ -61197,6 +61251,9 @@ msgstr "Cuando haya elementos de tareas pendientes completados, aparecerán aqu msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "Cuando haya elementos de tareas pendientes pospuestos, aparecerán aquí." +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "Elemento de trabajo" @@ -65119,6 +65176,9 @@ msgstr "Ver rutas de dependencias" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/fil_PH/gitlab.po b/locale/fil_PH/gitlab.po index 6aedda1876b..34cbf79d6e6 100644 --- a/locale/fil_PH/gitlab.po +++ b/locale/fil_PH/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: fil\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr "" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/fr/gitlab.po b/locale/fr/gitlab.po index 8036dd841c8..c0f1ad3b2c9 100644 --- a/locale/fr/gitlab.po +++ b/locale/fr/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: fr\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr " %{start} à %{end}" @@ -196,8 +196,8 @@ msgstr[1] "%d caractères dépassant la limite" msgid "%d character over limit." msgid_plural "%d characters over limit." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d caractère dépassant la limite." +msgstr[1] "%d caractères dépassant la limite." msgid "%d character remaining" msgid_plural "%d characters remaining" @@ -786,7 +786,7 @@ msgid "%{count} of %{total}" msgstr "%{count} sur %{total}" msgid "%{count} open" -msgstr "" +msgstr "%{count} ouverte(s)" msgid "%{count} project" msgid_plural "%{count} projects" @@ -1552,15 +1552,6 @@ msgstr "%{total} poids de ticket restants" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total} avertissements trouvés : affichage des %{warningsDisplayed} premiers" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "Le %{type} '%{name}' a été restauré avec succès." - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type} « %{name} » est en cours de suppression." - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{type} « %{name} » sera supprimé le %{date}." - msgid "%{type} must be a %{help_link}" msgstr "%{type} doit être un(e) %{help_link}" @@ -1867,7 +1858,7 @@ msgid "." msgstr "." msgid ".git-blame-ignore-revs is not a file" -msgstr "" +msgstr ".git-blame-ignore-revs n'est pas un fichier" msgid ".gitlab-ci.yml with aliases/anchors is not supported. Please change the CI configuration manually." msgstr ".gitlab-ci.yml avec des alias/ancres n'est pas pris en charge. Veuillez modifier manuellement la configuration CI." @@ -3800,12 +3791,15 @@ msgid "Adds this %{issuable_type} as related to the %{issuable_type} it was crea msgstr "Ajoute cet élément %{issuable_type} comme étant en relation avec l'élément %{issuable_type} depuis lequel il a été créé" msgid "AdherenceReport|Have questions or thoughts on the new improvements we made? %{linkStart}Please provide feedback on your experience%{linkEnd}." -msgstr "" +msgstr "Vous avez des questions ou des remarques sur les nouvelles améliorations que nous avons apportées ? %{linkStart}N'hésitez pas à partager votre expérience avec nous%{linkEnd}." msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." +msgstr "Pour en savoir plus sur ces modifications, veuillez consulter notre %{linkStart}documentation%{linkEnd}." + +msgid "AdherenceReport|Show old report" msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4124,7 +4118,7 @@ msgid "AdminSelfHostedModels|API token" msgstr "" msgid "AdminSelfHostedModels|Add a new AI model that can be used for GitLab Duo self-hosted features." -msgstr "" +msgstr "Ajoutez un nouveau modèle d'IA qui peut être utilisé pour les fonctionnalités auto-hébergées de GitLab Duo." msgid "AdminSelfHostedModels|Add self-hosted model" msgstr "Ajouter des modèles auto-hébergés" @@ -4157,13 +4151,13 @@ msgid "AdminSelfHostedModels|Edit self-hosted model" msgstr "Modifier le modèle auto-hébergé" msgid "AdminSelfHostedModels|Edit the AI model that can be used for GitLab Duo self-hosted features." -msgstr "" +msgstr "Modifiez le modèle d'IA qui peut être utilisé pour les fonctionnalités auto-hébergées de GitLab Duo." msgid "AdminSelfHostedModels|Endpoint" msgstr "Point de terminaison" msgid "AdminSelfHostedModels|GitLab Duo Self-Hosted" -msgstr "" +msgstr "Modèles GitLab Duo auto-hébergés" msgid "AdminSelfHostedModels|If required, provide the API token that grants access to your self-hosted model deployment." msgstr "" @@ -4186,6 +4180,9 @@ msgstr "L'identifiant du modèle doit commencer par '%{bedrockIdentifierPrefix}' msgid "AdminSelfHostedModels|Model uses an API token" msgstr "Le modèle utilise un jeton API" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "D'autres modèles sont disponibles en version bêta. Vous pouvez %{linkStart}activer les fonctionnalités bêta des modèles auto-hébergés%{linkEnd}." @@ -5246,7 +5243,7 @@ msgid "Admin|Geo" msgstr "Geo" msgid "Admin|GitLab Duo Self-Hosted" -msgstr "" +msgstr "Modèles GitLab Duo auto-hébergés" msgid "Admin|Kubernetes" msgstr "Kubernetes" @@ -5489,7 +5486,7 @@ msgid "AiPowered|Enroll in the Early Access Program" msgstr "" msgid "AiPowered|Enter the URL for your local AI Gateway. This endpoint is used for GitLab Duo Self-Hosted requests.%{br}The URL must be a complete URL, including either the \"http://\" or \"https://\" protocol. For example \"http://EXAMPLE-URL\".%{br}For more information, see how to %{linkStart}install the GitLab AI Gateway.%{linkEnd}" -msgstr "" +msgstr "Saisissez l'URL de votre passerelle d'IA locale. Ce point d'arrivée est utilisé pour les demandes de modèles auto-hébergés GitLab Duo.%{br}L'URL doit être complète et inclure le protocole 'http://' ou 'https://'. Par exemple, 'http://EXEMPLE-URL'.%{br}Pour plus d'informations, découvrez comment %{linkStart}installer GitLab AI Gateway.%{linkEnd}" msgid "AiPowered|Experiment and beta features" msgstr "Fonctions expérimentales et bêta" @@ -6941,7 +6938,7 @@ msgid "Analytics settings" msgstr "Paramètres d'analyse" msgid "AnalyticsDashboards|Failed to load namespace metadata." -msgstr "" +msgstr "Échec du chargement des métadonnées de l'espace de nommage." msgid "Analytics| Last updated: %{recordedAt}" msgstr "Dernière mise à jour : %{recordedAt}" @@ -7518,7 +7515,7 @@ msgid "ApplicationSettings|Open access" msgstr "" msgid "ApplicationSettings|Prevent the billable user count from exceeding the number of seats in the license." -msgstr "" +msgstr "Empêchez le nombre d'utilisateurs facturables de dépasser le nombre de sièges autorisé dans le cadre de votre licence." msgid "ApplicationSettings|Proceed and approve %d user" msgid_plural "ApplicationSettings|Proceed and approve %d users" @@ -7669,10 +7666,10 @@ msgid "Applying multiple commands" msgstr "Application de plusieurs commandes" msgid "Applying suggestions…" -msgstr "" +msgstr "Application des suggestions…" msgid "Applying suggestion…" -msgstr "" +msgstr "Application de la suggestion…" msgid "Approval Rules" msgstr "Règles d'approbation" @@ -9815,7 +9812,7 @@ msgid "Blame|Older" msgstr "" msgid "BlobViewer|Copy contents" -msgstr "" +msgstr "Copier le contenu" msgid "BlobViewer|If you delete the file, it will be removed from the branch %{branch}." msgstr "Si vous supprimez le fichier, il sera enlevé de la branche %{branch}." @@ -10882,6 +10879,9 @@ msgstr "%{count} utilisateurs de l'espace réservé ont été mis en correspond msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count} utilisateurs de l'espace réservé n'ont pas été mis en correspondance avec les utilisateurs." +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (nécessite la v%{version})" @@ -11323,7 +11323,7 @@ msgid "CICD|Auto DevOps" msgstr "Auto DevOps" msgid "CICD|Auto-populating allowlist entries. Please wait while the action completes." -msgstr "" +msgstr "Remplissage automatique des entrées de la liste d'autorisations. Veuillez patienter." msgid "CICD|Automatic deployment to staging, manual deployment to production" msgstr "Déploiement automatique pour la préproduction, déploiement manuel pour la production" @@ -11446,7 +11446,7 @@ msgid "CICD|The allowlist can contain a maximum of %{projectAllowlistLimit} grou msgstr "La liste d'autorisations peut contenir un maximum de %{projectAllowlistLimit} groupes et projets." msgid "CICD|The process might take a moment to complete for large authentication logs or allowlists." -msgstr "" +msgstr "L'opération peut prendre un moment pour les listes d'autorisations ou les journaux d'authentification volumineux." msgid "CICD|There are several CI/CD limits in place." msgstr "Plusieurs limites CI/CD sont définies." @@ -11473,7 +11473,7 @@ msgid "CICD|When enabled, all projects must use their allowlist to control CI/CD msgstr "Lorsque cette option est activée, tous les projets doivent utiliser leur liste d'autorisation pour contrôler l'accès aux jetons de job CI/CD entre les projets. L'option permettant d'autoriser l'accès à partir de tous les groupes et projets est masquée. %{link_start}En savoir plus.%{link_end}" msgid "CICD|You're about to add all entries from the authentication log to the allowlist for %{projectName}. This will also update the Job Token setting to %{codeStart}This project and any groups and projects in the allowlist%{codeEnd}, if not already set. Duplicate entries will be ignored." -msgstr "" +msgstr "Vous êtes sur le point d'ajouter toutes les entrées du journal d'authentification à la liste d'autorisations de %{projectName}. Cela mettra également à jour le paramètre Jeton de job pour %{codeStart}ce projet et tous les groupes et projets figurant dans la liste d'autorisations%{codeEnd}, si ce n'est pas déjà le cas. Les doublons seront ignorés." msgid "CICD|group enabled" msgstr "activé sur le groupe" @@ -11530,7 +11530,7 @@ msgid "CVS|Only a project maintainer or owner can toggle this feature." msgstr "Seul un chargé de maintenance de projet ou son propriétaire peut activer cette fonctionnalité." msgid "Cadence" -msgstr "" +msgstr "Cadence" msgid "Cadence is not automated" msgstr "La cadence n'est pas automatisée" @@ -12130,7 +12130,7 @@ msgid "Checking group path availability..." msgstr "Vérification de la disponibilité du chemin d'accès du groupe…" msgid "Checking if merge request can be merged…" -msgstr "" +msgstr "Vérification de la possibilité de fusionner la requête de fusion…" msgid "Checking source validity" msgstr "Vérification de la validité de la source" @@ -12519,7 +12519,7 @@ msgid "CiVariables|Cancel" msgstr "Annuler" msgid "CiVariables|Default role to use pipeline variables" -msgstr "" +msgstr "Rôle autorisé par défaut à utiliser les variables de pipeline" msgid "CiVariables|Delete variable" msgstr "Supprimer la variable" @@ -12564,7 +12564,7 @@ msgid "CiVariables|Learn how to %{linkStart}restrict CI/CD variables to specific msgstr "Découvrez comment %{linkStart}restreindre les variables CI/CD à des environnements spécifiques%{linkEnd} pour garantir une meilleure sécurité." msgid "CiVariables|Manual job empty state image" -msgstr "" +msgstr "Image du statut vide d'un job manuel" msgid "CiVariables|Masked" msgstr "Masquée" @@ -12591,7 +12591,7 @@ msgid "CiVariables|No matching values" msgstr "Aucune valeur correspondante" msgid "CiVariables|Pipeline variable access role successfully updated." -msgstr "" +msgstr "Le rôle autorisé à accéder aux variables de pipeline a été mis à jour avec succès." msgid "CiVariables|Pipeline variable minimum override role successfully updated." msgstr "Mise à jour réussie du rôle minimum autorisé à utiliser les variables de pipeline." @@ -12624,7 +12624,7 @@ msgid "CiVariables|Search values" msgstr "Recherche de valeur" msgid "CiVariables|Select the default minimum role to use in new projects, to run a new pipeline with pipeline variables." -msgstr "" +msgstr "Sélectionnez le rôle minimum à utiliser par défaut dans les nouveaux projets pour exécuter un nouveau pipeline avec des variables." msgid "CiVariables|Select the minimum role that is allowed to run a new pipeline with pipeline variables." msgstr "Sélectionnez le rôle minimum autorisé à exécuter un nouveau pipeline avec des variables." @@ -12657,13 +12657,13 @@ msgid "CiVariables|The value must have %{charsAmount} characters." msgstr "La valeur doit comporter au moins %{charsAmount} caractères." msgid "CiVariables|There was a problem fetching the CI/CD settings." -msgstr "" +msgstr "Un problème est survenu lors de la récupération des paramètres CI/CD." msgid "CiVariables|There was a problem fetching the pipeline variables default role." -msgstr "" +msgstr "Un problème est survenu lors de la récupération du rôle par défaut autorisé à accéder aux variables de pipeline." msgid "CiVariables|There was a problem updating the pipeline variables default role setting." -msgstr "" +msgstr "Un problème est survenu lors de la mise à jour des paramètres du rôle par défaut autorisé à accéder aux variables de pipeline." msgid "CiVariables|There was an error fetching the inherited CI variables." msgstr "Une erreur s'est produite lors de la récupération des variables CI héritées." @@ -12711,7 +12711,7 @@ msgid "CiVariables|What are pipeline variables?" msgstr "Qu'est-ce qu'une variable de pipeline ?" msgid "CiVariables|You can add CI/CD variables below for last-minute configuration changes before starting the job." -msgstr "" +msgstr "Vous pouvez ajouter des variables CI/CD ci-dessous pour les changements de configuration de dernière minute avant de lancer le job." msgid "CiVariables|You can use CI/CD variables with the same name in different places, but the variables might overwrite each other. %{linkStart}What is the order of precedence for variables?%{linkEnd}" msgstr "Vous pouvez utiliser des variables CI/CD avec le même nom à différents endroits, mais ces variables peuvent s'écraser les unes les autres. %{linkStart}Quel est l'ordre de précédence des variables ?%{linkEnd}" @@ -12899,7 +12899,7 @@ msgid "Clone with SSH" msgstr "Cloner avec SSH" msgid "CloneIssue|Cannot clone issue due to insufficient permissions." -msgstr "" +msgstr "Impossible de cloner le ticket, car vous ne disposez pas des autorisations nécessaires." msgid "CloneIssue|Cannot clone issue to target project as it is pending deletion." msgstr "Impossible de cloner le ticket vers le projet cible, car il est en attente de suppression." @@ -12908,16 +12908,16 @@ msgid "CloneIssue|Cannot clone issues of '%{issue_type}' type." msgstr "Impossible de cloner les tickets de type « %{issue_type} »." msgid "CloneWorkItem|Unable to clone. Cloning '%{work_item_type}' is not supported." -msgstr "" +msgstr "Échec du clonage. Le clonage d'un(e) '%{work_item_type}' n'est pas pris en charge." msgid "CloneWorkItem|Unable to clone. Cloning across projects and groups is not supported." -msgstr "" +msgstr "Échec du clonage. Le clonage entre les projets et les groupes n'est pas pris en charge." msgid "CloneWorkItem|Unable to clone. Target namespace is pending deletion." -msgstr "" +msgstr "Échec du clonage. L'espace de nommage cible est en attente de suppression." msgid "CloneWorkItem|Unable to clone. You have insufficient permissions." -msgstr "" +msgstr "Échec du clonable. Vous ne disposez pas des autorisations nécessaires." msgid "Cloned this issue to %{path_to_project}." msgstr "Ce ticket a été cloné vers %{path_to_project}." @@ -13402,7 +13402,7 @@ msgid "ClusterAgents|Give feedback" msgstr "Donner votre avis" msgid "ClusterAgents|Group agents" -msgstr "" +msgstr "Agents du groupe" msgid "ClusterAgents|How do I update an agent?" msgstr "Comment mettre à jour un agent ?" @@ -13479,7 +13479,7 @@ msgid "ClusterAgents|Premium" msgstr "Premium" msgid "ClusterAgents|Project" -msgstr "" +msgstr "Projet" msgid "ClusterAgents|Project agents" msgstr "Agents du projet" @@ -14665,7 +14665,7 @@ msgid "Compare" msgstr "Comparer" msgid "Compare %{oldCommitId}…%{newCommitId}" -msgstr "" +msgstr "Comparer %{oldCommitId}…%{newCommitId}" msgid "Compare Branches" msgstr "Comparer les branches" @@ -15309,6 +15309,9 @@ msgstr "Vous consultez le centre de conformité pour le projet %{project}. Pour msgid "ComplianceReport|and %{count} more" msgstr "et %{count} autres" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "Exporter l'adhésion aux normes" @@ -15616,7 +15619,7 @@ msgid "Configure custom rules for Jira issue key matching" msgstr "Configurer les règles personnalisées pour établir la correspondance avec les clés de tickets Jira" msgid "Configure feature \"%{name}\"" -msgstr "" +msgstr "Configurer la fonctionnalité '%{name}'" msgid "Configure import sources and settings related to import and export features." msgstr "Configurez les sources d'importation et les paramètres liés aux fonctionnalités d'importation et d'exportation." @@ -16881,6 +16884,9 @@ msgstr "Copier le contenu du fichier" msgid "Copy file path" msgstr "Copier le chemin du fichier" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "Copier l'URL de l'image" @@ -16906,7 +16912,7 @@ msgid "Copy link URL" msgstr "Copier l'URL du lien" msgid "Copy permalink" -msgstr "" +msgstr "Copier le permalien" msgid "Copy reference" msgstr "Copier la référence" @@ -17074,7 +17080,7 @@ msgid "Could not draw the lines for job relationships" msgstr "Impossible de tracer les lignes pour les relations des jobs" msgid "Could not fetch all changes. Try reloading the page." -msgstr "" +msgstr "Impossible de récupérer toutes les modifications. Essayez d'actualiser la page." msgid "Could not fetch policy because existing policy YAML is invalid" msgstr "Impossible de récupérer la stratégie car le YAML de la stratégie existante n'est pas valide" @@ -17494,7 +17500,7 @@ msgid "CreateValueStreamForm|Create from no template" msgstr "Créer sans l'aide d'un modèle" msgid "CreateValueStreamForm|Default stage" -msgstr "" +msgstr "Étape par défaut" msgid "CreateValueStreamForm|Default stages" msgstr "Étapes par défaut" @@ -17599,7 +17605,7 @@ msgid "CreateValueStreamForm|Value Stream name" msgstr "Nom de la chaîne de valeurs" msgid "CreateValueStreamForm|Value stream stages" -msgstr "" +msgstr "Étapes de la chaîne de valeurs" msgid "Created" msgstr "Créé" @@ -18501,7 +18507,7 @@ msgid "DSN" msgstr "DSN" msgid "Daily" -msgstr "" +msgstr "Journalière" msgid "Dashboard" msgstr "Tableau de bord" @@ -18561,10 +18567,10 @@ msgid "DastProfiles|A cookie name and value to be added to every request." msgstr "Nom et valeur de cookie à ajouter à chaque requête." msgid "DastProfiles|A list of modules and their intended logging level for use in the console log." -msgstr "" +msgstr "Liste de modules à utiliser dans le journal de la console, et niveau de journalisation associé." msgid "DastProfiles|A list of modules and their intended logging level for use in the file log." -msgstr "" +msgstr "Liste de modules à utiliser dans le journal de fichier, et niveau de journalisation associé." msgid "DastProfiles|A passive scan monitors all HTTP messages (requests and responses) sent to the target. An active scan attacks the target to find potential vulnerabilities." msgstr "Une analyse passive surveille tous les messages HTTP (requêtes et réponses) envoyés à la cible. Une analyse active attaque la cible pour trouver des vulnérabilités potentielles." @@ -18576,16 +18582,16 @@ msgid "DastProfiles|A selector describing an element whose presence is used to d msgstr "Sélecteur décrivant un élément dont la présence est utilisée pour déterminer si l'authentification a réussi après l'envoi du formulaire de connexion." msgid "DastProfiles|A selector describing the element clicked on to submit the login form for a single-page login form, or the password form for a multi-page login form." -msgstr "" +msgstr "Sélecteur décrivant l'élément sur lequel il faut cliquer pour soumettre soit un formulaire de connexion à une page, soit un formulaire de mot de passe (pour les formulaires de connexion à plusieurs pages)." msgid "DastProfiles|A selector describing the element that is clicked on to submit the username form of a multi-page login process." msgstr "Sélecteur décrivant l'élément sur lequel on clique pour envoyer le formulaire de nom d'utilisateur dans le cadre d'un processus de connexion multipage." msgid "DastProfiles|A selector describing the element used to enter the password on the login form." -msgstr "" +msgstr "Sélecteur décrivant l'élément utilisé pour saisir le mot de passe dans le formulaire de connexion." msgid "DastProfiles|A selector describing the element used to enter the username on the login form." -msgstr "" +msgstr "Sélecteur décrivant l'élément utilisé pour saisir le nom d'utilisateur dans le formulaire de connexion." msgid "DastProfiles|A site profile defines the attributes and configuration details of your deployed application, website, or API. %{linkStart}Learn more%{linkEnd}." msgstr "Un profil de site définit les informations sur les attributs et la configuration de votre application, site Web ou API déployé. %{linkStart}En savoir plus%{linkEnd}." @@ -18660,10 +18666,10 @@ msgid "DastProfiles|Clear input fields" msgstr "Effacer les champs de saisie" msgid "DastProfiles|Comma-separated list of check identifiers to exclude from the scan. For identifiers, see [vulnerability checks](../checks/_index.md)." -msgstr "" +msgstr "Liste d'identifiants de vérification, séparés par des virgules, à exclure de l'analyse. Pour les identifiants, consultez les [vérifications de vulnérabilité](../checks/_index.md)." msgid "DastProfiles|Comma-separated list of check identifiers to use for the scan. For identifiers, see [vulnerability checks](../checks/_index.md)." -msgstr "" +msgstr "Liste d'identifiants de vérification, séparés par des virgules, à utiliser pour l'analyse. Pour les identifiants, consultez les [vérifications de vulnérabilité](../checks/_index.md)." msgid "DastProfiles|Comma-separated list of selectors that are ignored when scanning." msgstr "Liste de sélecteurs séparés par des virgules qui sont ignorés lors de l'analyse." @@ -18729,7 +18735,7 @@ msgid "DastProfiles|Disables clearing of username and password fields before att msgstr "Désactive l'effacement des champs de nom d'utilisateur et de mot de passe avant de tenter une identification manuelle. Définie sur 'faux' par défaut." msgid "DastProfiles|Docker registry" -msgstr "" +msgstr "Registre Docker" msgid "DastProfiles|Edit DAST variable" msgstr "Éditer la variable TDSA" @@ -18774,7 +18780,7 @@ msgid "DastProfiles|Excluded URLs (optional)" msgstr "URL exclues (facultatif)" msgid "DastProfiles|Excluded checks" -msgstr "" +msgstr "Vérifications exclues" msgid "DastProfiles|Excluded elements" msgstr "Éléments exclus" @@ -18798,13 +18804,13 @@ msgid "DastProfiles|First submit field" msgstr "Champ de premier envoi" msgid "DastProfiles|Full scan" -msgstr "" +msgstr "Analyse complète" msgid "DastProfiles|Generate authentication report" -msgstr "" +msgstr "Générer un rapport d'authentification" msgid "DastProfiles|Generate graph" -msgstr "" +msgstr "Générer un graphe" msgid "DastProfiles|Hide debug messages" msgstr "Masquer les messages de débogage" @@ -18825,25 +18831,25 @@ msgid "DastProfiles|Include debug messages in the DAST console output." msgstr "Inclure les messages de débogage dans la sortie de la console DAST." msgid "DastProfiles|Included checks" -msgstr "" +msgstr "Vérifications incluses" msgid "DastProfiles|Loading element" msgstr "Élément en cours de chargement" msgid "DastProfiles|Log browser output" -msgstr "" +msgstr "Enregistrer la sortie du navigateur" msgid "DastProfiles|Log file levels" -msgstr "" +msgstr "Enregistrer les niveaux de fichier" msgid "DastProfiles|Log file path" -msgstr "" +msgstr "Enregistrer le chemin d'accès au fichier" msgid "DastProfiles|Log levels" -msgstr "" +msgstr "Enregistrer les niveaux" msgid "DastProfiles|Log messages" -msgstr "" +msgstr "Enregistrer les messages" msgid "DastProfiles|Manage %{profileType} profiles" msgstr "Gérer les profils %{profileType}" @@ -18927,7 +18933,7 @@ msgid "DastProfiles|Password" msgstr "Mot de passe" msgid "DastProfiles|Password field" -msgstr "" +msgstr "Champ Mot de passe" msgid "DastProfiles|Password form field" msgstr "Champ de formulaire du mot de passe" @@ -19005,40 +19011,40 @@ msgid "DastProfiles|Selector that, when no longer visible on the page, indicates msgstr "Sélecteur qui, lorsqu'il n'est plus visible sur la page, indique à l'analyseur que le chargement de la page est terminé et que l'analyse peut se poursuivre. Ne peut pas être utilisé avec DAST_PAGE_IS_READY_ELEMENT." msgid "DastProfiles|Set the Docker registry base address from which to download the analyzer." -msgstr "" +msgstr "Définissez l'adresse de base du registre Docker à partir de laquelle télécharger l'analyseur." msgid "DastProfiles|Set to `false` to disable caching. Default: `true`. **Note:** Disabling cache can cause OOM events or DAST job timeouts." msgstr "Définir sur 'false' pour désactiver la mise en cache. Valeur par défaut : 'true'. **Remarque :** La désactivation du cache peut provoquer des événements OOM ou des dépassements de délais d'attente pour les jobs TDSA." msgid "DastProfiles|Set to `true` to add a `Via: GitLab DAST %{version}` header to every request sent, advertising that the request was sent as part of a GitLab DAST scan. Default: `false`." -msgstr "" +msgstr "Définissez cette option sur 'true' (vrai) pour ajouter un en-tête 'Via: GitLab DAST %{version}' à chaque requête envoyée, afin d'indiquer que la requête a été envoyée dans le cadre d'une analyse TDSA GitLab. Valeur par défaut : 'false' (faux)." msgid "DastProfiles|Set to `true` to generate a report detailing steps taken during the authentication process. You must also define `gl-dast-debug-auth-report.html` as a CI job artifact to be able to access the generated report. The report's content aids when debugging authentication failures. Defaults to `false`." -msgstr "" +msgstr "Définissez cette option sur 'true' (vrai) pour générer un rapport détaillant les étapes du processus d'authentification. Vous devez également définir 'gl-dast-debug-auth-report.html' en tant qu'artéfact de job CI pour pouvoir accéder au rapport généré. Le contenu du rapport aide à déboguer les échecs d'authentification. La valeur par défaut est 'false' (faux)." msgid "DastProfiles|Set to `true` to generate an SVG graph of navigation paths visited during crawl phase of the scan. You must also define `gl-dast-crawl-graph.svg` as a CI job artifact to be able to access the generated graph. Defaults to `false`." -msgstr "" +msgstr "Définissez cette option sur 'true' (vrai) pour générer un graphe SVG des chemins de navigation visités pendant la phase d'indexation de l'analyse. Vous devez également définir 'gl-dast-crawl-graph.svg' en tant qu'artéfact de job CI pour pouvoir accéder au graphe généré. La valeur par défaut est 'false' (faux)." msgid "DastProfiles|Set to `true` to log Chromium `STDOUT` and `STDERR`." -msgstr "" +msgstr "Définissez cette option sur 'true' (vrai) pour enregistrer Chromium 'STDOUT' et 'STDERR'." msgid "DastProfiles|Set to `true` to prevent DAST from checking that the target is available before scanning. Default: `false`." msgstr "Défini sur 'true' pour empêcher le TDSA de vérifier que la cible est disponible avant de procéder à l'analyse. Valeur par défaut : 'false'." msgid "DastProfiles|Set to `true` to run both passive and active checks. Default is `false`." -msgstr "" +msgstr "Définissez cette option sur 'true' (vrai) pour effectuer des vérifications actives et passives. La valeur par défaut est 'false' (faux)." msgid "DastProfiles|Set to a comma-separated list of cookie names to specify which cookies are used for authentication." msgstr "Définit sur une liste de noms de cookies séparés par des virgules pour spécifier les cookies utilisés pour l'authentification." msgid "DastProfiles|Set to a comma-separated list of request header names and values. The following headers are not supported: `content-length`, `cookie2`, `keep-alive`, `hosts`, `trailer`, `transfer-encoding`, and all headers with a `proxy-` prefix." -msgstr "" +msgstr "Définissez une liste de noms et de valeurs d'en-têtes de requête séparés par des virgules. Les en-têtes suivants ne sont pas pris en charge : 'content-length', 'cookie2', 'keep-alive', 'hosts', 'trailer', 'transfert-encoding' et tous les en-têtes contenant le préfixe 'proxy-'." msgid "DastProfiles|Set to log protocol messages between DAST and the Chromium browser." -msgstr "" +msgstr "Enregistrez les messages de protocole entre DAST et le navigateur Chromium." msgid "DastProfiles|Set to the path of the file log. Default is `gl-dast-scan.log`." -msgstr "" +msgstr "Définissez le chemin d'accès au journal de fichier. La valeur par défaut est 'gl-dast-scan.log'." msgid "DastProfiles|Show debug messages" msgstr "Afficher les messages de débogage" @@ -19065,7 +19071,7 @@ msgid "DastProfiles|Submit button (optional)" msgstr "Bouton d'envoi (facultatif)" msgid "DastProfiles|Submit field" -msgstr "" +msgstr "Champ Envoyer" msgid "DastProfiles|Success URL" msgstr "URL fructueuse" @@ -19095,13 +19101,13 @@ msgid "DastProfiles|The PKCS12 certificate used for sites that require Mutual TL msgstr "Certificat PKCS12 utilisé pour les sites qui requièrent le protocole TLS. Doit être encodé sous forme de texte Base64." msgid "DastProfiles|The URL of the page containing the login form on the target website. DAST_AUTH_USERNAME and DAST_AUTH_PASSWORD are submitted with the login form to create an authenticated scan." -msgstr "" +msgstr "URL de la page contenant le formulaire de connexion au site Web cible. Le formulaire de connexion est envoyé avec DAST_AUTH_USERNAME et DAST_AUTH_PASSWORD pour créer une analyse authentifiée." msgid "DastProfiles|The URL of the website to scan." -msgstr "" +msgstr "URL du site Web à analyser." msgid "DastProfiles|The URLs to skip during the authenticated scan; comma-separated. Regular expression syntax can be used to match multiple URLs. For example, `.*` matches an arbitrary character sequence." -msgstr "" +msgstr "URL à ignorer lors de l'analyse authentifiée, séparées par des virgules. Vous pouvez utiliser la syntaxe des expressions rationnelles pour faire correspondre plusieurs URL. Par exemple, '.*' correspond à une séquence de caractères arbitraire." msgid "DastProfiles|The authentication type to use." msgstr "Type d'authentification à utiliser." @@ -19152,13 +19158,13 @@ msgid "DastProfiles|The number of active checks to run in parallel. Defaults to msgstr "Nombre de vérifications actives à lancer en parallèle. La valeur par défaut est 3." msgid "DastProfiles|The password of the certificate used in `DAST_PKCS12_CERTIFICATE_BASE64`. Create sensitive [custom CI/CI variables](%{documentation_link}) using the GitLab UI." -msgstr "" +msgstr "Mot de passe du certificat utilisé dans DAST_PKCS12_CERTIFICATE_BASE64. Créez des [variables CI/CI personnalisées] (%{documentation_link}) sensibles en utilisant l'interface utilisateur GitLab." msgid "DastProfiles|The password to authenticate to in the website." -msgstr "" +msgstr "Mot de passe permettant de s'authentifier sur le site Web." msgid "DastProfiles|The username to authenticate to in the website." -msgstr "" +msgstr "Nom d'utilisateur permettant de s'authentifier sur le site Web." msgid "DastProfiles|This profile is currently being used in a policy." msgstr "Ce profil est actuellement utilisé par une stratégie." @@ -19191,7 +19197,7 @@ msgid "DastProfiles|Username" msgstr "Nom d'utilisateur" msgid "DastProfiles|Username field" -msgstr "" +msgstr "Champ Nom d'utilisateur" msgid "DastProfiles|Username form field" msgstr "Champ de formulaire du nom d'utilisateur" @@ -19224,7 +19230,7 @@ msgid "DastProfiles|What does each method do?" msgstr "Que fait chaque méthode ?" msgid "DastProfiles|Which servers should be allowed for integrated authentication and delegation. This property sets two Chromium policies: [AuthServerAllowlist](https://chromeenterprise.google/policies/#AuthServerAllowlist) and [AuthNegotiateDelegateAllowlist](https://chromeenterprise.google/policies/#AuthNegotiateDelegateAllowlist). [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/502476) in GitLab 17.6." -msgstr "" +msgstr "Serveurs qu'il convient d'autoriser pour la délégation et l'authentification intégrées. Cette propriété définit deux politiques Chromium : [AuthServerAllowlist](https://chromeenterprise.google/policies/#AuthServerAllowlist) et [AuthNegotiateDelegateAllowlist](https://chromeenterprise.google/policies/#AuthNegotiateDelegateAllowlist). [Fonctionnalité introduite](https://gitlab.com/gitlab-org/gitlab/-/issues/502476) dans GitLab 17.6." msgid "DastProfiles|Worker count" msgstr "Nombre de workers" @@ -19738,7 +19744,7 @@ msgid "Delete label: %{labelName}" msgstr "Supprimer le label : %{labelName}" msgid "Delete offline nodes after %{label}" -msgstr "" +msgstr "Supprimer les nœuds hors ligne après %{label}" msgid "Delete one-time password authenticator" msgstr "Enregistrer un authentificateur de mot de passe à usage unique" @@ -20104,7 +20110,7 @@ msgid "DependencyProxy|All items in the cache are scheduled for removal." msgstr "Tous les éléments du cache sont programmés pour suppression." msgid "DependencyProxy|Base URL of the external registry. Must begin with %{codeStart}http%{codeEnd} or %{codeStart}https%{codeEnd}" -msgstr "" +msgstr "URL de base du registre externe. Doit commencer par %{codeStart}http%{codeEnd} ou %{codeStart}https%{codeEnd}." msgid "DependencyProxy|Cached %{time}" msgstr "Mis en cache %{time}" @@ -20152,7 +20158,7 @@ msgid "DependencyProxy|Image list" msgstr "Liste d'images" msgid "DependencyProxy|Password of the external registry." -msgstr "" +msgstr "Mot de passe du registre externe." msgid "DependencyProxy|Pull image by digest example" msgstr "Tirer l'image par exemple d'empreinte" @@ -21009,10 +21015,10 @@ msgid "Designs" msgstr "Designs" msgid "Destination" -msgstr "" +msgstr "Destination" msgid "Destination path" -msgstr "" +msgstr "Chemin de destination" msgid "Destroy" msgstr "Détruire" @@ -21623,7 +21629,7 @@ msgid "Documentation" msgstr "Documentation" msgid "Documentation about the \"%{name}\" feature" -msgstr "" +msgstr "Documentation sur la fonctionnalité '%{name}'" msgid "Documentation for popular identity providers" msgstr "Documentation des principaux fournisseurs d'identité" @@ -21899,16 +21905,16 @@ msgid "DuoChat|Give feedback" msgstr "Donner votre avis" msgid "DuoChat|How do I change my password in GitLab?" -msgstr "" +msgstr "Comment modifier mon mot de passe dans GitLab ?" msgid "DuoChat|How do I clone a repository?" -msgstr "" +msgstr "Comment cloner un dépôt ?" msgid "DuoChat|How do I create a template?" -msgstr "" +msgstr "Comment créer un modèle ?" msgid "DuoChat|How do I fork a project?" -msgstr "" +msgstr "Comment créer une bifurcation pour un projet ?" msgid "DuoChat|How to use GitLab" msgstr "Comment utiliser GitLab" @@ -22022,7 +22028,7 @@ msgid "DuoEnterpriseTrial|GitLab Duo Enterprise is only available for purchase f msgstr "GitLab Duo Enterprise est uniquement disponible à l'achat pour les clients Ultimate." msgid "DuoEnterpriseTrial|GitLab Duo Enterprise is your end-to-end AI partner for faster, more secure software development." -msgstr "" +msgstr "GitLab Duo Enterprise est votre partenaire d'IA de bout en bout pour un développement logiciel plus rapide et plus sécurisé." msgid "DuoEnterpriseTrial|Maintain control and keep your data safe" msgstr "Garder le contrôle et protéger vos données" @@ -22220,7 +22226,7 @@ msgid "DuoProTrial|You have successfully started a Duo Pro trial that will expir msgstr "Votre essai gratuit de Duo Pro a bien été activé et expirera le %{exp_date}. Pour que les membres puissent accéder aux nouvelles fonctionnalités de GitLab Duo Pro, %{assign_link_start}attribuez-leur%{assign_link_end} des sièges GitLab Duo Pro." msgid "Duplicate entries found for compliance controls for the requirement." -msgstr "" +msgstr "Des doublons ont été trouvés dans les contrôles de conformité pour cette exigence." msgid "Duplicate packages" msgstr "Paquets dupliqués" @@ -22774,7 +22780,7 @@ msgid "Enable incident management inbound alert limit" msgstr "Activer la limite d'alerte entrante de la gestion des incidents" msgid "Enable indexing" -msgstr "" +msgstr "Activer l'indexation" msgid "Enable instance runners for all projects and subgroups in this group." msgstr "Activez les runners d'instance pour tous les projets et sous-groupes de ce groupe." @@ -22822,7 +22828,7 @@ msgid "Enable repository checks" msgstr "Activer les vérifications de dépôt" msgid "Enable searching" -msgstr "" +msgstr "Activer la recherche" msgid "Enable security training" msgstr "Activer la formation sur la sécurité" @@ -24642,7 +24648,7 @@ msgid "Failed to add a resource link" msgstr "Échec de l'ajout d'un lien de ressource" msgid "Failed to add compliance requirement control %{control_name}: %{error_message}" -msgstr "" +msgstr "Échec de l'ajout du contrôle des exigences de conformité %{control_name}. Erreur : %{error_message}" msgid "Failed to add emoji. Please try again" msgstr "Échec de l'ajout d'un émoji. Veuillez réessayer" @@ -24793,6 +24799,9 @@ msgstr "Échec du chargement" msgid "Failed to load Roadmap" msgstr "Échec du chargement de la feuille de route" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Échec du chargement des assignés. Veuillez réessayer." @@ -25254,7 +25263,7 @@ msgid "File Tree" msgstr "Arborescence des fichiers" msgid "File actions" -msgstr "" +msgstr "Actions applicables au fichier" msgid "File added" msgstr "Fichier ajouté" @@ -25413,7 +25422,7 @@ msgid "Filter results..." msgstr "Filtrer les résultats…" msgid "Filter results…" -msgstr "" +msgstr "Filtrer les résultats…" msgid "Filter users" msgstr "Filtrer les utilisateurs" @@ -25888,12 +25897,18 @@ msgstr "La fonction « labels » peut prendre en charge un maximum de 10 param msgid "GCP region configured" msgstr "Région GCP configurée" -msgid "GLQL view timed out. Add more filters to reduce the number of results." +msgid "GLQL list" msgstr "" -msgid "GLQL view timed out. Try again later." +msgid "GLQL table" msgstr "" +msgid "GLQL view timed out. Add more filters to reduce the number of results." +msgstr "La vue GLQL a expiré. Ajoutez des filtres supplémentaires pour réduire le nombre de résultats." + +msgid "GLQL view timed out. Try again later." +msgstr "La vue GLQL a expiré. Veuillez réessayer plus tard." + msgid "GPG Key ID:" msgstr "ID de la clé GPG :" @@ -26952,13 +26967,13 @@ msgid "Gitea import" msgstr "Importation depuis Gitea" msgid "GithubImporter|%{codeStart}read:org%{codeEnd} (optional): Used to import collaborators from GitHub repositories, or if your project has Git LFS files." -msgstr "" +msgstr "%{codeStart}read:org%{codeEnd} (facultatif) : utilisé pour importer des collaborateurs depuis des dépôts GitHub ou si votre projet contient des fichiers Git LFS." msgid "GithubImporter|%{codeStart}repo%{codeEnd}: Used to display a list of your public and private repositories that are available to connect to." -msgstr "" +msgstr "%{codeStart}repo%{codeEnd} : utilisé pour afficher une liste des dépôts publics et privés auxquels vous pouvez vous connecter." msgid "GithubImporter|%{codeStart}repo%{codeEnd}: Used to display a list of your public and private repositories that are available to import from." -msgstr "" +msgstr "%{codeStart}repo%{codeEnd} : utilisé pour afficher une liste des dépôts publics et privés qui sont disponibles pour importation." msgid "GithubImporter|%{code_start}read:org%{code_end} (optional): Used to import collaborators from GitHub repositories, or if your project has Git LFS files." msgstr "%{code_start}Read:org%{code_end} (facultatif) : utilisé pour importer des collaborateurs depuis des dépôts GitHub ou si votre projet contient des fichiers Git LFS." @@ -27048,13 +27063,13 @@ msgid "GithubImport|\"%{repository_name}\" size (%{repository_size}) is larger t msgstr "La taille de « %{repository_name} » (%{repository_size}) est supérieure à la limite de %{limit}." msgid "GithubImport|%{linkStart}Learn more%{linkEnd}." -msgstr "" +msgstr "%{linkStart}En savoir plus%{linkEnd}." msgid "GithubImport|%{link_start}Learn more%{link_end}." msgstr "%{link_start}En savoir plus%{link_end}." msgid "GithubImport|Create and provide your GitHub %{linkStart}personal access token%{linkEnd}." -msgstr "" +msgstr "Créez et fournissez votre %{linkStart}jeton d'accès personnel%{linkEnd} GitHub." msgid "GithubImport|Create and provide your GitHub %{link_start}personal access token%{link_end}." msgstr "Créez et fournissez votre %{link_start}jeton d'accès personnel%{link_end} GitHub." @@ -28135,6 +28150,9 @@ msgstr "Le groupe « %{group_name} » est en cours de suppression." msgid "Group '%{group_name}' was successfully updated." msgstr "Le groupe « %{group_name} » a été mis à jour avec succès." +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "État du stockage Git LFS du groupe :" @@ -28693,6 +28711,9 @@ msgstr "Activer l'agrégation en arrière-plan de la vue d'ensemble pour le tabl msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "Activer l'envoi de notifications par courriel pour ce groupe et tous ses sous-groupes et projets" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "Imposer les certificats SSH" @@ -28726,9 +28747,12 @@ msgstr "Le chemin d'accès au groupe ne peut pas dépasser %{length} caractère msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "Comment puis-je gérer les certificats SSH de groupe ?" -msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." msgstr "" +msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." +msgstr "Si cette option est activée, les comptes d'utilisateurs Enterprise ne pourront pas utiliser de jetons d'accès personnels. %{learn_more_link}" + msgid "GroupSettings|If enabled, group access tokens expiry webhooks execute 60, 30, and 7 days before the token expires. If disabled, these webhooks only execute 7 days before the token expires." msgstr "Si cette option est activée, les crochets Web d'expiration des jetons d'accès aux groupes s'exécutent 60, 30 et 7 jours avant l'expiration d'un jeton. Si l'option est désactivée, ces crochets Web ne s'exécutent que 7 jours avant l'expiration du jeton." @@ -28772,7 +28796,7 @@ msgid "GroupSettings|Retry" msgstr "Réessayer" msgid "GroupSettings|Saving…" -msgstr "" +msgstr "Sauvegarde en cours…" msgid "GroupSettings|Select a project" msgstr "Sélectionner un projet" @@ -29021,7 +29045,7 @@ msgid "GroupsNew|You can also %{linkStart}import an existing group%{linkEnd}." msgstr "Vous pouvez également %{linkStart}importer un groupe existant%{linkEnd}." msgid "GroupsNew|e.g. h8d3f016698e…" -msgstr "" +msgstr "Par exemple h8d3f016698e…" msgid "GroupsTree|Are you sure you want to leave the \"%{fullName}\" group?" msgstr "Voulez-vous vraiment quitter le groupe « %{fullName} » ?" @@ -29057,7 +29081,7 @@ msgid "Groups|Changing group URL can have unintended side effects. %{linkStart}L msgstr "La modification de l'URL du groupe peut avoir des effets de bord non souhaités. %{linkStart}En savoir plus%{linkEnd}." msgid "Groups|Checking group URL availability…" -msgstr "" +msgstr "Vérification de la disponibilité de l'URL du groupe…" msgid "Groups|Create and add README" msgstr "Créer et ajouter un README" @@ -29111,7 +29135,7 @@ msgid "Groups|Save changes" msgstr "Sauvegarder les modifications" msgid "Groups|Show children of %{avatarLabel}" -msgstr "" +msgstr "Afficher les enfants de %{avatarLabel}" msgid "Groups|Subgroup URL" msgstr "URL du sous-groupe" @@ -29451,7 +29475,7 @@ msgid "Hide details" msgstr "Masquer les détails" msgid "Hide empty" -msgstr "" +msgstr "Masquer les éléments vides" msgid "Hide file browser" msgstr "Masquer le navigateur de fichiers" @@ -30923,7 +30947,7 @@ msgid "Incident|Timeline text" msgstr "Texte de la chronologie" msgid "Incident|Timeline text…" -msgstr "" +msgstr "Texte de la chronologie…" msgid "Include additional optional data in Service Ping. To enable optional data, first enable Service Ping." msgstr "Incluez des données facultatives supplémentaires dans le Ping de Service. Pour activer les données facultatives, activez d'abord le Ping de Service." @@ -31172,7 +31196,7 @@ msgid "Instance runners help link" msgstr "Lien d'aide sur les runners d'instance" msgid "Instance token prefix" -msgstr "" +msgstr "Préfixe du jeton d'instance" msgid "Insufficient permission to modify user organizations" msgstr "Autorisation insuffisante pour modifier les organisations d'utilisateurs et d'utilisatrices" @@ -33267,7 +33291,7 @@ msgid "Jobs|Stage" msgstr "Étape" msgid "Jobs|Status for job %{id}" -msgstr "" +msgstr "État du job %{id}" msgid "Jobs|There was a problem fetching the failed jobs." msgstr "Une erreur s'est produite lors de la récupération des jobs en échec." @@ -33303,7 +33327,7 @@ msgid "Job|Are you sure you want to erase this job log and artifacts?" msgstr "Voulez-vous vraiment effacer le job log et les artefacts ?" msgid "Job|Are you sure you want to force cancel this job? This will immediately mark the job as canceled, even if the runner is unresponsive." -msgstr "" +msgstr "Êtes-vous sûr de vouloir forcer l'annulation de ce job ? Le job sera immédiatement considéré comme annulé, même si le runner ne répond pas." msgid "Job|Browse" msgstr "Parcourir" @@ -33342,10 +33366,10 @@ msgid "Job|Finished at" msgstr "Terminé à" msgid "Job|Force cancel" -msgstr "" +msgstr "Forcer l'annulation" msgid "Job|Force cancel a job stuck in `canceling` state" -msgstr "" +msgstr "Forcer l'annulation d'un job bloqué dans l'état 'annulation'" msgid "Job|Full log viewer" msgstr "Visualisation du journal complet" @@ -34134,13 +34158,13 @@ msgid "Latest changes" msgstr "Derniers changements" msgid "Latest pipeline for the most recent commit on this ref" -msgstr "" +msgstr "Dernier pipeline pour la validation la plus récente sur cette réf." msgid "Launch a ready-to-code development environment for your project." msgstr "Lancez un environnement de développement prêt-à-coder pour votre projet." msgid "Launch board" -msgstr "" +msgstr "Lancer le tableau" msgid "Layout|Fixed" msgstr "Fixe" @@ -34972,7 +34996,7 @@ msgid "Makes this %{type} confidential." msgstr "Rend ce %{type} confidentiel." msgid "Malformed .git-blame-ignore-revs" -msgstr "" +msgstr "Paramètre .git-blame-ignore-rêve malformé" msgid "Manage" msgstr "Gérer" @@ -35437,10 +35461,10 @@ msgid "Maximum number of %{name} (%{count}) exceeded" msgstr "Nombre maximum de %{name} (%{count}) atteint" msgid "Maximum number of Helm packages per channel" -msgstr "" +msgstr "Nombre maximal de paquets Helm par canal" msgid "Maximum number of Helm packages that can be listed per channel. Must be at least 1." -msgstr "" +msgstr "Nombre maximal de paquets Helm qu'il est possible de répertorier pour chaque canal. Ce nombre doit être supérieur ou égal à 1." msgid "Maximum number of changes (branches or tags) in a single push above which a bulk push event is created (default is 3). Setting to 0 does not disable throttling." msgstr "Nombre maximum de modifications (branches ou étiquettes) dans une poussée unique au-delà duquel un événement de poussée en bloc est créé (3 par défaut). Définir à 0 ne désactive pas la limitation." @@ -35650,7 +35674,7 @@ msgid "MemberRole|Actions" msgstr "Actions" msgid "MemberRole|Added from %{role}" -msgstr "" +msgstr "Ajout effectué par %{role}" msgid "MemberRole|Are you sure you want to delete this custom role?" msgstr "Voulez-vous vraiment supprimer ce rôle personnalisé ?" @@ -36328,7 +36352,7 @@ msgid "MergeConflict|Commit to source branch" msgstr "Validation sur la branche source" msgid "MergeConflict|Committing…" -msgstr "" +msgstr "Validation en cours…" msgid "MergeConflict|Edit inline" msgstr "Éditer en ligne" @@ -36595,7 +36619,7 @@ msgid "Merges this merge request immediately." msgstr "Fusionne cette requête de fusion immédiatement." msgid "Merge…" -msgstr "" +msgstr "Fusion…" msgid "Mermaid diagram" msgstr "Diagramme Mermaid" @@ -37076,7 +37100,7 @@ msgid "MlExperimentTracking|Failed to load experiments with error: %{error}" msgstr "" msgid "MlExperimentTracking|Failed to remove run" -msgstr "" +msgstr "Échec de suppression de l'exécution" msgid "MlExperimentTracking|For example 1.0.0" msgstr "" @@ -37218,7 +37242,7 @@ msgid "MlModelRegistry|Are you sure you want to delete this model version?" msgstr "Voulez-vous vraiment supprimer cette version de modèle ?" msgid "MlModelRegistry|Are you sure you would like to delete this model?" -msgstr "" +msgstr "Êtes-vous sûr de vouloir supprimer ce modèle ?" msgid "MlModelRegistry|Artifact file creation failed" msgstr "Échec de la création du fichier artefact" @@ -37266,7 +37290,7 @@ msgid "MlModelRegistry|Create/Import model" msgstr "Créer/Importer un modèle" msgid "MlModelRegistry|Created" -msgstr "" +msgstr "Créé" msgid "MlModelRegistry|Creating a model" msgstr "Créer un modèle" @@ -37293,7 +37317,7 @@ msgid "MlModelRegistry|Delete version %{versionName}" msgstr "Supprimer la version %{versionName}" msgid "MlModelRegistry|Deleting this model also deletes all its versions, including any imported or uploaded artifacts, and their associated settings." -msgstr "" +msgstr "La suppression de ce modèle supprime également toutes ses versions, y compris tous les artéfacts importés ou téléversés, ainsi que leurs paramètres associés." msgid "MlModelRegistry|Deleting this version also deletes all of its imported or uploaded artifacts and its settings." msgstr "La suppression de cette version supprime également tous ses artéfacts importés ou téléversés, ainsi que ses paramètres." @@ -37425,7 +37449,7 @@ msgid "MlModelRegistry|Must be unique. May not contain spaces." msgstr "Doit être unique. Ne peut pas contenir d'espaces." msgid "MlModelRegistry|Name" -msgstr "" +msgstr "Nom" msgid "MlModelRegistry|New version" msgstr "Nouvelle version" @@ -37629,7 +37653,7 @@ msgid "Month" msgstr "Mois" msgid "Monthly" -msgstr "" +msgstr "Mensuelle" msgid "Months" msgstr "Mois" @@ -37656,7 +37680,7 @@ msgid "More options" msgstr "Plus d'options" msgid "More than %{control_count} controls not allowed for a requirement." -msgstr "" +msgstr "Plus de %{control_count} contrôles non autorisés pour une exigence." msgid "More than %{number_commits_distance} commits different with %{default_branch}" msgstr "Plus de %{number_commits_distance} validations de différence avec %{default_branch}" @@ -37701,25 +37725,25 @@ msgid "Move up" msgstr "Déplacer vers le haut" msgid "MoveIssue|Cannot move issue due to insufficient permissions." -msgstr "" +msgstr "Impossible de déplacer le ticket, car vous ne disposez pas des autorisations nécessaires." msgid "MoveIssue|Cannot move issue to project it originates from." -msgstr "" +msgstr "Impossible de déplacer le ticket vers son projet d'origine." msgid "MoveIssue|Cannot move issues of '%{issue_type}' type." msgstr "Impossible de déplacer les tickets de type « %{issue_type} »." msgid "MoveWorkItem|Unable to move. Moving '%{work_item_type}' is not supported." -msgstr "" +msgstr "Échec du déplacement. Le déplacement d'un(e) '%{work_item_type}' n'est pas pris en charge." msgid "MoveWorkItem|Unable to move. Moving across projects and groups is not supported." -msgstr "" +msgstr "Échec du déplacement. Le déplacement entre les projets et les groupes n'est pas pris en charge." msgid "MoveWorkItem|Unable to move. Target namespace is pending deletion." -msgstr "" +msgstr "Échec du déplacement. L'espace de nommage cible est en attente de suppression." msgid "MoveWorkItem|Unable to move. You have insufficient permissions." -msgstr "" +msgstr "Échec du déplacement. Vous ne disposez pas des autorisations nécessaires." msgid "Moved issue to %{label} column in the board." msgstr "Ticket déplacé vers la colonne %{label} du tableau." @@ -37815,7 +37839,7 @@ msgid "My-Reaction" msgstr "Ma réaction" msgid "N/A" -msgstr "" +msgstr "N/A" msgid "NEW" msgstr "NOUVEAU" @@ -38598,7 +38622,7 @@ msgid "No AI gateway available." msgstr "Aucune passerelle d'IA disponible." msgid "No Author" -msgstr "" +msgstr "Aucun·e auteur·e" msgid "No Epic" msgstr "Aucune épopée" @@ -38760,7 +38784,7 @@ msgid "No issues found" msgstr "Aucun ticket trouvé" msgid "No items" -msgstr "" +msgstr "Aucun élément" msgid "No iteration" msgstr "Aucune itération" @@ -39074,7 +39098,7 @@ msgid "Not permitted to create compliance control" msgstr "Interdiction de créer un contrôle de conformité" msgid "Not permitted to create requirement" -msgstr "" +msgstr "La création d'exigence n'est pas autorisée" msgid "Not permitted to destroy framework" msgstr "Pas d'autorisation pour détruire le cadriciel" @@ -40545,7 +40569,7 @@ msgid "Once imported, repositories can be mirrored over SSH. Read more %{link_st msgstr "Une fois importés, les dépôts peuvent être mis en miroir via SSH. Plus d'informations %{link_start}ici%{link_end}." msgid "Once you reach the number of seats in your subscription, you can no longer invite or add users to the namespace." -msgstr "" +msgstr "Une fois que vous avez atteint le nombre maximal de sièges autorisés par votre abonnement, vous ne pouvez plus inviter ou ajouter d'utilisateurs et d'utilisatrices dans l'espace de nommage." msgid "One and only one of %{params} is required" msgstr "Un seul des %{params} est requis" @@ -41273,7 +41297,7 @@ msgid "Package forwarding" msgstr "Transfert de paquet" msgid "Package limits" -msgstr "" +msgstr "Limites du paquet" msgid "Package name of the app in Google Play." msgstr "Nom du paquet dans l'application sur Google Play." @@ -41381,13 +41405,13 @@ msgid "PackageRegistry|Conan Command" msgstr "Commande Conan" msgid "PackageRegistry|Configure external Maven registry" -msgstr "" +msgstr "Configurer le registre Maven externe" msgid "PackageRegistry|Configure in settings" msgstr "Configurer dans les paramètres" msgid "PackageRegistry|Configure package forwarding, package limits, and package file size limits." -msgstr "" +msgstr "Configurez la redirection et les limites des paquets, ainsi que la taille maximale de fichier des paquets." msgid "PackageRegistry|Copy .pypirc content" msgstr "Copier le contenu de .pypirc" @@ -42268,7 +42292,7 @@ msgid "Pause" msgstr "Pause" msgid "Pause indexing" -msgstr "" +msgstr "Interrompre l'indexation" msgid "Pause time (ms)" msgstr "Temps de pause (ms)" @@ -42442,7 +42466,7 @@ msgid "Permalink" msgstr "Lien permanent" msgid "Permalink copied to clipboard." -msgstr "" +msgstr "Permalien copié dans le presse-papiers." msgid "Permissions" msgstr "Autorisations" @@ -42592,7 +42616,7 @@ msgid "PipelineCharts|An error has occurred when retrieving the pipelines data" msgstr "Une erreur s'est produite lors de la récupération des données des pipelines" msgid "PipelineCharts|An error occurred while loading pipeline analytics. Please try refreshing the page." -msgstr "" +msgstr "Une erreur s'est produite lors du chargement des données d'analyse du pipeline. Veuillez essayer d'actualiser la page." msgid "PipelineCharts|An unknown error occurred while processing CI/CD analytics." msgstr "Une erreur inconnue s'est produite lors du traitement de l'analytique CI/CD." @@ -43183,7 +43207,7 @@ msgid "Pipelines|If you are unsure, please ask a project maintainer to review it msgstr "En cas de doute, veuillez demander à un mainteneur du projet de l'examiner pour vous." msgid "Pipelines|Inputs" -msgstr "" +msgstr "Entrées" msgid "Pipelines|It is recommended the code is reviewed thoroughly before running this pipeline with the parent project's CI resource." msgstr "Il est recommandé d'examiner le code minutieusement avant d'exécuter ce pipeline avec la ressource CI du projet parent." @@ -43246,7 +43270,7 @@ msgid "Pipelines|Pipeline syntax is correct. %{linkStart}Learn more%{linkEnd}" msgstr "La syntaxe du pipeline est correcte. %{linkStart}En savoir plus%{linkEnd}" msgid "Pipelines|Pipelines count" -msgstr "" +msgstr "Nombre de pipelines" msgid "Pipelines|Project cache successfully reset." msgstr "Réinitialisation du cache de projet réussie." @@ -43348,10 +43372,10 @@ msgid "Pipelines|This pipeline is stuck" msgstr "Ce pipeline est bloqué" msgid "Pipelines|This pipeline ran for a branch." -msgstr "" +msgstr "Ce pipeline a fonctionné pour une branche." msgid "Pipelines|This pipeline ran for a tag." -msgstr "" +msgstr "Ce pipeline a fonctionné pour une étiquette." msgid "Pipelines|This pipeline ran on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch." msgstr "Ce pipeline s'est exécuté sur le contenu de la demande de fusion combiné avec le contenu de toutes les autres demandes de fusion qui étaient en attente de fusion vers la branche cible." @@ -43369,7 +43393,7 @@ msgid "Pipelines|This project is not currently set up to run pipelines." msgstr "Ce projet n'est actuellement pas configuré pour exécuter des pipelines." msgid "Pipelines|Time" -msgstr "" +msgstr "Date" msgid "Pipelines|To run new jobs and pipelines in this namespace's projects, %{link_start}buy additional compute minutes%{link_end}." msgstr "Pour exécuter de nouveaux jobs et pipelines dans les projets de cet espace de nommage, %{link_start}achetez des minutes de calcul supplémentaires%{link_end}." @@ -43447,7 +43471,7 @@ msgid "Pipelines|Your changes have been successfully committed. Now redirecting msgstr "Vos modifications ont été validées avec succès. Redirection vers la page de nouvelle requête de fusion." msgid "Pipelines|branch" -msgstr "" +msgstr "branche" msgid "Pipelines|error" msgstr "erreur" @@ -43474,13 +43498,13 @@ msgid "Pipelines|stuck" msgstr "bloqué" msgid "Pipelines|tag" -msgstr "" +msgstr "étiquette" msgid "Pipelines|yaml invalid" msgstr "yaml non valide" msgid "Pipeline|95th percentile" -msgstr "" +msgstr "95e percentile" msgid "Pipeline|Actions" msgstr "Actions" @@ -43516,7 +43540,7 @@ msgid "Pipeline|Date" msgstr "Date" msgid "Pipeline|Duration" -msgstr "" +msgstr "Durée" msgid "Pipeline|Failed" msgstr "Échoué" @@ -43594,7 +43618,7 @@ msgid "Pipeline|Running" msgstr "En cours" msgid "Pipeline|Seconds" -msgstr "" +msgstr "Secondes" msgid "Pipeline|Skipped" msgstr "Ignoré" @@ -43621,7 +43645,7 @@ msgid "Pipeline|Stop pipeline #%{pipelineId}?" msgstr "Arrêter le pipeline numéro %{pipelineId} ?" msgid "Pipeline|Successful" -msgstr "" +msgstr "Réussite" msgid "Pipeline|Tag name" msgstr "Nom de l'étiquette" @@ -43651,10 +43675,10 @@ msgid "Pipeline|This change will not change the overall test coverage if merged. msgstr "Cette modification ne modifiera pas la couverture de test globale si elle est fusionnée." msgid "Pipeline|This pipeline ran for a branch." -msgstr "" +msgstr "Ce pipeline a fonctionné pour une branche." msgid "Pipeline|This pipeline ran for a tag." -msgstr "" +msgstr "Ce pipeline a fonctionné pour une étiquette." msgid "Pipeline|This pipeline ran on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch." msgstr "Ce pipeline s'est exécuté sur le contenu de la demande de fusion combiné avec le contenu de toutes les autres demandes de fusion qui étaient en attente de fusion vers la branche cible." @@ -43666,7 +43690,7 @@ msgid "Pipeline|This pipeline ran on the contents of the merge request's source msgstr "Ce pipeline s'est exécuté sur le contenu de la branche source de la demande de fusion, pas sur celui de la branche cible." msgid "Pipeline|Time" -msgstr "" +msgstr "Date" msgid "Pipeline|To run a merge request pipeline, the jobs in the CI/CD configuration file %{ciDocsLinkStart}must be configured%{ciDocsLinkEnd} to run in merge request pipelines and you must have %{permissionDocsLinkStart}sufficient permissions%{permissionDocsLinkEnd} in the source project." msgstr "Pour exécuter un pipeline de requête de fusion, les jobs dans le fichier de configuration CI/CD %{ciDocsLinkStart}doivent être configurés%{ciDocsLinkEnd} pour s'exécuter dans des pipelines de requête de fusion. Vous devez également disposer des %{permissionDocsLinkStart}autorisations suffisantes%{permissionDocsLinkEnd} dans le projet source." @@ -43681,7 +43705,7 @@ msgid "Pipeline|Variable" msgstr "Variable" msgid "Pipeline|Variable type" -msgstr "" +msgstr "Type de variable" msgid "Pipeline|Variables" msgstr "Variables" @@ -43705,7 +43729,7 @@ msgid "Pipeline|api" msgstr "api" msgid "Pipeline|branch" -msgstr "" +msgstr "branche" msgid "Pipeline|for" msgstr "pour" @@ -43723,7 +43747,7 @@ msgid "Pipeline|on" msgstr "sur" msgid "Pipeline|tag" -msgstr "" +msgstr "étiquette" msgid "PivotalTrackerService|Add commit messages as comments to Pivotal Tracker stories." msgstr "Ajouter les messages de validation en tant que commentaires sur les histoires de Pivotal Tracker." @@ -43839,6 +43863,9 @@ msgstr "Veuillez nommer le modèle de commentaire." msgid "Please enter a name for the custom emoji." msgstr "Veuillez entrer un nom pour l'émoji personnalisé." +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Veuillez entrer un nombre non négatif" @@ -45531,16 +45558,16 @@ msgid "ProjectCreationLevel|Administrators" msgstr "Administrateurs et administratrices" msgid "ProjectCreationLevel|Default minimum role required to create projects" -msgstr "" +msgstr "Rôle minimal par défaut requis pour créer des projets" msgid "ProjectCreationLevel|Developers" -msgstr "" +msgstr "Développeurs/développeuses" msgid "ProjectCreationLevel|Maintainers" msgstr "Responsables" msgid "ProjectCreationLevel|Minimum role required to create projects" -msgstr "" +msgstr "Rôle minimal requis pour créer des projets" msgid "ProjectCreationLevel|No one" msgstr "Personne" @@ -46733,10 +46760,10 @@ msgid "ProjectsNew|Analyze your source code for known security vulnerabilities." msgstr "Analyser votre code source à la recherche de failles de sécurité connues." msgid "ProjectsNew|Authenticate through GitHub" -msgstr "" +msgstr "S'authentifier via GitHub" msgid "ProjectsNew|Authenticate with GitHub" -msgstr "" +msgstr "S'authentifier avec GitHub" msgid "ProjectsNew|Available only for projects within groups" msgstr "Disponible uniquement pour les projets appartenant à un ou plusieurs groupes" @@ -48148,11 +48175,11 @@ msgstr "Actualisez la page pour afficher le statut de la synchronisation" msgid "Refreshing in a second to show the updated status…" msgid_plural "Refreshing in %d seconds to show the updated status…" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "L'affichage sera réactualisé dans une seconde et l'état mis à jour…" +msgstr[1] "L'affichage sera réactualisé dans %d secondes et l'état mis à jour…" msgid "Refreshing…" -msgstr "" +msgstr "Actualisation…" msgid "Regenerate export" msgstr "Régénérer l'export" @@ -48601,7 +48628,7 @@ msgid "Remove milestone" msgstr "Supprimer le jalon" msgid "Remove number" -msgstr "" +msgstr "Supprimer le nombre" msgid "Remove parent" msgstr "Supprimer le parent" @@ -48634,7 +48661,7 @@ msgid "Remove summary" msgstr "Supprimer le résumé" msgid "Remove text" -msgstr "" +msgstr "Supprimer le texte" msgid "Remove time estimate" msgstr "Supprimer l'estimation du temps" @@ -48804,7 +48831,7 @@ msgid "Reopening %{issuableType}..." msgstr "Réouverture de %{issuableType}..." msgid "Reopening…" -msgstr "" +msgstr "Réouverture…" msgid "Reopens this %{quick_action_target}." msgstr "Rouvre l'élément suivant : %{quick_action_target}." @@ -49523,7 +49550,7 @@ msgid "Results limit reached" msgstr "Limite de résultats atteinte" msgid "Results pending…" -msgstr "" +msgstr "Résultats en attente…" msgid "Resume" msgstr "Reprendre" @@ -49750,10 +49777,10 @@ msgid "Run untagged jobs" msgstr "Exécuter les jobs sans étiquettes" msgid "Run with eid not found" -msgstr "" +msgstr "Exécution avec eid introuvable" msgid "Run with id not found" -msgstr "" +msgstr "Exécution avec id introuvable" msgid "Runner" msgstr "Runner" @@ -50049,7 +50076,7 @@ msgid "Runners|Creator" msgstr "Créateur" msgid "Runners|Date range limited to %{dateRange} days" -msgstr "" +msgstr "La plage de dates est limitée à %{dateRange} jours" msgid "Runners|Delete" msgstr "Supprimer" @@ -50526,7 +50553,7 @@ msgid "Runners|Runner Registration token" msgstr "Jeton d'enregistrement du runner" msgid "Runners|Runner Usage" -msgstr "" +msgstr "Utilisation du runner" msgid "Runners|Runner assigned to project." msgstr "Runner assigné au projet." @@ -50921,14 +50948,14 @@ msgstr "partagé" msgid "Runner|1 day selected" msgid_plural "Runner|%d days selected" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 jour sélectionné" +msgstr[1] "%d jours sélectionnés" msgid "Runner|Export runner usage" msgstr "Exporter l'utilisation du runner" msgid "Runner|Export runner usage for selected dates" -msgstr "" +msgstr "Exporter l'utilisation du runner pour les dates sélectionnées" msgid "Runner|Runner actions" msgstr "Actions des runners" @@ -50937,7 +50964,7 @@ msgid "Runner|Something went wrong while generating the CSV export. Please try a msgstr "Une erreur s'est produite lors de la génération de l'exportation CSV. Veuillez réessayer." msgid "Runner|The CSV export contains a list of projects, the number of minutes used by instance runners, and the number of jobs that ran. When the export is completed, it is sent as an attachment to your email." -msgstr "" +msgstr "L'exportation CSV contient une liste de projets, le nombre de minutes utilisées par les runners d'instance et le nombre de jobs exécutés. Une fois l'exportation terminée, elle vous est envoyée en pièce jointe par courriel." msgid "Runner|Your CSV export has started. It will be sent to your email inbox when its ready." msgstr "Votre exportation CSV a commencé. Elle sera envoyée dans votre boîte de réception une fois prête." @@ -51156,7 +51183,7 @@ msgid "ScanExecutionPolicy|%{rules} every time a pipeline runs for %{scopes} %{b msgstr "%{rules} chaque fois qu'un pipeline s'exécute pour %{scopes} %{branches} %{branchExceptions} %{agents} %{namespaces}" msgid "ScanExecutionPolicy|%{strategySelector} pipeline file to run from %{projectSelector}" -msgstr "" +msgstr "%{strategySelector} fichier de pipeline à exécuter à partir de %{projectSelector}" msgid "ScanExecutionPolicy|%{strategySelector}into the %{boldStart}.gitlab-ci.yml%{boldEnd} with the following %{boldStart}pipeline execution file%{boldEnd} from %{projectSelector}" msgstr "%{strategySelector}dans le fichier %{boldStart}.gitlab-ci.yml%{boldEnd} avec le %{boldStart}fichier d'exécution du pipeline%{boldEnd} suivant de %{projectSelector}" @@ -51288,7 +51315,7 @@ msgid "ScanExecutionPolicy|The content of this pipeline execution YAML file is i msgstr "Le contenu de ce fichier YAML d'exécution de pipeline est injecté dans le fichier .gitlab-ci.yml du projet cible. Les étapes personnalisées utilisées dans le fichier YAML sont ignorées, sauf si elles sont définies dans le fichier '.gitlab-ci.yml' du projet cible. Toutes les fonctionnalités CI/CD de GitLab sont prises en charge." msgid "ScanExecutionPolicy|The content of this pipeline execution YAML file of the target project is run at the scheduled time. All GitLab CI/CD features are supported." -msgstr "" +msgstr "Le contenu de ce fichier YAML d'exécution de pipeline pour le projet cible est exécuté à l'heure prévue. Toutes les fonctionnalités CI/CD de GitLab sont prises en charge." msgid "ScanExecutionPolicy|The content of this pipeline execution YAML file overrides the .gitlab-ci.yml file of the target project. All GitLab CI/CD features are supported." msgstr "Le contenu de ce fichier YAML d'exécution de pipeline remplace dans le fichier .gitlab-ci.yml du projet cible. Toutes les fonctionnalités CI/CD de GitLab sont prises en charge." @@ -51417,7 +51444,7 @@ msgid "ScanResultPolicy|Except" msgstr "Sauf" msgid "ScanResultPolicy|Exceptions that require approval" -msgstr "" +msgstr "Exceptions nécessitant une approbation" msgid "ScanResultPolicy|Fail closed" msgstr "Échec de fermeture" @@ -51585,7 +51612,7 @@ msgid "ScanResultPolicy|Severity is:" msgstr "La gravité est :" msgid "ScanResultPolicy|Specify the packages where this license requires approval before use" -msgstr "" +msgstr "Indiquer les paquets pour lesquels cette licence doit être approuvée avant d'être utilisée" msgid "ScanResultPolicy|Status is:" msgstr "Le statut est :" @@ -52094,7 +52121,7 @@ msgid "Secrets|Add secret" msgstr "Ajouter un secret" msgid "Secrets|An error occurred while fetching secrets. Please try again." -msgstr "" +msgstr "Une erreur s'est produite lors de la récupération des secrets. Veuillez réessayer." msgid "Secrets|An error occurred while fetching the Secret manager status. Please try again." msgstr "Une erreur s'est produite lors de la récupération de l'état du gestionnaire de secrets. Veuillez réessayer." @@ -52253,7 +52280,7 @@ msgid "Security dashboard" msgstr "Tableau de bord de sécurité" msgid "Security inventory" -msgstr "" +msgstr "Inventaire de sécurité" msgid "Security policy" msgstr "Stratégie de sécurité" @@ -52411,7 +52438,7 @@ msgid "SecurityConfiguration|Using custom settings. You won't receive automatic msgstr "Utilisation de paramètres personnalisés. Vous ne recevrez pas de mises à jour automatiques sur cette variable. %{anchorStart}Restaurer la valeur par défaut%{anchorEnd}" msgid "SecurityConfiguration|Vulnerabilities" -msgstr "" +msgstr "Vulnérabilités" msgid "SecurityConfiguration|Vulnerabilities are retained in the database for one year after the last update. After one year of inactivity, vulnerabilities are archived on the first of each month. Archives are removed after five years." msgstr "Les vulnérabilités sont conservées dans la base de données pendant un an après la dernière mise à jour. Au bout d'un an d'inactivité, elles sont archivées le premier de chaque mois. Les archives sont supprimées au bout de cinq ans." @@ -52562,12 +52589,30 @@ msgstr "ex : glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "ex : spec/**/*.rb" -msgid "SecurityInventory|Security inventory" +msgid "SecurityInventory|CS" msgstr "" -msgid "SecurityInventory|View security coverage and vulnerabilities for all the projects in this group. Data is refreshed and may be upto 24 hours behind." +msgid "SecurityInventory|DAST" msgstr "" +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + +msgid "SecurityInventory|Security inventory" +msgstr "Inventaire de sécurité" + +msgid "SecurityInventory|View security coverage and vulnerabilities for all the projects in this group. Data is refreshed and may be upto 24 hours behind." +msgstr "Visualisez la couverture de sécurité et les vulnérabilités pour tous les projets de ce groupe. Les données sont actualisées, mais peuvent avoir jusqu'à 24 heures de retard." + msgid "SecurityOrchestration| and " msgstr "et " @@ -52893,6 +52938,9 @@ msgstr "Modifier le projet de politique" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "Modifier la politique d'exécution d'analyse" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "Nom de politique vide" @@ -53268,9 +53316,9 @@ msgid "SecurityOrchestration|Scan will automatically choose a runner to run on b msgstr "L'analyse choisira automatiquement un runner sur lequel s'exécuter, car les runners ne portent pas d'étiquettes. Vous pouvez %{linkStart}créer une nouvelle étiquette dans les paramètres%{linkEnd}." msgid "SecurityOrchestration|Schedule a new" -msgstr "" +msgstr "Programmer un nouveau" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53400,7 +53448,7 @@ msgid "SecurityOrchestration|This %{namespaceType} does not contain any security msgstr "Aucune politique de sécurité n'est incluse dans : %{namespaceType}." msgid "SecurityOrchestration|This %{namespaceType} is not linked to a security policy project. Either link it to an existing project or create a new policy, which will create a new project that you can use as a security policy project. For help, see %{linkStart}policies%{linkEnd}." -msgstr "" +msgstr "Ce %{namespaceType} n'est pas lié à un projet de stratégie de sécurité. Vous pouvez soit le lier à un projet existant, soit créer une nouvelle stratégie, ce qui créera un nouveau projet que vous pourrez utiliser comme projet de stratégie de sécurité. Pour obtenir de l'aide, consultez les %{linkStart}stratégies%{linkEnd}." msgid "SecurityOrchestration|This applies to following compliance frameworks:" msgstr "Cela s'applique aux frameworks de conformité suivants :" @@ -53481,7 +53529,7 @@ msgid "SecurityOrchestration|Use default mode for scoping" msgstr "Utiliser le mode par défaut pour définir la portée" msgid "SecurityOrchestration|Use the format %{schemaStart}path-to-package@package-version%{schemaEnd}. For multiple packages, separate paths with commas. For example: path/file1.yaml@1.1.1, path/file2.yaml@2.2.2" -msgstr "" +msgstr "Utilisez le format %{schemaStart}path-to-package@package-version%{schemaEnd}. En présence de plusieurs paquets, séparez les chemins d'accès par des virgules. Par exemple : path/file1.yaml@1.1.1, path/file2.yaml@2.2.2" msgid "SecurityOrchestration|Users can skip pipelines" msgstr "Les utilisateurs et utilisatrices peuvent ignorer des pipelines" @@ -53630,6 +53678,9 @@ msgstr "sont des faux positifs" msgid "SecurityOrchestration|are not false positives" msgstr "ne sont pas des faux positifs" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "branche" @@ -54332,7 +54383,7 @@ msgid "Select a template repository" msgstr "Sélectionner un modèle de dépôt" msgid "Select action" -msgstr "" +msgstr "Sélectionner une action" msgid "Select all" msgstr "Tout sélectionner" @@ -55163,7 +55214,7 @@ msgid "SetStatusModal|Sorry, we weren't able to set your status. Please try agai msgstr "Désolé, le statut n'a pas pu être défini. Veuillez réessayer ultérieurement." msgid "SetStatusModal|Status message" -msgstr "" +msgstr "Message d'état" msgid "SetStatusModal|Status updated" msgstr "État actualisé" @@ -55211,7 +55262,7 @@ msgid "Setting enforced" msgstr "Paramètre imposé" msgid "Setting high package limits can impact database performance. Consider the size of your instance when configuring these values." -msgstr "" +msgstr "La définition de limites élevées pour les paquets peut avoir un impact sur les performances de la base de données. Tenez compte de la taille de votre instance lorsque vous configurez ces valeurs." msgid "Settings" msgstr "Paramètres" @@ -55364,7 +55415,7 @@ msgid "Show details" msgstr "Afficher les détails" msgid "Show empty" -msgstr "" +msgstr "Afficher les éléments vides" msgid "Show file browser" msgstr "Afficher le navigateur de fichiers" @@ -56424,7 +56475,7 @@ msgid "Source is not available" msgstr "La source n'est pas disponible" msgid "Source name" -msgstr "" +msgstr "Nom de la source" msgid "Source name is required" msgstr "Le nom de la source est obligatoire" @@ -56532,7 +56583,7 @@ msgid "Specify an email address regex pattern to identify default internal users msgstr "Spécifier une expression rationnelle pour les adresses électroniques afin d'identifier les utilisateurs qui sont internes par défaut." msgid "Specify the input values to use in this pipeline." -msgstr "" +msgstr "Indiquez les valeurs d'entrée à utiliser dans ce pipeline." msgid "Spent at can't be a future date and time." msgstr "L'heure et la date à partir desquelles le temps est décompté ne peuvent pas être dans le futur." @@ -56678,7 +56729,7 @@ msgid "Start merge train" msgstr "Démarrer un train de fusion" msgid "Start merge train…" -msgstr "" +msgstr "Démarrer un train de fusion…" msgid "Start review" msgstr "Lancer la révision" @@ -58167,7 +58218,7 @@ msgid "Terraform|Job status" msgstr "État du job" msgid "Terraform|Loading Terraform reports…" -msgstr "" +msgstr "Chargement des rapports Terraform…" msgid "Terraform|Lock" msgstr "Verrouiller" @@ -58529,6 +58580,9 @@ msgstr "Le jeton d'authentification." msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "L'URL de base vers l'instance Harbor liée au projet GitLab. Par exemple, « https://demo.goharbor.io »." +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "La branche de ce projet n'a pas de configuration de pipeline active." @@ -58790,7 +58844,7 @@ msgid "The invitation was successfully resent." msgstr "L'invitation a été renvoyée avec succès." msgid "The issue was successfully promoted to an epic. Redirecting to epic…" -msgstr "" +msgstr "Le ticket a bien été promu en épopée. Redirection en cours vers l'épopée…" msgid "The last owner cannot be set to awaiting" msgstr "Le dernier propriétaire ne peut pas être mis en attente" @@ -59821,10 +59875,10 @@ msgid "This is a security log of authentication events involving your account." msgstr "Ceci est un journal de sécurité des événements d'authentification impliquant votre compte." msgid "This is a username." -msgstr "" +msgstr "Il s'agit d'un nom d'utilisateur." msgid "This is an ID." -msgstr "" +msgstr "Il s'agit d'un identifiant." msgid "This is an archived project. Repository and other project resources are read-only." msgstr "Ce projet est archivé. Le dépôt et les autres ressources du projet sont en lecture seule." @@ -59839,7 +59893,7 @@ msgid "This is some information. %{linkStart}Learn more%{linkEnd}." msgstr "Voici quelques informations. %{linkStart}En savoir plus%{linkEnd}." msgid "This is something else." -msgstr "" +msgstr "Il s'agit d'autre chose." msgid "This is the highest peak of users on your installation since the license started." msgstr "Il s'agit du pic d'utilisateurs le plus élevé de votre installation depuis que la licence a démarré." @@ -59896,7 +59950,7 @@ msgid "This job does not run automatically and must be started manually, but you msgstr "Ce job ne s'exécute pas automatiquement et doit être démarré manuellement, mais vous n'y avez pas accès." msgid "This job does not start automatically and must be started manually." -msgstr "" +msgstr "Ce job ne parvient pas à démarrer automatiquement et doit être lancé manuellement." msgid "This job has been canceled" msgstr "Ce job a été annulé" @@ -60001,7 +60055,7 @@ msgid "This merge request does not have codequality reports" msgstr "Cette requête de fusion ne contient aucun rapport de qualité de code" msgid "This merge request has reached the maximum limit of %{limit} versions and cannot be updated further. Close this merge request and create a new one instead." -msgstr "" +msgstr "Cette requête de fusion a atteint la limite maximale de %{limit} versions et ne peut plus être mise à jour. Veuillez fermer celle-ci et en créer une nouvelle à la place." msgid "This merge request is closed. To apply this suggestion, edit this file directly." msgstr "Cette requête de fusion est fermée. Pour appliquer cette suggestion, modifiez ce fichier directement." @@ -61197,6 +61251,9 @@ msgstr "Lorsque des tâches sont accomplies, elles apparaissent ici." msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "Lorsque des tâches sont reportées, elles apparaissent ici." +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "Élément de travail" @@ -63140,7 +63197,7 @@ msgid "Use one line per URI" msgstr "Utilisez une ligne par URI" msgid "Use personal access token" -msgstr "" +msgstr "Utiliser un jeton d'accès personnel" msgid "Use primary email (%{email})" msgstr "Utiliser l'adresse de courriel principale (%{email})" @@ -64946,7 +65003,7 @@ msgid "Vulnerability|Comments" msgstr "Commentaires" msgid "Vulnerability|Component" -msgstr "" +msgstr "Composant" msgid "Vulnerability|Crash address:" msgstr "Adresse du plantage :" @@ -65027,7 +65084,7 @@ msgid "Vulnerability|Namespace:" msgstr "Espace de nommage :" msgid "Vulnerability|Project" -msgstr "" +msgstr "Projet" msgid "Vulnerability|Project:" msgstr "Projet :" @@ -65119,6 +65176,9 @@ msgstr "Afficher les chemins de dépendance" msgid "Vulnerability|View training" msgstr "Voir la formation" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "Classe vulnérable :" @@ -65312,10 +65372,10 @@ msgid "WebIDE|You need permission to edit files directly in this project." msgstr "Vous avez besoin d'une autorisation pour modifier des fichiers directement dans ce projet." msgid "WebIdeOAuthCallback|Close tab" -msgstr "" +msgstr "Onglet Fermer" msgid "WebIdeOAuthCallback|Unable to authorize GitLab Web IDE access. For more information, see the developer console." -msgstr "" +msgstr "Impossible d'autoriser l'accès à GitLab Web IDE. Pour plus d'informations, veuillez consulter la console du développeur." msgid "WebexTeamsService|Send notifications about project events to Webex Teams." msgstr "Envoyer des notifications sur les événements du projet vers Webex Teams." @@ -65642,7 +65702,7 @@ msgid "Weekday" msgstr "Jour de la semaine" msgid "Weekly" -msgstr "" +msgstr "Hebdomadaire" msgid "Weeks" msgstr "Semaines" @@ -66623,7 +66683,7 @@ msgid "WorkItem|Objective" msgstr "Objectif" msgid "WorkItem|One or more items cannot be shown. If you're using SAML authentication, this could mean your session has expired." -msgstr "" +msgstr "Un ou plusieurs éléments n'ont pas pu être affichés. Si vous utilisez le système d'authentification SAML, votre session a peut-être expiré." msgid "WorkItem|Only 10 items can be added at a time." msgstr "" @@ -67283,7 +67343,7 @@ msgid "Write milestone description..." msgstr "Écrire une description du jalon..." msgid "Write milestone description…" -msgstr "" +msgstr "Fournir une description du jalon…" msgid "Write your release notes or drag your files here…" msgstr "Ajoutez vos notes de la version de release ou faites glisser vos fichiers ici…" @@ -68811,7 +68871,7 @@ msgid "can't be solely blank" msgstr "ne peut pas être uniquement vide" msgid "can't be specified if a merge request was already provided" -msgstr "" +msgstr "impossible à spécifier si une requête de fusion a déjà été fournie" msgid "can't be specified if a project was already provided" msgstr "impossible à spécifier si un projet a déjà été indiqué" @@ -70837,7 +70897,7 @@ msgid "test case" msgstr "scénario de test" msgid "testing a boolean" -msgstr "" +msgstr "Test d'un booléen" msgid "the correct format." msgstr "le format correct." diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 1cf7d100cc9..b1262821ccb 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -48029,6 +48029,9 @@ msgstr "" msgid "Rate the review" msgstr "" +msgid "Rate this response %{separator} %{codeStart}%{botUser}%{codeEnd} in reply for more questions" +msgstr "" + msgid "Raw blob request rate limit per minute" msgstr "" diff --git a/locale/gl_ES/gitlab.po b/locale/gl_ES/gitlab.po index e3c73d89112..9b0505794ba 100644 --- a/locale/gl_ES/gitlab.po +++ b/locale/gl_ES/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: gl\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr " %{start} a %{end}" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/id_ID/gitlab.po b/locale/id_ID/gitlab.po index 56546d0991f..a4c467f49a0 100644 --- a/locale/id_ID/gitlab.po +++ b/locale/id_ID/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: id\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr "" @@ -1402,15 +1402,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3628,7 +3619,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4009,6 +4003,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10672,6 +10669,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15092,6 +15092,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16661,6 +16664,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24538,6 +24544,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25630,6 +25639,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -27871,6 +27886,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28429,6 +28447,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28462,6 +28483,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43526,6 +43550,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52206,6 +52233,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52535,6 +52580,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -52911,7 +52959,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53271,6 +53319,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58161,6 +58212,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -60794,6 +60848,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -64702,6 +64759,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/it/gitlab.po b/locale/it/gitlab.po index 76edb07092f..739dddf380c 100644 --- a/locale/it/gitlab.po +++ b/locale/it/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: it\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr " Dal giorno %{start} al giorno %{end}" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "%{type} \"%{name}'\" è stato ripristinato correttamente." - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type} \"%{name}\" è in fase di eliminazione." - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{type} \"%{name}\" verrà eliminato il giorno %{date}." - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,8 +3796,11 @@ msgstr "Hai domande o idee sui nuovi miglioramenti che abbiamo apportato? %{link msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "Per ulteriori informazioni sulle modifiche, consulta la nostra %{linkStart}documentazione%{linkEnd}." -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." -msgstr "Abbiamo aggiornato il report sull'aderenza con nuove funzionalità per migliorare il flusso di lavoro di conformità." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." +msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." msgstr "" @@ -4186,6 +4180,9 @@ msgstr "L'identificatore del modello deve iniziare con \"%{bedrockIdentifierPref msgid "AdminSelfHostedModels|Model uses an API token" msgstr "Il modello utilizza un token API" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "Sono disponibili altri modelli in versione beta. Puoi %{linkStart}attivare le funzionalità beta del modello in self-hosting%{linkEnd}." @@ -10882,6 +10879,9 @@ msgstr "%{count} utenti segnaposto corrispondenti agli utenti." msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count} utenti segnaposto non corrispondenti agli utenti." +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "Stai visualizzando il centro di conformità per %{project}. Per vedere l msgid "ComplianceReport|and %{count} more" msgstr "e altri %{count}" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "Esportazione del report di adesione agli standard" @@ -16881,6 +16884,9 @@ msgstr "Copia contenuto file" msgid "Copy file path" msgstr "Copia percorso file" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "Copia URL dell'immagine" @@ -24793,6 +24799,9 @@ msgstr "Impossibile caricare" msgid "Failed to load Roadmap" msgstr "Impossibile caricare la roadmap" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Impossibile caricare gli assegnatari. Riprova." @@ -25888,6 +25897,12 @@ msgstr "La funzione \"label\" può accettare al massimo 10 parametri." msgid "GCP region configured" msgstr "Regione GCP configurata" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "Timeout della vista GLQL. Aggiungi altri filtri per ridurre il numero di risultati." @@ -28135,6 +28150,9 @@ msgstr "Il gruppo \"%{group_name}\" è in fase di eliminazione." msgid "Group '%{group_name}' was successfully updated." msgstr "Il gruppo \"%{group_name}\" è stato aggiornato correttamente." +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28693,6 +28711,9 @@ msgstr "Abilita l'aggregazione in background della panoramica per la dashboard d msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "Abilita invio di notifiche via email per questo gruppo e tutti i suoi sottogruppi e progetti" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "Forza l'applicazione dei certificati SSH" @@ -28726,6 +28747,9 @@ msgstr "Il percorso del gruppo non può essere più lungo di %{length} caratteri msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "Come possono gestire i certificati SSH di un gruppo?" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "Se questa opzione è abilitata, gli account utente Enterprise non potranno utilizzare token di accesso personali. %{learn_more_link}." @@ -43839,6 +43863,9 @@ msgstr "Inserisci un nome per il modello di commento." msgid "Please enter a name for the custom emoji." msgstr "Inserisci un nome per l'emoji personalizzata." +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Inserisci un numero non negativo" @@ -52562,6 +52589,24 @@ msgstr "ad esempio: glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "ad esempio: spec/**/*.rb" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "Inventario di sicurezza" @@ -52893,6 +52938,9 @@ msgstr "Modifica progetto dei criteri" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "Modifica il criterio di esecuzione dell'analisi" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "Nome criterio vuoto" @@ -53270,8 +53318,8 @@ msgstr "L'analisi sceglierà automaticamente un runner da eseguire perché non e msgid "SecurityOrchestration|Schedule a new" msgstr "Programma nuova" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" -msgstr "Programma una pipeline su una cadenza %{cadenceSelector} per i rami" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" +msgstr "" msgid "SecurityOrchestration|Scope" msgstr "Ambito" @@ -53630,6 +53678,9 @@ msgstr "sono falsi positivi" msgid "SecurityOrchestration|are not false positives" msgstr "non sono falsi positivi" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "ramo" @@ -58529,6 +58580,9 @@ msgstr "Il token di autenticazione." msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "L'URL di base dell'istanza Harbor collegata al progetto GitLab. Ad esempio, \"https://demo.goharbor.io\"." +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "Il ramo per questo progetto non ha alcuna configurazione di pipeline attiva." @@ -61197,6 +61251,9 @@ msgstr "Al completamento, le attività da svolgere vengono visualizzate qui." msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "Quando vengono posticipate le attività da svolgere, vengono visualizzate qui." +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "Elemento di lavoro" @@ -65119,6 +65176,9 @@ msgstr "Visualizzza percorsi delle dipendenze" msgid "Vulnerability|View training" msgstr "Visualizza formazione" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "Classe vulnerabile:" diff --git a/locale/ja/gitlab.po b/locale/ja/gitlab.po index 5a6ff8a85db..40471939402 100644 --- a/locale/ja/gitlab.po +++ b/locale/ja/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: ja\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr "%{start}から%{end}まで" @@ -1402,15 +1402,6 @@ msgstr "%{total}残りイシューの重さ" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total}件の警告が見つかりました:最初の%{warningsDisplayed}を表示" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "%{type}「%{name}」が正常に復元されました。" - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type}「%{name}」を削除中です。" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{type} 「%{name}」は、%{date}に削除されます。" - msgid "%{type} must be a %{help_link}" msgstr "%{type}は%{help_link}でなければなりません" @@ -3628,7 +3619,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4009,6 +4003,9 @@ msgstr "モデル識別子は「%{bedrockIdentifierPrefix}」で始めてくだ msgid "AdminSelfHostedModels|Model uses an API token" msgstr "モデルはAPIトークンを使用します" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "Beta版ではさらに多くのモデルが利用できます。%{linkStart}セルフホストモデルのBeta版の機能を有効%{linkEnd}にできます。" @@ -10672,6 +10669,9 @@ msgstr "%{count}人のプレースホルダーユーザーがユーザーに一 msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count}人のプレースホルダーユーザーがユーザーに一致していません。" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (v%{version} が必要)" @@ -15092,6 +15092,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "さらに%{count}件以上" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "基準遵守のエクスポート" @@ -16661,6 +16664,9 @@ msgstr "ファイルの内容をコピー" msgid "Copy file path" msgstr "ファイルのパスをコピー" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "イメージのURLをコピー" @@ -24538,6 +24544,9 @@ msgstr "読み込みに失敗しました" msgid "Failed to load Roadmap" msgstr "ロードマップのロードに失敗しました" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "担当者のロードに失敗しました。もう一度やり直してください。" @@ -25630,6 +25639,12 @@ msgstr "関数「labels」は最大10個のパラメータしか取ることが msgid "GCP region configured" msgstr "GCPリージョンが設定されました" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -27871,6 +27886,9 @@ msgstr "グループ「%{group_name}」を削除中です。" msgid "Group '%{group_name}' was successfully updated." msgstr "グループ '%{group_name}' は正常に更新されました。" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "グループGit LFSの状態:" @@ -28429,6 +28447,9 @@ msgstr "バリューストリームダッシュボードの概要画面のバッ msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "このグループとそのすべてのサブグループとプロジェクトのメール通知を有効にする" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "SSH証明書の適用" @@ -28462,6 +28483,9 @@ msgstr "グループパスは%{length}文字以下で設定する必要があり msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "グループのSSH証明書はどのように管理しますか?" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43526,6 +43550,9 @@ msgstr "コメントテンプレートの名前を入力してください。" msgid "Please enter a name for the custom emoji." msgstr "カスタム絵文字の名前を入力してください。" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "負でない数値を入力してください" @@ -52206,6 +52233,24 @@ msgstr "ex:glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "ex:spec/**/*.rb" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52535,6 +52580,9 @@ msgstr "ポリシープロジェクトを編集" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "スキャン実行ポリシーの編集" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "ポリシー名の項目が空です" @@ -52911,7 +52959,7 @@ msgstr "Runnerにはタグが存在しないため、実行するRunnerが自動 msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53271,6 +53319,9 @@ msgstr "誤検出です" msgid "SecurityOrchestration|are not false positives" msgstr "誤検出ではありません" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "ブランチ" @@ -58161,6 +58212,9 @@ msgstr "認証トークン" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "GitLabプロジェクトにリンクしているHarborインスタンスのベースURL。例えば `https://demo.goharbor.io` 。" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "このプロジェクトのこのブランチにアクティブなパイプライン設定がありません。" @@ -60794,6 +60848,9 @@ msgstr "To-Doアイテムが完了になったとき、ここに表示されま msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "作業アイテム" @@ -64702,6 +64759,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "トレーニングを表示" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "脆弱クラス:" diff --git a/locale/ko/gitlab.po b/locale/ko/gitlab.po index 88500bc9347..990fc258030 100644 --- a/locale/ko/gitlab.po +++ b/locale/ko/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: ko\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:43\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr " %{start}부터 %{end}까지" @@ -1402,15 +1402,6 @@ msgstr "%{total} 남은 이슈 가중치" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total}개의 경고를 찾았습니다: 첫번째 %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "%{type} '%{name}'이 성공적으로 복원되었습니다." - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type} '%{name}'를 삭제하는 중입니다." - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{type} '%{name}'이 %{date}에 삭제됩니다." - msgid "%{type} must be a %{help_link}" msgstr "%{type} 은 %{help_link} 이어야 합니다." @@ -3538,13 +3529,13 @@ msgid "Added %{label_references} %{label_text}." msgstr "%{label_references} %{label_text} 추가됨." msgid "Added %{target} as a linked item blocked by this %{work_item_type}." -msgstr "%{target}을(를) 이 %{work_item_type}에 의해 차단된 연결된 항목으로 추가했습니다." +msgstr "%{target}을(를) 이 %{work_item_type}에 의해 차단된 항목을 링크된 항목으로 추가했습니다." msgid "Added %{target} as a linked item blocking this %{work_item_type}." -msgstr "%{target}을(를) 이 %{work_item_type}을(를) 차단하는 연결된 항목으로 추가했습니다." +msgstr "%{target}을(를) 이 %{work_item_type}을 차단하는 링크된 항목으로 추가했습니다." msgid "Added %{target} as a linked item related to this %{work_item_type}." -msgstr "%{work_item_type}과 관련된 연결 항목으로 %{target}이 추가되었습니다." +msgstr "%{work_item_type}과 관련된 링크된 항목으로 %{target}이 추가되었습니다." msgid "Added %{timeAgo} by" msgstr "%{timeAgo}에 추가함" @@ -3628,7 +3619,10 @@ msgstr "새로운 개선 사항에 대한 질문이나 의견이 있으신가요 msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "%{linkStart}문서%{linkEnd}에서 변경 사항에 대해 자세히 알아보세요." -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "이전 보고서 표시" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "규정 준수 워크플로를 개선하기 위해 새로운 기능으로 규정 준수 보고서를 업데이트했습니다." msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4009,6 +4003,9 @@ msgstr "모델 식별자는 \"%{bedrockIdentifierPrefix}\"로 시작해야 합 msgid "AdminSelfHostedModels|Model uses an API token" msgstr "모델은 API 토큰을 사용합니다." +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "베타에서 더 많은 모델을 사용할 수 있습니다. %{linkStart}자체 호스팅 모델 베타 기능을 활성화%{linkEnd}할 수 있습니다." @@ -6049,7 +6046,7 @@ msgid "AmazonQ|Apply changes to this merge request based on the comments (Beta)" msgstr "댓글에 따라 이 머지 리퀘스트에 변경 사항 적용(베타)" msgid "AmazonQ|Are you sure? Removing the ARN will disconnect Amazon Q from GitLab and all related features will stop working." -msgstr "확실한가요? ARM을 삭제하면 Amazon Q를 GitLab으로 부터 연결해제하고, 관련 기능은 더이상 동작하지 않습니다." +msgstr "확실한가요? ARN을 삭제하면 Amazon Q를 GitLab으로 부터 연결해제하고, 관련 기능은 더이상 동작하지 않습니다." msgid "AmazonQ|Audience" msgstr "오디언스" @@ -6142,10 +6139,10 @@ msgid "AmazonQ|IAM role's ARN is not valid" msgstr "IAM 역할의 ARN이 유효하지 않음" msgid "AmazonQ|IAM role's ARN is valid" -msgstr "IAM 역할의 ARM이 유효함" +msgstr "IAM 역할의 ARN이 유효함" msgid "AmazonQ|If this is what you want, remove the IAM role's ARN. To completely remove GitLab Duo with Amazon Q, update the following in AWS:" -msgstr "본인이 원하는 것이라면, IAM 역할 ARM을 삭제하십시오. Amazon Q에 연결된 GitLab Duo를 완전히 삭제하려면, AWS의 다음 사항을 업데이트 하십시오:" +msgstr "본인이 원하는 것이라면, IAM 역할 ARN을 삭제하십시오. Amazon Q에 연결된 GitLab Duo를 완전히 삭제하려면, AWS의 다음 사항을 업데이트 하십시오:" msgid "AmazonQ|Instance ID" msgstr "인스턴스 ID" @@ -6460,7 +6457,7 @@ msgid "An error occurred while fetching terraform reports." msgstr "Terraform 보고서를 가져오는 동안 오류가 발생했습니다." msgid "An error occurred while fetching the health status." -msgstr "상태를 가져오는 동안 오류가 발생했습니다." +msgstr "건강 상태를 가져오는 동안 오류가 발생했습니다." msgid "An error occurred while fetching the job log. The information presented below may not be accurate. Refresh the page to retrieve the latest job log." msgstr "작업 로그를 가져오는 동안 오류가 발생했습니다. 아래에 제시된 정보는 정확하지 않을 수 있습니다. 최신 작업 로그를 검색하려면 페이지를 새로 고치세요." @@ -6948,7 +6945,7 @@ msgid "Analytics|Invalid visualization configuration" msgstr "잘못된 시각화 구성" msgid "Analytics|Last updated: %{recordedAt}" -msgstr "" +msgstr "마지막 업데이트: %{recordedAt}" msgid "Analytics|Learn more about %{docsLinkStart}AI impact analytics%{docsLinkEnd} and %{subscriptionLinkStart}GitLab Duo seats%{subscriptionLinkEnd}." msgstr "%{docsLinkStart}AI 영향 분석%{docsLinkEnd} 및 %{subscriptionLinkStart}GitLab Duo 사용자수%{subscriptionLinkEnd}에 대해 더 자세히 알아보세요." @@ -9281,7 +9278,7 @@ msgid "BillingPlans|Support" msgstr "지원" msgid "BillingPlans|Switch to a different group." -msgstr "" +msgstr "다른 그룹으로 전환합니다." msgid "BillingPlans|Talk to an expert" msgstr "전문가와 상담하세요" @@ -10532,7 +10529,7 @@ msgid "BroadcastMessages|Ends at" msgstr "종료 시간" msgid "BroadcastMessages|Git remote responses" -msgstr "" +msgstr "Git 원격 응답" msgid "BroadcastMessages|Green" msgstr "녹색" @@ -10672,6 +10669,9 @@ msgstr "%{count} 플레이스홀더 사용자가 사용자와 일치합니다." msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count} 플레이스홀더 사용자가 사용자와 일치하지 않습니다." +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (v%{version} 필요)" @@ -11502,10 +11502,10 @@ msgid "Cannot delete a candidate associated to a model version" msgstr "" msgid "Cannot delete the default framework" -msgstr "" +msgstr "기본 프레임워크를 삭제할 수 없습니다." msgid "Cannot delete the default organization" -msgstr "" +msgstr "기본 조직을 삭제할 수 없습니다." msgid "Cannot have more than %{maximum_path_exclusions} path exclusions for secret push protection per project" msgstr "프로젝트당 비밀 푸시 방지에 대해 %{maximum_path_exclusions} 개 이상의 경로 제외를 가질 수 없습니다." @@ -11583,7 +11583,7 @@ msgid "Cannot validate connection to host because the URL is empty." msgstr "" msgid "Capacity threshold" -msgstr "" +msgstr "용량 임계값" msgid "CascadingSettings|An administrator selected this setting for the instance and you cannot change it." msgstr "운영자가 인스턴스에 대해 이 설정을 선택했으며 이를 변경할 수 없습니다." @@ -12581,7 +12581,7 @@ msgid "Clear due date" msgstr "마감일 지우기" msgid "Clear health status" -msgstr "상태 초기화" +msgstr "건강 상태 초기화" msgid "Clear recent searches" msgstr "최근 검색 지우기" @@ -12617,13 +12617,13 @@ msgid "Clear weight" msgstr "가중치 삭제" msgid "Cleared health status." -msgstr "상태가 초기화됨." +msgstr "건강 상태가 초기화됨." msgid "Cleared weight." msgstr "가중치 삭제됨." msgid "Clears health status." -msgstr "상태를 초기화." +msgstr "건강 상태를 초기화." msgid "Clears weight." msgstr "가중치 삭제." @@ -12909,7 +12909,7 @@ msgid "CloudSeed|Google Cloud project" msgstr "구글 클라우드 프로젝트" msgid "CloudSeed|Google Cloud's AI tools are armed with the best of Google's research and technology to help developers focus exclusively on solving problems that matter" -msgstr "" +msgstr "Google Cloud의 AI 도구는 Google 최고의 연구와 기술을 이용하여 개발자가 중요한 문제 해결에만 집중할 수 있도록 지원합니다." msgid "CloudSeed|I accept Google Cloud pricing and responsibilities involved with managing database instances" msgstr "데이터베이스 인스턴스 관리와 관련된 구글 클라우드 가격 정책 및 의무사항에 동의합니다." @@ -13369,7 +13369,7 @@ msgid "ClusterAgents|What is default configuration?" msgstr "기본 구성이란 무엇입니까?" msgid "ClusterAgents|You can connect to your cluster from the command line. Configure %{linkStart}kubectl%{linkEnd} command-line access by running the following command:" -msgstr "" +msgstr "명령줄에서 클러스터에 연결할 수 있습니다. 다음 명령을 실행하여 %{linkStart}kubectl%{linkEnd} 명령줄 액세스를 구성하세요." msgid "ClusterAgents|You can connect to your cluster from the command line. To use this feature, configure %{monotypeStart}user_access%{monotypeEnd} in the agent configuration project." msgstr "명령줄에서 클러스터에 연결할 수 있습니다. 이 기능을 사용하려면 에이전트 구성 프로젝트에서 %{monotypeStart}user_access%{monotypeEnd} 를 구성합니다." @@ -13516,7 +13516,7 @@ msgid "ClusterIntegration|Connect a Kubernetes cluster" msgstr "" msgid "ClusterIntegration|Connect your cluster to GitLab through %{linkStart}cluster certificates%{linkEnd}." -msgstr "" +msgstr "%{linkStart}클러스터 인증서%{linkEnd}을 통해 클러스터를 GitLab에 연결합니다." msgid "ClusterIntegration|Connection Error" msgstr "연결 오류" @@ -13555,7 +13555,7 @@ msgid "ClusterIntegration|Enter a unique name for your new GitLab Agent. This na msgstr "" msgid "ClusterIntegration|Enter details about your cluster. %{linkStart}How do I use a certificate to connect to my cluster?%{linkEnd}" -msgstr "" +msgstr "클러스터에 대한 세부 정보를 입력하십시오. %{linkStart}인증서를 사용하여 클러스터에 연결하려면 어떻게 합니까?%{linkEnd}" msgid "ClusterIntegration|Enter new Service Token" msgstr "" @@ -13801,7 +13801,7 @@ msgid "ClusterIntegration|Use GitLab to deploy to your cluster, run jobs, use re msgstr "" msgid "ClusterIntegration|Use the %{linkStart}GitLab agent%{linkEnd} to safely connect your Kubernetes clusters to GitLab. You can deploy your applications, run your pipelines, use Review Apps, and much more." -msgstr "" +msgstr "%{linkStart}GitLab 에이전트%{linkEnd} 을 사용하여 Kubernetes 클러스터를 GitLab에 안전하게 연결하십시오. 애플리케이션을 배포하고, 파이프라인을 실행하고, 앱 검토 등을 사용할 수 있습니다." msgid "ClusterIntegration|Using AutoDevOps with multiple clusters? %{help_link_start}Read this first.%{help_link_end}" msgstr "" @@ -14748,7 +14748,7 @@ msgid "ComplianceFrameworks|Compliance frameworks applied to %{projectName}" msgstr "%{projectName}에 적용된 규정 준수 프레임워크" msgid "ComplianceFrameworks|Compliance frameworks that are linked to an active policy can't be deleted" -msgstr "활성화된 정책에 연결된 규정 준수 프레임워크는 삭제할 수 없습니다." +msgstr "활성화된 정책에 링크된 규정 준수 프레임워크는 삭제할 수 없습니다." msgid "ComplianceFrameworks|Compliance frameworks that have a scoped policy can't be deleted" msgstr "범위가 지정된 정책이 있는 규정 준수 프레임워크는 삭제할 수 없습니다." @@ -14922,10 +14922,10 @@ msgid "ComplianceFrameworks|There can be only one default framework." msgstr "기본 프레임워크는 하나만 있을 수 있습니다." msgid "ComplianceFrameworks|To link this policy and framework, edit the policy's scope." -msgstr "이 정책과 프레임워크의 연결하려면 정책의 범위를 편집하세요." +msgstr "이 정책과 프레임워크의 링크하려면 정책의 범위를 편집하세요." msgid "ComplianceFrameworks|To unlink this policy and framework, edit the policy's scope." -msgstr "이 정책과 프레임워크의 연결을 해제하려면 정책의 범위를 편집하세요." +msgstr "이 정책과 프레임워크의 링크를 해제하려면 정책의 범위를 편집하세요." msgid "ComplianceFrameworks|Unable to save this compliance framework. Please try again" msgstr "이 규정 준수 프레임워크를 저장할 수 없습니다. 다시 시도하십시오" @@ -15092,6 +15092,9 @@ msgstr "%{project}의 규정준수 센터를 보고 있습니다. 모든 프로 msgid "ComplianceReport|and %{count} more" msgstr "와 추가 %{count}개" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "새 보고서 플레이스홀더" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "표준 준수 내보내기" @@ -15564,7 +15567,7 @@ msgid "ConfluenceService|Confluence Workspace" msgstr "Confluence 작업공간" msgid "ConfluenceService|Link to a Confluence Workspace from the sidebar." -msgstr "사이드바에서 Confluence Workspace로 연결합니다." +msgstr "사이드바에서 Confluence Workspace로 링크합니다." msgid "ConfluenceService|Link to a Confluence Workspace from the sidebar. Enabling this integration replaces the \"Wiki\" sidebar link with a link to the Confluence Workspace. The GitLab wiki is still available at the original URL." msgstr "사이드바에서 Confluence Workspace로 링크합니다. 이 통합을 활성화하면 \"Wiki\" 사이드바 링크가 Confluence Workspace에 대한 링크로 바뀝니다. GitLab 위키는 원래 URL로 계속 사용할 수 있습니다." @@ -15926,16 +15929,16 @@ msgid "ContainerRegistry|No container repositories are protected." msgstr "" msgid "ContainerRegistry|Not yet scheduled" -msgstr "" +msgstr "아직 예약되지 않음" msgid "ContainerRegistry|Note: Any policy update will result in a change to the scheduled run date and time" msgstr "" msgid "ContainerRegistry|Only users with at least this role can delete tags with a name that matches the protection rule." -msgstr "" +msgstr "최소한 이 역할을 가진 사용자만 보호 규칙과 일치하는 이름을 가진 태그를 삭제할 수 있습니다." msgid "ContainerRegistry|Only users with at least this role can push tags with a name that matches the protection rule." -msgstr "" +msgstr "최소한 이 역할을 보유한 사용자만 보호 규칙과 일치하는 이름을 가진 태그를 푸시할 수 있습니다." msgid "ContainerRegistry|Partial cleanup complete" msgstr "" @@ -16137,7 +16140,7 @@ msgid "ContainerRegistry|We are having trouble connecting to the Container Regis msgstr "Container Registry에 연결하는 데 문제가 있습니다. 페이지를 새로고침해 보세요. 이 오류가 지속되면 %{docLinkStart}문제 해결 문서%{docLinkEnd}을 검토하세요." msgid "ContainerRegistry|When a container image tag is protected, only certain user roles can create, update, and delete the protected tag, which helps to prevent unauthorized changes. You can add up to 5 protection rules per project." -msgstr "" +msgstr "컨테이너 이미지 태그가 보호될 때, 특정 사용자 역할만 보호된 태그를 생성, 업데이트 및 삭제할 수 있어 무단 변경을 방지하는 데 도움이 됩니다. 프로젝트당 최대 5개의 보호 규칙을 추가할 수 있습니다." msgid "ContainerRegistry|When a container repository is protected, only certain user roles can push the protected container image, which helps to avoid tampering with the container image." msgstr "" @@ -16326,10 +16329,10 @@ msgid "ContributionAnalytics|This page sources data from the %{link_start}analyt msgstr "" msgid "ContributionAnalytics|Total Contributions" -msgstr "" +msgstr "총 기여" msgid "ContributionAnalytics|Using ClickHouse" -msgstr "" +msgstr "ClickHouse 사용" msgid "ContributionEvent|Accepted merge request %{targetLink} in %{resourceParentLink}." msgstr "" @@ -16661,6 +16664,9 @@ msgstr "파일 내용 복사" msgid "Copy file path" msgstr "파일 경로 복사" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "이미지 URL 복사" @@ -16755,28 +16761,28 @@ msgid "CorpusManagement|Manage your fuzz testing corpus files" msgstr "" msgid "CorpusManagement|New corpus" -msgstr "" +msgstr "새 코퍼스" msgid "CorpusManagement|New upload" -msgstr "" +msgstr "새 업로드" msgid "CorpusManagement|Not Set" -msgstr "" +msgstr "설정되지 않음" msgid "CorpusManagement|Target" -msgstr "" +msgstr "대상" msgid "CorpusManagement|To use this corpus, edit the corresponding YAML file" -msgstr "" +msgstr "이 코퍼스를 사용하려면 해당 YAML 파일을 편집하십시오." msgid "CorpusManagement|Total Size: %{totalSize}" -msgstr "" +msgstr "총 크기: %{totalSize}" msgid "Correlation ID" msgstr "상관관계 ID" msgid "Cost Factor Settings" -msgstr "" +msgstr "비용 요소 설정" msgid "Cost factor for forks of projects" msgstr "프로젝트 포크의 비용 팩터" @@ -16869,7 +16875,7 @@ msgid "Could not find iteration" msgstr "이터레이션을 찾을 수 없음" msgid "Could not find parent group with path %{path}" -msgstr "" +msgstr "%{path} 경로를 사용하여 상위 그룹을 찾을 수 없습니다." msgid "Could not load the user chart. Please refresh the page to try again." msgstr "사용자 차트를 로드할 수 없습니다. 다시 시도하려면 페이지를 새로고침하세요." @@ -16929,10 +16935,10 @@ msgid "Couldn't find event type filters where audit event type(s): %{missing_fil msgstr "감사 이벤트 유형이 %{missing_filters}인 이벤트 유형 필터를 찾을 수 없습니다." msgid "Couldn't link %{issuables}. You must have at least the Guest role in both %{issuable}'s %{projects_or_groups}." -msgstr "%{issuables}를 연결할 수 없습니다. %{issuable}의 %{projects_or_groups} 모두에서 최소한 게스트 역할이 있어야 합니다." +msgstr "%{issuables}를 링크할 수 없습니다. %{issuable}의 %{projects_or_groups} 모두에서 최소한 게스트 역할이 있어야 합니다." msgid "Couldn't link issues. You must have at least the Guest role in both projects." -msgstr "이슈를 연결할 수 없습니다. 두 프로젝트 모두에서 최소한 게스트 역할이 있어야 합니다." +msgstr "이슈를 링크할 수 없습니다. 두 프로젝트 모두에서 최소한 게스트 역할이 있어야 합니다." msgid "Couldn't re-order due to an internal error." msgstr "내부 오류로 인해 재정렬할 수 없습니다." @@ -16947,7 +16953,7 @@ msgid "Country or region" msgstr "국가 또는 지역" msgid "Counts" -msgstr "" +msgstr "측정값" msgid "Counts reflect children you may not have access to." msgstr "카운트에는 당신이 액세스할 수 없는 하위 항목이 반영됩니다." @@ -17622,7 +17628,7 @@ msgid "Cron time zone" msgstr "Cron 시간대" msgid "Crowd" -msgstr "" +msgstr "Crowd" msgid "CsvParser|Failed to render the CSV file for the following reasons:" msgstr "" @@ -18277,7 +18283,7 @@ msgid "DSN" msgstr "DSN" msgid "Daily" -msgstr "" +msgstr "일별" msgid "Dashboard" msgstr "대시보드" @@ -18406,7 +18412,7 @@ msgid "DastProfiles|Are you sure you want to delete this profile?" msgstr "" msgid "DastProfiles|Attacks the target to find potential vulnerabilities. Active scans are potentially harmful to the site being scanned." -msgstr "" +msgstr "잠재적인 취약점을 찾기위해 대상을 공격합니다. 능동형 스캔은 스캔중인 사이트에 유해할 수 있습니다." msgid "DastProfiles|Authentication" msgstr "인증" @@ -18481,7 +18487,7 @@ msgid "DastProfiles|Crawl timeout" msgstr "크롤링 시간 초과" msgid "DastProfiles|DAST profile library" -msgstr "" +msgstr "DAST 프로필 라이브러리" msgid "DastProfiles|DOM ready timeout" msgstr "DOM 준비 시간 초과" @@ -18505,7 +18511,7 @@ msgid "DastProfiles|Disables clearing of username and password fields before att msgstr "" msgid "DastProfiles|Docker registry" -msgstr "" +msgstr "도커 레지스트리" msgid "DastProfiles|Edit DAST variable" msgstr "DAST 변수 편집" @@ -18550,7 +18556,7 @@ msgid "DastProfiles|Excluded URLs (optional)" msgstr "제외된 URL (옵션)" msgid "DastProfiles|Excluded checks" -msgstr "" +msgstr "제외된 검사" msgid "DastProfiles|Excluded elements" msgstr "제외된 요소" @@ -18574,7 +18580,7 @@ msgid "DastProfiles|First submit field" msgstr "첫 번째 제출 필드" msgid "DastProfiles|Full scan" -msgstr "" +msgstr "전체 스캔" msgid "DastProfiles|Generate authentication report" msgstr "" @@ -18610,16 +18616,16 @@ msgid "DastProfiles|Log browser output" msgstr "" msgid "DastProfiles|Log file levels" -msgstr "" +msgstr "로그 파일 수준" msgid "DastProfiles|Log file path" -msgstr "" +msgstr "로그 파일 경로" msgid "DastProfiles|Log levels" -msgstr "" +msgstr "로그 수준" msgid "DastProfiles|Log messages" -msgstr "" +msgstr "로그 메시지" msgid "DastProfiles|Manage %{profileType} profiles" msgstr "%{profileType} 프로필 관리" @@ -18673,16 +18679,16 @@ msgid "DastProfiles|No variables found" msgstr "" msgid "DastProfiles|Not Validated" -msgstr "" +msgstr "검증되지 않음" msgid "DastProfiles|Number of workers that passive scan in parallel. Defaults to the number of available CPUs." msgstr "" msgid "DastProfiles|PKCS12 certificate" -msgstr "" +msgstr "PKCS12 인증서" msgid "DastProfiles|PKCS12 password" -msgstr "" +msgstr "PKCS12 비밀번호" msgid "DastProfiles|Page ready timeout" msgstr "페이지 준비 시간 초과" @@ -18703,7 +18709,7 @@ msgid "DastProfiles|Password" msgstr "비밀번호" msgid "DastProfiles|Password field" -msgstr "" +msgstr "비밀번호 필드" msgid "DastProfiles|Password form field" msgstr "" @@ -18841,7 +18847,7 @@ msgid "DastProfiles|Submit button (optional)" msgstr "제출 버튼 (옵션)" msgid "DastProfiles|Submit field" -msgstr "" +msgstr "필드 제출" msgid "DastProfiles|Success URL" msgstr "성공 URL" @@ -18967,7 +18973,7 @@ msgid "DastProfiles|Username" msgstr "사용자명" msgid "DastProfiles|Username field" -msgstr "" +msgstr "사용자명 필드" msgid "DastProfiles|Username form field" msgstr "사용자명 양식 필드" @@ -19136,7 +19142,7 @@ msgid "DatadogIntegration|Additionally, enable CI Visibility to send pipeline in msgstr "" msgid "DatadogIntegration|CI Visibility" -msgstr "" +msgstr "CI 가시성" msgid "DatadogIntegration|Connect your GitLab projects to your Datadog account to synchronize repository metadata and enrich telemetry on your Datadog account." msgstr "" @@ -19160,7 +19166,7 @@ msgid "DatadogIntegration|Enabled" msgstr "활성화됨" msgid "DatadogIntegration|Environment" -msgstr "" +msgstr "환경" msgid "DatadogIntegration|For self-managed deployments, set the %{codeOpen}env%{codeClose} tag for all the pipeline data sent to Datadog. %{linkOpen}How do I use tags?%{linkClose}" msgstr "" @@ -19169,7 +19175,7 @@ msgid "DatadogIntegration|Full URL of your Datadog site. Only required if you do msgstr "" msgid "DatadogIntegration|Service" -msgstr "" +msgstr "서비스" msgid "DatadogIntegration|Tag all pipeline data from this GitLab instance in Datadog. Can be used when managing several self-managed deployments." msgstr "" @@ -19274,7 +19280,7 @@ msgid "Decompressed archive size validation failed." msgstr "압축 해제된 아카이브의 크기 확인에 실패했습니다." msgid "Decrease" -msgstr "" +msgstr "감소" msgid "Decrement suggestion line end" msgstr "" @@ -19845,19 +19851,19 @@ msgid "DependencyListExport|License Identifiers" msgstr "" msgid "DependencyListExport|Location" -msgstr "" +msgstr "위치" msgid "DependencyListExport|Name" -msgstr "" +msgstr "이름" msgid "DependencyListExport|Packager" -msgstr "" +msgstr "패키저" msgid "DependencyListExport|Project" msgstr "프로젝트" msgid "DependencyListExport|Version" -msgstr "" +msgstr "버전" msgid "DependencyListExport|Vulnerabilities Detected" msgstr "" @@ -20365,16 +20371,16 @@ msgid "Deployment|Created" msgstr "생성됨" msgid "Deployment|Deploy" -msgstr "" +msgstr "배포" msgid "Deployment|Deployment #%{iid}" -msgstr "" +msgstr "배포 #%{iid}" msgid "Deployment|Deployment approvals require a Premium or Ultimate subscription" msgstr "" msgid "Deployment|Failed" -msgstr "" +msgstr "실패함" msgid "Deployment|Finished %{timeago} by %{username}" msgstr "%{username} 이 %{timeago} 에 완료함" @@ -20392,7 +20398,7 @@ msgid "Deployment|Flux sync reconciling" msgstr "" msgid "Deployment|Flux sync stalled" -msgstr "" +msgstr "Flux 동기화 중단됨" msgid "Deployment|Flux sync status is unavailable" msgstr "" @@ -20510,7 +20516,7 @@ msgid "Deployment|Waiting to be deployed." msgstr "배포 대기 중입니다." msgid "Deployment|We know this page is a bit empty at the moment, but we're working hard to bring you a great experience! In the meantime, we'd love to hear your feedback." -msgstr "" +msgstr "저희는 현재 이 페이지가 부족하다는 것을 알고 있습니다. 더 나은 경험을 제공하기 위해 열심히 노력하고 있습니다! 귀하의 의견을 듣고 싶습니다." msgid "Deployment|What would you like to see here?" msgstr "" @@ -20770,10 +20776,10 @@ msgid "Designs" msgstr "디자인" msgid "Destination" -msgstr "" +msgstr "대상" msgid "Destination path" -msgstr "" +msgstr "대상 경로" msgid "Destroy" msgstr "제거" @@ -21154,7 +21160,7 @@ msgid "Dimension" msgstr "" msgid "Direct" -msgstr "" +msgstr "직접" msgid "Direct members" msgstr "다이렉트 멤버" @@ -21277,7 +21283,7 @@ msgid "Discover|See the other features of the %{linkStart}Ultimate plan%{linkEnd msgstr "" msgid "Discover|Start a free trial" -msgstr "" +msgstr "무료 평가판 시작" msgid "Discover|Upgrade now" msgstr "지금 업그레이드" @@ -21377,7 +21383,7 @@ msgid "Dockerfile" msgstr "Dockerfile" msgid "Documentation" -msgstr "" +msgstr "문서" msgid "Documentation about the \"%{name}\" feature" msgstr "" @@ -21566,7 +21572,7 @@ msgid "Drone CI URL (for example, `http://drone.example.com`)." msgstr "드론 CI URL(예: `http://drone.example.com`)." msgid "Drone CI token." -msgstr "" +msgstr "드론 CI 토큰." msgid "Drop or %{linkStart}upload%{linkEnd} an avatar." msgstr "" @@ -21923,7 +21929,7 @@ msgid "DuoProDiscover|Write secure code faster and save time with Code Suggestio msgstr "" msgid "DuoProTrial|Activate my trial" -msgstr "" +msgstr "평가판 활성화" msgid "DuoProTrial|Apply your GitLab Duo Pro trial to an existing group" msgstr "" @@ -22524,7 +22530,7 @@ msgid "Enable incident management inbound alert limit" msgstr "인시던트 관리 인바운드 경고 제한 활성화" msgid "Enable indexing" -msgstr "" +msgstr "인덱싱 활성화" msgid "Enable instance runners for all projects and subgroups in this group." msgstr "" @@ -22572,7 +22578,7 @@ msgid "Enable repository checks" msgstr "리포지토리 검사 활성화" msgid "Enable searching" -msgstr "" +msgstr "검색 활성화" msgid "Enable security training" msgstr "보안 교육 활성화" @@ -22710,16 +22716,16 @@ msgid "Enter a URL for your custom emoji" msgstr "커스텀 이모티콘 URL을 입력하세요." msgid "Enter a name" -msgstr "" +msgstr "이름 입력" msgid "Enter a name for your comment template" msgstr "당신의 댓글 템플릿을 위한 이름을 작성하세요" msgid "Enter a number" -msgstr "" +msgstr "숫자를 입력하세요" msgid "Enter a number from 0 to 100." -msgstr "" +msgstr "0~100 사이의 숫자를 입력하세요." msgid "Enter a search query to find more branches, or use * to create a wildcard." msgstr "" @@ -22737,7 +22743,7 @@ msgid "Enter any color or choose one of the suggested colors below." msgstr "" msgid "Enter any color." -msgstr "" +msgstr "아무 색상이나 입력하세요." msgid "Enter at least three characters to search" msgstr "" @@ -22755,7 +22761,7 @@ msgid "Enter epic URL" msgstr "에픽 URL을 입력" msgid "Enter group name" -msgstr "" +msgstr "그룹 이름 입력" msgid "Enter in your Bitbucket Server URL and personal access token below" msgstr "아래 Bitbucket Server URL 및 개인 액세스 토큰을 입력하십시오." @@ -23325,13 +23331,13 @@ msgid "Epics|Are you sure you want to remove %{bStart}%{targetIssueTitle}%{bEnd} msgstr "" msgid "Epics|Learn more about linking child issues and epics" -msgstr "" +msgstr "하위 이슈와 에픽을 링크하는 방법에 대해 자세히 알아보세요." msgid "Epics|Leave empty to inherit from milestone dates" msgstr "" msgid "Epics|Link child issues and epics together to show that they're related, or that one blocks another." -msgstr "" +msgstr "하위 이슈와 에픽을 함께 링크하여 서로 관련이 있거나 서로를 차단한다는 것을 보여줍니다." msgid "Epics|Remove epic" msgstr "에픽 삭제" @@ -23445,10 +23451,10 @@ msgid "Error fetching the dependency list: %{errorDetails}" msgstr "의존성 목록을 가져오는 중 오류 발생: %{errorDetails}" msgid "Error linking identity: %{errors}" -msgstr "ID 연결 오류: %{errors}" +msgstr "식별자 링크 오류: %{errors}" msgid "Error linking identity: Provider and Extern UID must be in the session." -msgstr "ID 연결 오류: 공급자와 외부 UID가 세션에 있어야 합니다." +msgstr "식별자 링크 오류: 공급자와 외부 UID가 세션에 있어야 합니다." msgid "Error loading branch data. Please try again." msgstr "브랜치 데이터를 로드하는 중 오류가 발생했습니다. 다시 시도하십시오." @@ -23649,22 +23655,22 @@ msgid "Escalate this incident" msgstr "이 인시던트 에스컬레이트하기" msgid "Escalation Policies" -msgstr "" +msgstr "에스컬레이션 정책" msgid "Escalation policies" -msgstr "" +msgstr "에스컬레이션 정책" msgid "Escalation policies may not have more than %{rule_count} rules" -msgstr "" +msgstr "에스컬레이션 정책에는 %{rule_count} 개 이상의 규칙이 있을 수 없습니다." msgid "Escalation policies must have at least one rule" -msgstr "" +msgstr "에스컬레이션 정책에는 하나 이상의 규칙이 있어야 합니다." msgid "Escalation policy" -msgstr "" +msgstr "에스컬레이션 정책" msgid "Escalation policy:" -msgstr "" +msgstr "에스컬레이션 정책:" msgid "EscalationPolicies|%{clockIcon} IF alert is not %{alertStatus} in %{minutes}" msgstr "" @@ -23691,7 +23697,7 @@ msgid "EscalationPolicies|Add escalation policy" msgstr "" msgid "EscalationPolicies|Add policy" -msgstr "" +msgstr "정책 추가" msgid "EscalationPolicies|Are you sure you want to delete the \"%{escalationPolicy}\" escalation policy? This action cannot be undone." msgstr "정말로 \"%{escalationPolicy}\" 에스컬레이션 정책을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다." @@ -23718,10 +23724,10 @@ msgid "EscalationPolicies|Email on-call user in schedule" msgstr "" msgid "EscalationPolicies|Email user" -msgstr "" +msgstr "이메일 사용자" msgid "EscalationPolicies|Escalation policies" -msgstr "" +msgstr "에스컬레이션 정책" msgid "EscalationPolicies|Escalation policy %{obstacle} in project %{project}" msgstr "" @@ -23730,7 +23736,7 @@ msgid "EscalationPolicies|Escalation policy successfully created" msgstr "" msgid "EscalationPolicies|Escalation rules" -msgstr "" +msgstr "에스컬레이션 규칙" msgid "EscalationPolicies|Failed to load oncall-schedules" msgstr "" @@ -23754,7 +23760,7 @@ msgid "EscalationPolicies|Search for user" msgstr "" msgid "EscalationPolicies|Select schedule" -msgstr "" +msgstr "일정 선택" msgid "EscalationPolicies|THEN %{doAction} %{scheduleOrUser}" msgstr "THEN %{doAction} %{scheduleOrUser}" @@ -23784,10 +23790,10 @@ msgid "EscalationStatus|Triggered" msgstr "트리거됨" msgid "Escape" -msgstr "" +msgstr "에스케이프" msgid "Estimate" -msgstr "" +msgstr "추정" msgid "Estimated" msgstr "예상" @@ -23799,7 +23805,7 @@ msgid "Event '%{event}' of type '%{event_type}' must not start with '%{prefix}'" msgstr "'%{event_type}' 유형의 이벤트 '%{event}'은 '%{prefix}'로 시작할 수 없습니다" msgid "Event tag (optional)" -msgstr "" +msgstr "이벤트 태그 (옵션)" msgid "Event type '%{type}' is not yet supported" msgstr "" @@ -23898,7 +23904,7 @@ msgid "Every 3 months" msgstr "3개월마다" msgid "Every 3 months on the %{day} at %{time} %{timezone}" -msgstr "" +msgstr "매 3개월마다 %{day} %{time} %{timezone}" msgid "Every 6 months" msgstr "6개월마다" @@ -24162,10 +24168,10 @@ msgid "Expiring soon" msgstr "" msgid "Explain current vulnerability." -msgstr "" +msgstr "현재 취약점을 설명하세요." msgid "Explain why you're reporting the user." -msgstr "" +msgstr "사용자를 신고하는 이유를 설명하세요." msgid "Explicitly subscribed" msgstr "" @@ -24195,37 +24201,37 @@ msgid "Explore topics" msgstr "주제 둘러보기" msgid "Export" -msgstr "" +msgstr "내보내기" msgid "Export %{requirementsCount} requirements?" -msgstr "" +msgstr "%{requirementsCount} 요구 사항을 내보내시겠습니까?" msgid "Export as CSV" msgstr "CSV로 내보내기" msgid "Export as a JSON file" -msgstr "" +msgstr "JSON 파일로 내보내기" msgid "Export group" -msgstr "" +msgstr "그룹 내보내기" msgid "Export issues" -msgstr "" +msgstr "이슈 내보내기" msgid "Export merge requests" msgstr "머지 리퀘스트 내보내기" msgid "Export project" -msgstr "" +msgstr "프로젝트 내보내기" msgid "Export requirements" -msgstr "" +msgstr "요구 사항 내보내기" msgid "Export seat usage history" msgstr "좌석 사용 내역 내보내기" msgid "Export this group with all related data." -msgstr "" +msgstr "이 그룹과 모든 관련 데이터를 함께 내보냅니다." msgid "Export this project with all its related data in order to move it to a new GitLab instance. When the exported file is ready, you can download it from this page or from the download link in the email notification you will receive. You can then import it when creating a new project. %{link_start}Learn more.%{link_end}" msgstr "" @@ -24345,7 +24351,7 @@ msgid "ExternalWikiService|External wiki URL" msgstr "외부 wiki의 URL" msgid "ExternalWikiService|Link to an external wiki from the sidebar." -msgstr "" +msgstr "사이드바에서 외부 wiki로 링크합니다." msgid "ExternalWikiService|URL of the external wiki." msgstr "" @@ -24538,6 +24544,9 @@ msgstr "불러오기 실패" msgid "Failed to load Roadmap" msgstr "로드맵 불러오기 실패" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "담당자 로드 실패. 다시 시도하세요." @@ -25630,6 +25639,12 @@ msgstr "`labels` 함수는 최대 10개의 매개변수를 가질 수 있습니 msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -26731,7 +26746,7 @@ msgid "GithubImporter|Issue %{issue_iid} attachment" msgstr "이슈 %{issue_iid} 첨부파일" msgid "GithubImporter|Issue attachments" -msgstr "" +msgstr "이슈 첨부파일" msgid "GithubImporter|Merge request %{merge_request_iid} attachment" msgstr "" @@ -27632,7 +27647,7 @@ msgid "GoogleCloud|Example: %{code_open}314053285323%{code_close}" msgstr "" msgid "GoogleCloud|Generated service account is linked to the selected branch or tag" -msgstr "" +msgstr "생성된 서비스 계정이 선택한 브랜치 또는 태그에 링크되어 있습니다." msgid "GoogleCloud|GitLab group ID %{groupId}" msgstr "GitLab 그룹 ID %{groupId}" @@ -27871,6 +27886,9 @@ msgstr "'%{group_name}' 그룹을 삭제하는 중입니다." msgid "Group '%{group_name}' was successfully updated." msgstr "그룹 '%{group_name}'이(가) 성공적으로 업데이트되었습니다." +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "그룹 Git LFS 상태:" @@ -28429,6 +28447,9 @@ msgstr "가치 흐름 대시보드에 대한 개요 백그라운드 집계 활 msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28462,6 +28483,9 @@ msgstr "그룹 경로는 %{length} 자를 초과할 수 없습니다." msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "그룹 SSH 인증서를 어떻게 관리하나요?" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -29062,7 +29086,7 @@ msgid "Health check" msgstr "상태 확인" msgid "Health status" -msgstr "상태" +msgstr "건강 상태" msgid "HealthCheck|Access token" msgstr "액세스 토큰" @@ -29852,7 +29876,7 @@ msgid "If you don't renew by %{strong}%{downgrades_on}%{strong_close} your insta msgstr "" msgid "If you get a lot of false alarms from repository checks, you can clear all repository check information from the database." -msgstr "" +msgstr "리포지토리 검사에서 잘못된 알람이 많이 발생하면 데이터베이스에서 모든 리포지토리 검사 정보를 지울 수 있습니다." msgid "If you lose your recovery codes you can generate new ones, invalidating all previous codes." msgstr "복구 코드를 분실한 경우 새 코드를 생성하여 이전 코드를 모두 무효화할 수 있습니다." @@ -32362,7 +32386,7 @@ msgid "JiraConnect|Failed to create branch. Please try again." msgstr "브랜치 생성 실패. 다시 시도해 주세요." msgid "JiraConnect|Failed to link group. Please try again." -msgstr "" +msgstr "그룹을 링크하지 못했습니다. 다시 시도해 주세요." msgid "JiraConnect|Failed to load Jira Connect Application ID. Please try again." msgstr "" @@ -32377,7 +32401,7 @@ msgid "JiraConnect|Failed to sign in to GitLab." msgstr "" msgid "JiraConnect|Failed to unlink group. Please try again." -msgstr "" +msgstr "그룹 링크 해제하지 못했습니다. 다시 시도해 주세요." msgid "JiraConnect|Failed to update the GitLab instance. See the %{linkStart}troubleshooting documentation%{linkEnd}." msgstr "" @@ -32398,7 +32422,7 @@ msgid "JiraConnect|Group successfully linked" msgstr "그룹이 성공적으로 링크됨" msgid "JiraConnect|Groups are the GitLab groups and subgroups you link to this Jira instance." -msgstr "그룹은 이 Jira 인스턴스에 연결하는 GitLab 그룹 및 하위 그룹입니다." +msgstr "그룹은 이 Jira 인스턴스에 링크하는 GitLab 그룹 및 하위 그룹입니다." msgid "JiraConnect|Jira Connect Additional Audience URL" msgstr "Jira Connect Additional Audience URL" @@ -32452,7 +32476,7 @@ msgid "JiraConnect|Sign in to GitLab to get started." msgstr "" msgid "JiraConnect|Sign in to GitLab to link groups." -msgstr "" +msgstr "그룹을 링크하려면 GitLab에 로그인하세요." msgid "JiraConnect|Sign in to link groups" msgstr "" @@ -32548,7 +32572,7 @@ msgid "JiraRequest|The credentials for accessing Jira are not valid. Check your msgstr "" msgid "JiraRequest|Unable to connect to the Jira URL. Please verify your %{config_link_start}Jira integration URL%{config_link_end} and attempt the connection again." -msgstr "" +msgstr "Jira URL에 연결할 수 없습니다. %{config_link_start}Jira 통합 URL%{config_link_end} 을 확인하고 연결을 다시 시도하세요." msgid "JiraService| on branch %{branch_link}" msgstr "브랜치 %{branch_link}" @@ -33541,7 +33565,7 @@ msgid "KubernetesLogs|Namespace" msgstr "네임스페이스" msgid "KubernetesLogs|No logs available for container %{containerName} of pod %{podName}" -msgstr "" +msgstr "포드 %{podName}의 컨테이너 %{containerName}에 사용 가능한 로그가 없습니다." msgid "KubernetesLogs|No logs available for pod %{podName}" msgstr "포드 %{podName}에 사용 가능한 로그가 없습니다" @@ -33940,13 +33964,13 @@ msgid "Learn more about issues." msgstr "이슈에 대해 자세히 알아보세요." msgid "Learn more about linking epics" -msgstr "" +msgstr "에픽 링크에 대해 자세히 알아보기" msgid "Learn more about linking issues" msgstr "" msgid "Learn more about linking issues and incidents" -msgstr "" +msgstr "이슈 및 인시던트 링크에 대해 자세히 알아보기" msgid "Learn more about max seats used" msgstr "사용 최대 좌석에 대해 자세히 알아보기" @@ -34302,19 +34326,19 @@ msgid "Link" msgstr "링크" msgid "Link %{issuableType}s together to show that they're related or that one is blocking others." -msgstr "" +msgstr "서로 관련이 있거나 다른 사람을 차단하고 있음을 보여주기 위해 %{issuableType}을 함께 링크합니다." msgid "Link %{issuableType}s together to show that they're related." -msgstr "" +msgstr "서로 관계되어 있음을 보여주기 위해 %{issuableType}을 함께 링크합니다." msgid "Link (optional)" msgstr "링크 (옵션)" msgid "Link Sentry to GitLab to discover and view the errors your application generates." -msgstr "Sentry를 GitLab에 연결하여 애플리케이션이 생성하는 오류를 발견하고 확인합니다." +msgstr "Sentry를 GitLab에 링크하여 애플리케이션이 생성하는 오류를 발견하고 확인합니다." msgid "Link an external wiki from the project's sidebar." -msgstr "" +msgstr "프로젝트 사이드바에서 외부 위키를 링크합니다." msgid "Link copied to clipboard." msgstr "링크가 클립보드에 복사되었습니다." @@ -34326,7 +34350,7 @@ msgid "Link items blocked by this item" msgstr "이 항목에 의해 차단된 항목 링크" msgid "Link items blocking this item" -msgstr "이 항목을 차단하는 링크 아이템" +msgstr "이 항목을 차단하는 아이템들에 링크" msgid "Link items related to this item" msgstr "이 항목에 관련된 링크 아이템" @@ -34344,7 +34368,7 @@ msgid "Link to go to GitLab pipeline documentation" msgstr "" msgid "Link to your Grafana instance." -msgstr "Grafana 인스턴스로 연결합니다." +msgstr "Grafana 인스턴스로 링크합니다." msgid "Linked epics" msgstr "" @@ -34392,7 +34416,7 @@ msgid "LinkedResources|Something went wrong while creating the resource link for msgstr "" msgid "LinkedResources|Something went wrong while deleting the linked resource for the incident." -msgstr "" +msgstr "인시던트에 대한 연결된 리소스를 삭제하는 동안 문제가 발생했습니다." msgid "LinkedResources|Something went wrong while fetching linked resources for the incident." msgstr "" @@ -34671,7 +34695,7 @@ msgid "Make sure you choose a strong, unique password." msgstr "" msgid "Make sure you have the correct permissions to link your project." -msgstr "" +msgstr "프로젝트를 링크할 수 있는 올바른 권한이 있는지 확인하세요." msgid "Make sure you save it - you won't be able to access it again." msgstr "" @@ -34791,7 +34815,7 @@ msgid "ManualVariables|When you %{helpPageUrlStart}run a pipeline manually%{help msgstr "" msgid "Manually link this issue by adding it to the linked issue section of the %{linkStart}originating vulnerability%{linkEnd}." -msgstr "" +msgstr "이 이슈를 %{linkStart}발생 취약점%{linkEnd}의 연결된 이슈 섹션에 추가하여 수동으로 링크합니다." msgid "Map a FogBugz account ID to a GitLab user" msgstr "" @@ -36857,7 +36881,7 @@ msgid "MlExperimentTracking|Run %{id}" msgstr "실행 %{id}" msgid "MlExperimentTracking|Run not linked to a CI build" -msgstr "" +msgstr "실행이 CI 빌드에 링크되지 않았습니다" msgid "MlExperimentTracking|Run removed" msgstr "실행 제거됨" @@ -37051,7 +37075,7 @@ msgid "MlModelRegistry|Failed to load model version with error: %{message}" msgstr "오류로 인해 모델 버전을 로딩에 실패하였습니다: %{message}" msgid "MlModelRegistry|Failed to load model versions with error: %{message}" -msgstr "" +msgstr "오류로 인해 모델 버전을 로드하지 못함: %{message}" msgid "MlModelRegistry|Failed to load model with error: %{message}" msgstr "오류로 인해 모델을 로드하지 못함: %{message}" @@ -43526,6 +43550,9 @@ msgstr "댓글 템플릿의 이름을 입력하세요." msgid "Please enter a name for the custom emoji." msgstr "커스텀 이모티콘의 이름을 입력하세요." +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -44530,7 +44557,7 @@ msgid "ProfileSession|on" msgstr "on" msgid "Profiles| You are about to permanently delete %{yourAccount}, and all of the issues, merge requests, and groups linked to your account. Once you confirm %{deleteAccount}, it cannot be undone or recovered." -msgstr "%{yourAccount}를 영구적으로 삭제하려고 합니다. 이슈, 머지 리퀘스트(MR), 그리고 내 계정에 연결된 그룹가 삭제될것입니다. %{deleteAccount}을 확인하면 되돌리거나, 취소할 수 없습니다." +msgstr "%{yourAccount}를 영구적으로 삭제하려고 합니다. 이슈, 머지 리퀘스트(MR), 그리고 내 계정에 링크된 그룹가 삭제될것입니다. %{deleteAccount}을 확인하면 되돌리거나, 취소할 수 없습니다." msgid "Profiles| You are about to permanently delete %{yourAccount}, and all of the issues, merge requests, and groups linked to your account. Once you confirm %{deleteAccount}, it cannot be undone or recovered. You might have to wait seven days before creating a new account with the same username or email." msgstr "귀하의 %{yourAccount} 계정과 계정에 링크된 모든 이슈, 머지 리퀘스트와 그룹을 영구적으로 삭제하려고 합니다. %{deleteAccount} 확인하면 취소하거나 복구할 수 없습니다. 동일한 사용자명 혹은 이메일로 새 계정을 만들려면 7일을 기다려야 할 수 있습니다." @@ -45847,7 +45874,7 @@ msgid "ProjectSettings|Global" msgstr "" msgid "ProjectSettings|Grant access to the CI/CD configurations for projects linked to this security policy project as the source for security policies." -msgstr "" +msgstr "이 보안 정책 프로젝트에 링크된 프로젝트의 CI/CD 구성에 대한 액세스 권한을 보안 정책의 소스로 부여합니다." msgid "ProjectSettings|Highlight the usage of hidden unicode characters. These have innocent uses for right-to-left languages, but can also be used in potential exploits." msgstr "" @@ -45865,7 +45892,7 @@ msgid "ProjectSettings|If enabled, project access tokens expiry webhooks execute msgstr "활성화된 경우, 프로젝트 액세스 토큰 만료 웹훅은 토큰이 만료되기 60일, 30일, 7일 전에 실행됩니다. 비활성화된 경우, 이러한 웹훅은 토큰이 만료되기 7일 전에만 실행됩니다. %{linkStart}자세히 알아보기%{linkEnd}" msgid "ProjectSettings|If merge trains are enabled, merging is only possible if the branch can be rebased without conflicts." -msgstr "" +msgstr "머지 트레인이 활성화된 경우, 충돌 없이 브랜치를 리베이스 할 수 있는 경우에만 머지가 가능합니다." msgid "ProjectSettings|Include diff previews" msgstr "diff 미리보기 포함" @@ -48938,7 +48965,7 @@ msgid "Request time" msgstr "요청 시간" msgid "Request to link SAML account must be authorized" -msgstr "SAML 계정 연결 요청이 승인되어야 합니다." +msgstr "SAML 계정에 링크 요청이 승인되어야 합니다." msgid "Requested" msgstr "요청됨" @@ -49534,7 +49561,7 @@ msgid "Runners|A periodic background task deletes runners that haven't contacted msgstr "정기적인 백그라운드 작업은 %{elapsedTime}이상 GitLab에 접속하지 않은 러너를 삭제합니다. 이 그룹에 등록된 러너만 삭제됩니다. 하위 그룹 및 프로젝트의 러너는 그렇지 않습니다. %{linkStart}얼마나 많은 러너가 삭제되는지 볼 수 있습니까?%{linkEnd}" msgid "Runners|A runner configuration is where you configure runners based on your requirements. Each runner in this table represents a %{linkStart}single runner entry%{linkEnd} in the %{codeStart}config.toml%{codeEnd}. Multiple runners can be linked to the same configuration. When there are multiple runners in a configuration, the one that contacted GitLab most recently displays here." -msgstr "" +msgstr "러너 구성은 요구 사항에 따라 러너를 구성하는 곳입니다. 이 테이블의 각 러너는 %{linkStart}config.toml%{linkEnd}에서 %{codeStart}단일 러너 항목%{codeEnd}을 나타냅니다. 동일한 구성에 여러 러너를 연결할 수 있습니다. 구성에 여러 러너가 있는 경우 가장 최근에 GitLab에 연결한 러너가 여기에 표시됩니다." msgid "Runners|Active" msgstr "활성" @@ -50353,7 +50380,7 @@ msgid "Runners|Tags control which type of jobs a runner can handle. By tagging a msgstr "" msgid "Runners|The %{boldStart}runner authentication token%{boldEnd} %{token} displays here %{boldStart}for a short time only%{boldEnd}. After you register the runner, this token is stored in the %{codeStart}config.toml%{codeEnd} and cannot be accessed again from the UI." -msgstr "" +msgstr "%{boldStart}러너 인증 토큰%{boldEnd} %{token} 은 %{boldStart}짧은 시간 동안만%{boldEnd} 여기에 보입니다. 러너를 등록한 다음, 이 토큰은 %{codeStart}config.toml%{codeEnd}에 보관하고 UI로 접근할 수 없습니다." msgid "Runners|The %{boldStart}runner authentication token%{boldEnd} is no longer visible, it is stored in the %{codeStart}config.toml%{codeEnd} if you have registered the runner." msgstr "" @@ -51881,7 +51908,7 @@ msgid "Security Finding not found" msgstr "보안 문제 검출을 찾을 수 없음" msgid "Security Policy project already exists, but is not linked." -msgstr "" +msgstr "보안 정책 프로젝트가 이미 존재하지만 링크되어 있지 않습니다." msgid "Security Policy project already exists." msgstr "" @@ -52071,7 +52098,7 @@ msgid "SecurityConfiguration|Vulnerability details and statistics in the merge r msgstr "" msgid "SecurityDescription|The linked group refers to the groups that are linked to security policy projects. Security policy projects store your organization's security policies. They are identified when policies are created, or when a project is linked as a security policy project. %{linkStart}Learn more%{linkEnd}." -msgstr "" +msgstr "링크된 그룹은 보안 정책 프로젝트에 연결된 그룹을 말합니다. 보안 정책 프로젝트는 조직의 보안 정책을 저장합니다. 정책이 생성되거나 프로젝트가 보안 정책 프로젝트로 연결될 때 식별됩니다. %{linkStart}자세히 알아보기%{linkEnd}." msgid "SecurityExclusions|Add Exclusion" msgstr "" @@ -52206,6 +52233,24 @@ msgstr "예: glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "예: spec/**/*.rb" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "보안 인벤토리" @@ -52341,7 +52386,7 @@ msgid "SecurityOrchestration|After this merge request is merged, go to [%{framew msgstr "" msgid "SecurityOrchestration|All projects in linked groups" -msgstr "" +msgstr "링크된 그룹의 모든 프로젝트" msgid "SecurityOrchestration|All projects in the group." msgstr "" @@ -52350,10 +52395,10 @@ msgid "SecurityOrchestration|All projects in this group except:" msgstr "" msgid "SecurityOrchestration|All projects linked to security policy project." -msgstr "" +msgstr "보안 정책 프로젝트에 링크된 모든 프로젝트." msgid "SecurityOrchestration|All projects linked to this project except:" -msgstr "" +msgstr "다음을 제외하고 이 프로젝트에 링크된 모든 프로젝트:" msgid "SecurityOrchestration|All scanners" msgstr "모든 스캐너" @@ -52392,7 +52437,7 @@ msgid "SecurityOrchestration|Apply this policy to %{projectScopeType}named %{fra msgstr "%{frameworkSelector}라는 이름의 %{projectScopeType}에 이 정책을 적용합니다." msgid "SecurityOrchestration|Apply this policy to current project." -msgstr "" +msgstr "이 정책을 현재 프로젝트에 적용합니다." msgid "SecurityOrchestration|Are you sure you want to delete this policy? This action cannot be undone." msgstr "이 정책을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다." @@ -52401,10 +52446,10 @@ msgid "SecurityOrchestration|At least one framework label should be selected" msgstr "프레임워크 라벨을 하나 이상 선택해야 합니다." msgid "SecurityOrchestration|Automate %{strongStart}vulnerability management%{strongEnd} workflows." -msgstr "" +msgstr "%{strongStart}취약성 관리%{strongEnd} 워크플로를 자동화합니다." msgid "SecurityOrchestration|Automatically selected runners" -msgstr "" +msgstr "자동으로 선택된 러너" msgid "SecurityOrchestration|Branch types don't match any existing branches." msgstr "브랜치 유형이 기존 브랜치와 일치하지 않습니다." @@ -52413,22 +52458,22 @@ msgid "SecurityOrchestration|Branch: %{boldStart}%{branchName}%{boldEnd} was not msgstr "브랜치: %{boldStart}%{branchName}%{boldEnd}를 %{boldStart}%{projectName}%{boldEnd}프로젝트에서 찾을 수 없습니다. 이 항목을 편집하거나 제거하십시오." msgid "SecurityOrchestration|CI/CD template edition to be enforced. The default template is stable, but may not have all the features of the latest template." -msgstr "" +msgstr "CI/CD 템플릿 버전이 적용됩니다. 기본 템플릿은 안정적이지만 최신 템플릿의 모든 기능을 갖추고 있지 않을 수 있습니다." msgid "SecurityOrchestration|CI/CD template edition to be enforced. The latest edition may introduce breaking changes." -msgstr "" +msgstr "CI/CD 템플릿 버전이 적용됩니다. 최신 버전에는 주요 변경 사항이 적용될 수 있습니다." msgid "SecurityOrchestration|Cadence is invalid" msgstr "케이던스가 유효하지 않습니다." msgid "SecurityOrchestration|Can't find project: %{boldStart}%{projectName}%{boldEnd}. Edit or remove this entry." -msgstr "" +msgstr "프로젝트를 찾을 수 없습니다: %{boldStart}%{projectName}%{boldEnd}. 이 항목을 편집하거나 제거하십시오." msgid "SecurityOrchestration|Cannot create an empty policy" -msgstr "" +msgstr "빈 정책을 생성할 수 없습니다." msgid "SecurityOrchestration|Choose a project" -msgstr "" +msgstr "프로젝트 선택" msgid "SecurityOrchestration|Choose an action" msgstr "작업 선택" @@ -52437,22 +52482,22 @@ msgid "SecurityOrchestration|Choose approver type" msgstr "승인자 유형 선택" msgid "SecurityOrchestration|Choose exception branches" -msgstr "" +msgstr "예외 브랜치 선택" msgid "SecurityOrchestration|Choose specific role" -msgstr "" +msgstr "특정 역할 선택" msgid "SecurityOrchestration|Clear all" -msgstr "" +msgstr "모두 지우기" msgid "SecurityOrchestration|Compliance framework has no projects" -msgstr "" +msgstr "규정 준수 프레임워크에 프로젝트가 없습니다." msgid "SecurityOrchestration|Compliance pipeline migration to pipeline execution policy" -msgstr "" +msgstr "파이프라인 실행 정책으로의 규정 준수 파이프라인 마이그레이션" msgid "SecurityOrchestration|Configuration" -msgstr "" +msgstr "구성" msgid "SecurityOrchestration|Configure policies to control whether individual users or service accounts can use %{linkStart}skip_ci%{linkEnd} to skip pipelines." msgstr "" @@ -52500,10 +52545,10 @@ msgid "SecurityOrchestration|Delete policy: %{policy}" msgstr "정책 삭제: %{policy}" msgid "SecurityOrchestration|Denied licenses" -msgstr "" +msgstr "거부된 라이선스" msgid "SecurityOrchestration|Denylist details" -msgstr "" +msgstr "거부 리스트 상세정보" msgid "SecurityOrchestration|Description" msgstr "설명" @@ -52512,13 +52557,13 @@ msgid "SecurityOrchestration|Details" msgstr "상세정보" msgid "SecurityOrchestration|Direct" -msgstr "" +msgstr "직접" msgid "SecurityOrchestration|Don't show the alert anymore" -msgstr "" +msgstr "더 이상 이 경고 표시 안 함" msgid "SecurityOrchestration|Edge case settings" -msgstr "" +msgstr "에지 케이스 설정" msgid "SecurityOrchestration|Edit merge request approval policy" msgstr "" @@ -52535,6 +52580,9 @@ msgstr "정책 프로젝트 편집" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "스캔 실행 정책 편집" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "정책 이름 비워짐" @@ -52548,7 +52596,7 @@ msgid "SecurityOrchestration|Enforce %{linkStart}security policies%{linkEnd} for msgstr "" msgid "SecurityOrchestration|Enforce policy on all groups, subgroups, and projects linked to the security policy project. %{linkStart}How does scoping work?%{linkEnd}" -msgstr "" +msgstr "보안 정책 프로젝트에 링크된 모든 그룹, 하위 그룹 및 프로젝트에 정책을 시행합니다. %{linkStart}범위 지정은 어떻게 작동하나요?%{linkEnd}" msgid "SecurityOrchestration|Enforce the following pipeline execution policy:" msgstr "" @@ -52557,19 +52605,19 @@ msgid "SecurityOrchestration|Every time a pipeline runs for %{branches}%{branchE msgstr "" msgid "SecurityOrchestration|Except" -msgstr "" +msgstr "예외" msgid "SecurityOrchestration|Except for following users:" -msgstr "" +msgstr "다음 사용자를 제외:" msgid "SecurityOrchestration|Exception branches" -msgstr "" +msgstr "예외 브랜치" msgid "SecurityOrchestration|Exceptions" msgstr "예외" msgid "SecurityOrchestration|Excluded projects" -msgstr "" +msgstr "제외된 프로젝트" msgid "SecurityOrchestration|Failed to fetch the scope information. Please refresh the page to try again." msgstr "범위 정보를 가져오지 못했습니다. 다시 시도하려면 페이지를 새로고침하세요." @@ -52596,7 +52644,7 @@ msgid "SecurityOrchestration|Fallback behavior in case of policy failure" msgstr "정책 실패 시 대체(Fallback) 동작" msgid "SecurityOrchestration|Fetching" -msgstr "" +msgstr "가져오는 중" msgid "SecurityOrchestration|Fetching the scope information." msgstr "범위 정보를 가져오는 중입니다." @@ -52617,19 +52665,19 @@ msgid "SecurityOrchestration|Group ID: %{id}" msgstr "그룹 ID: %{id}" msgid "SecurityOrchestration|Group cannot be deleted because it has projects that are linked as a security policy project" -msgstr "보안 정책 프로젝트로 연결된 프로젝트가 있으므로 그룹을 삭제할 수 없습니다." +msgstr "보안 정책 프로젝트로 링크된 프로젝트가 있으므로 그룹을 삭제할 수 없습니다." msgid "SecurityOrchestration|Groups" msgstr "그룹" msgid "SecurityOrchestration|Hide extra items" -msgstr "" +msgstr "추가 항목 숨기기" msgid "SecurityOrchestration|Hide extra projects" -msgstr "" +msgstr "추가 프로젝트 숨기기" msgid "SecurityOrchestration|How do I link a group to the policy?" -msgstr "" +msgstr "그룹을 정책에 링크하려면 어떻게 해야 하나요?" msgid "SecurityOrchestration|If %{scanners} of the default branch finds %{severity_level} vulnerabilities are no longer detected." msgstr "" @@ -52674,10 +52722,10 @@ msgid "SecurityOrchestration|Latest scan run against %{agent}" msgstr "" msgid "SecurityOrchestration|License Scan" -msgstr "" +msgstr "라이센스 스캔" msgid "SecurityOrchestration|Linked groups" -msgstr "" +msgstr "링크된 그룹" msgid "SecurityOrchestration|List branches in the format %{boldStart}branch-name@group-name/project-name,%{boldEnd} separated by a comma (,)." msgstr "%{boldStart}branch-name@group-name/project-name,%{boldEnd} 형식으로 브랜치들을 쉼표(,)로 구분하여 나열합니다." @@ -52689,7 +52737,7 @@ msgid "SecurityOrchestration|Maximum action limit for scan execution policies wi msgstr "스캔 실행 정책에 대한 최대 작업 제한이 18.0에서 활성화됩니다." msgid "SecurityOrchestration|Merge request approval" -msgstr "" +msgstr "머지 리퀘스트 승인" msgid "SecurityOrchestration|Merge request approval policies allow a maximum 1 bot message action." msgstr "머지 리퀘스트 승인 정책은 최대 1개의 봇 메시지 동작을 허용합니다." @@ -52740,7 +52788,7 @@ msgid "SecurityOrchestration|No linked groups" msgstr "링크된 그룹 없음" msgid "SecurityOrchestration|No policies found" -msgstr "" +msgstr "정책을 찾을 수 없음" msgid "SecurityOrchestration|No policies in the security policy project will be enforced until the invalid policies are fixed." msgstr "" @@ -52752,7 +52800,7 @@ msgid "SecurityOrchestration|No scope" msgstr "범위 없음" msgid "SecurityOrchestration|No tags available" -msgstr "" +msgstr "사용 가능한 태그 없음" msgid "SecurityOrchestration|Non-existing DAST profiles have been detected in the policy yaml. As a result, rule mode has been disabled. To enable rule mode, remove those non-existing profiles from the policy yaml." msgstr "" @@ -52761,14 +52809,14 @@ msgid "SecurityOrchestration|Non-existing tags have been detected in the policy msgstr "" msgid "SecurityOrchestration|Not enabled" -msgstr "" +msgstr "활성화 되지 않음" msgid "SecurityOrchestration|On conflict" -msgstr "" +msgstr "충돌 시" msgid "SecurityOrchestration|On runners with tag:" msgid_plural "SecurityOrchestration|On runners with the tags:" -msgstr[0] "" +msgstr[0] "태그가 있는 러너:" msgid "SecurityOrchestration|Only custom roles with the permission to approve merge requests are shown" msgstr "" @@ -52849,7 +52897,7 @@ msgid "SecurityOrchestration|Prevent users from skipping pipelines" msgstr "사용자가 파이프라인을 건너뛰지 못하도록 방지" msgid "SecurityOrchestration|Project cannot be deleted because it is linked as a security policy project" -msgstr "" +msgstr "프로젝트가 보안 정책 프로젝트로 링크되어 있어 삭제할 수 없습니다." msgid "SecurityOrchestration|Require %{approvals} %{plural} from %{approvers}" msgstr "%{approvers}의 %{approvals} %{plural}가 요구됨" @@ -52867,7 +52915,7 @@ msgid "SecurityOrchestration|Resolve the following vulnerabilities that are no l msgstr "" msgid "SecurityOrchestration|Resolved" -msgstr "" +msgstr "해결됨" msgid "SecurityOrchestration|Roles" msgstr "역할" @@ -52909,22 +52957,22 @@ msgid "SecurityOrchestration|Scan will automatically choose a runner to run on b msgstr "" msgid "SecurityOrchestration|Schedule a new" -msgstr "" +msgstr "새로 예약하기" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" -msgstr "분기에 대한 %{cadenceSelector} 케이던스로 파이프라인을 예약합니다." +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" +msgstr "" msgid "SecurityOrchestration|Scope" msgstr "범위" msgid "SecurityOrchestration|Security Approvals" -msgstr "" +msgstr "보안 승인" msgid "SecurityOrchestration|Security Scan" -msgstr "" +msgstr "보안 스캔" msgid "SecurityOrchestration|Security job template" -msgstr "" +msgstr "보안 작업 템플릿" msgid "SecurityOrchestration|Security policy overwrites this setting" msgstr "" @@ -52933,10 +52981,10 @@ msgid "SecurityOrchestration|Security policy project was linked successfully" msgstr "" msgid "SecurityOrchestration|Security policy project will be unlinked soon" -msgstr "" +msgstr "보안 정책 프로젝트가 곧 링크 해제됩니다" msgid "SecurityOrchestration|Security policy projects store your organization's security policies. They are identified when policies are created, or when a project is linked as a security policy project. %{linkStart}Learn more%{linkEnd}." -msgstr "" +msgstr "보안 정책 프로젝트는 조직의 보안 정책을 저장합니다. 정책이 생성될 때 또는 프로젝트가 보안 정책 프로젝트로 링크될 때 식별됩니다. %{linkStart}자세히 알아보기%{linkEnd}." msgid "SecurityOrchestration|SecurityOrchestration|Scan execution policies with more than %{maxCount} actions detected. Those policies will not work after GitLab 18.0 (May 15, 2025). Before then you must edit these policies to reduce the number of actions." msgstr "%{maxCount} 개 이상의 동작이 감지된 검사 실행 정책. 해당 정책은 GitLab 18.0(2025년 5월 15일) 이후에는 작동하지 않습니다. 그 전에는 이러한 정책을 편집하여 동작 수를 줄여야 합니다." @@ -52957,13 +53005,13 @@ msgid "SecurityOrchestration|Select security policy project" msgstr "보안 정책 프로젝트 선택" msgid "SecurityOrchestration|Select suffix" -msgstr "" +msgstr "접미사 선택" msgid "SecurityOrchestration|Send a bot message when the conditions match." msgstr "" msgid "SecurityOrchestration|Send bot message" -msgstr "" +msgstr "봇 메시지 보내기" msgid "SecurityOrchestration|Several merge request approval policy criteria have been deprecated. Policies using these criteria will not work after GitLab 18.0 (May 10, 2025). You must edit these policies to replace or remove the deprecated criteria." msgstr "" @@ -52975,10 +53023,10 @@ msgid "SecurityOrchestration|Show all included projects" msgstr "" msgid "SecurityOrchestration|Show more projects" -msgstr "" +msgstr "더 많은 프로젝트 표시" msgid "SecurityOrchestration|Show only linked security policy projects" -msgstr "" +msgstr "링크된 보안 정책 프로젝트만 표시" msgid "SecurityOrchestration|Some settings may be affected by policy %{policyName} based on its rules." msgstr "" @@ -52996,16 +53044,16 @@ msgid "SecurityOrchestration|Sorry, your filter produced no results." msgstr "" msgid "SecurityOrchestration|Source" -msgstr "" +msgstr "원본" msgid "SecurityOrchestration|Standard roles" -msgstr "" +msgstr "표준 역할" msgid "SecurityOrchestration|Status" msgstr "상태" msgid "SecurityOrchestration|Summary" -msgstr "" +msgstr "요약" msgid "SecurityOrchestration|Summary of syntax changes:" msgstr "" @@ -53041,7 +53089,7 @@ msgid "SecurityOrchestration|This %{namespaceType} does not contain any security msgstr "이 %{namespaceType} 에는 보안 정책이 포함되어 있지 않습니다." msgid "SecurityOrchestration|This %{namespaceType} is not linked to a security policy project. Either link it to an existing project or create a new policy, which will create a new project that you can use as a security policy project. For help, see %{linkStart}policies%{linkEnd}." -msgstr "" +msgstr "이 %{namespaceType}은 보안 정책 프로젝트에 링크되어 있지 않습니다. 기존 프로젝트에 링크하거나 새 정책을 만들어 보안 정책 프로젝트로 사용할 수 있는 새 프로젝트를 만드세요. 도움말은 %{linkStart}정책%{linkEnd}을 참조하세요." msgid "SecurityOrchestration|This applies to following compliance frameworks:" msgstr "" @@ -53068,7 +53116,7 @@ msgid "SecurityOrchestration|This policy is applied to current project." msgstr "" msgid "SecurityOrchestration|This policy is inherited" -msgstr "" +msgstr "이 정책은 상속된 것입니다." msgid "SecurityOrchestration|This policy is inherited from %{linkStart}namespace%{linkEnd} and must be edited there" msgstr "이 정책은 %{linkStart}네임스페이스%{linkEnd}에서 상속되었으며 해당 위치에서 편집해야 합니다." @@ -53077,13 +53125,13 @@ msgid "SecurityOrchestration|This policy is inherited from %{namespace}" msgstr "이 정책은 %{namespace}에서 상속됩니다." msgid "SecurityOrchestration|This project" -msgstr "" +msgstr "이 프로젝트" msgid "SecurityOrchestration|This view only shows scan results for the agent %{agent}. You can view scan results for all agents in the %{linkStart}Operational Vulnerabilities tab of the vulnerability report%{linkEnd}." msgstr "이 보기에는 %{agent} 에이전트에 대한 검색 결과만 표시됩니다. 취약성 보고서 %{linkEnd}의 %{linkStart}운영 취약성 탭에서 모든 에이전트에 대한 검색 결과를 볼 수 있습니다." msgid "SecurityOrchestration|Timezone is invalid" -msgstr "" +msgstr "시간대가 잘못되었습니다." msgid "SecurityOrchestration|To widen your search, change filters above or select a different security policy project." msgstr "" @@ -53092,16 +53140,16 @@ msgid "SecurityOrchestration|Turn off default mode to edit scope." msgstr "범위를 편집하려면 기본 모드를 끄세요." msgid "SecurityOrchestration|Unlink project" -msgstr "프로젝트 연결 해제" +msgstr "프로젝트 링크 해제" msgid "SecurityOrchestration|Unlink the following projects from the following containers:" -msgstr "" +msgstr "다음 컨테이너에서 다음 프로젝트의 링크 해제합니다." msgid "SecurityOrchestration|Unlink the project from the following containers:" -msgstr "" +msgstr "다음 컨테이너로 부터 프로젝트 링크 해제:" msgid "SecurityOrchestration|Unlinking a security project removes all policies stored in the linked security project. Save to confirm this action." -msgstr "보안 프로젝트의 연결을 해제하면 링크된 보안 프로젝트에 저장된 모든 정책이 제거됩니다. 이 동작을 확인하려면 저장하십시오." +msgstr "보안 프로젝트의 링크를 해제하면 링크된 보안 프로젝트에 저장된 모든 정책이 제거됩니다. 이 동작을 확인하려면 저장하십시오." msgid "SecurityOrchestration|Update scan policies" msgstr "스캔 정책 업데이트" @@ -53134,7 +53182,7 @@ msgid "SecurityOrchestration|Validating branch names, which might take a while." msgstr "" msgid "SecurityOrchestration|View policy project" -msgstr "" +msgstr "정책 프로젝트 보기" msgid "SecurityOrchestration|Vulnerabilities %{vulnerabilityStates}." msgstr "" @@ -53167,7 +53215,7 @@ msgid "SecurityOrchestration|What does an example message look like?" msgstr "" msgid "SecurityOrchestration|What is linked group?" -msgstr "" +msgstr "링크된 그룹이란 무엇인가요?" msgid "SecurityOrchestration|When %{scanners} %{vulnerabilitiesAllowed} %{vulnerability} in an open merge request %{targeting}%{branches}%{branchExceptionsString}%{criteriaApply}" msgstr "" @@ -53188,10 +53236,10 @@ msgid "SecurityOrchestration|With the following customized CI variables:" msgstr "다음 커스터마이징된 CI 변수:" msgid "SecurityOrchestration|YAML" -msgstr "" +msgstr "YAML" msgid "SecurityOrchestration|Yaml" -msgstr "" +msgstr "Yaml" msgid "SecurityOrchestration|You already have the maximum %{maximumAllowed} %{policyType} %{instance}." msgstr "" @@ -53245,7 +53293,7 @@ msgid "SecurityOrchestration|all namespaces" msgstr "모든 네임스페이스" msgid "SecurityOrchestration|all projects in the linked groups" -msgstr "연결된 그룹의 모든 프로젝트" +msgstr "링크된 그룹의 모든 프로젝트" msgid "SecurityOrchestration|all projects in this group" msgstr "이 그룹의 모든 프로젝트" @@ -53271,6 +53319,9 @@ msgstr "거짓 양성 (false positive)" msgid "SecurityOrchestration|are not false positives" msgstr "거짓 양성이 아닙니다." +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "브랜치" @@ -53311,34 +53362,34 @@ msgid "SecurityOrchestration|have no fix available" msgstr "" msgid "SecurityOrchestration|latest" -msgstr "" +msgstr "최신" msgid "SecurityOrchestration|more than %{allowed}" -msgstr "" +msgstr "%{allowed} 이상" msgid "SecurityOrchestration|projects with compliance frameworks" msgstr "규정 준수 프레임워크를 사용하는 프로젝트" msgid "SecurityOrchestration|scanner finds" -msgstr "" +msgstr "스캐너 검색" msgid "SecurityOrchestration|scanners find" -msgstr "" +msgstr "스캐너 검색" msgid "SecurityOrchestration|specific projects" -msgstr "" +msgstr "특정 프로젝트" msgid "SecurityOrchestration|targeting %{branchTypeText}" msgstr "" msgid "SecurityOrchestration|the %{branches}" -msgstr "" +msgstr "이 %{branches}" msgid "SecurityOrchestration|the %{branches} and %{lastBranch} branches" -msgstr "" +msgstr "%{branches} 와 %{lastBranch} 브랜치" msgid "SecurityOrchestration|the %{branches} branch" -msgstr "" +msgstr "%{branches} 브랜치" msgid "SecurityOrchestration|the %{namespaces} and %{lastNamespace} namespaces" msgstr "%{namespaces} 및 %{lastNamespace} 네임스페이스" @@ -53347,7 +53398,7 @@ msgid "SecurityOrchestration|the %{namespaces} namespace" msgstr "%{namespaces} 네임스페이스" msgid "SecurityOrchestration|the default branch" -msgstr "" +msgstr "기본 브랜치" msgid "SecurityOrchestration|type: scan_result_policy is replaced with %{linkStart}type: approval_policy%{linkEnd}" msgstr "" @@ -53368,10 +53419,10 @@ msgid "SecurityReports|%{count} Selected" msgstr "" msgid "SecurityReports|%{count}+" -msgstr "" +msgstr "%{count}+" msgid "SecurityReports|%{count}+ projects" -msgstr "" +msgstr "%{count}+ 프로젝트" msgid "SecurityReports|%{firstProject} and %{secondProject}" msgstr "" @@ -53590,7 +53641,7 @@ msgid "SecurityReports|GitLab Duo (AI)" msgstr "GitLab Duo (AI)" msgid "SecurityReports|Go to policies" -msgstr "" +msgstr "정책으로 이동" msgid "SecurityReports|Group your vulnerabilities by one of the provided categories. Leave feedback or suggestions in %{feedbackIssueStart}this issue%{feedbackIssueEnd}." msgstr "" @@ -53659,10 +53710,10 @@ msgid "SecurityReports|Monitor vulnerabilities in your project" msgstr "" msgid "SecurityReports|Monitored projects" -msgstr "" +msgstr "모니터링되는 프로젝트" msgid "SecurityReports|New feature: Grouping" -msgstr "" +msgstr "새 기능: 그룹화" msgid "SecurityReports|New status must be different than current status." msgstr "" @@ -53671,10 +53722,10 @@ msgid "SecurityReports|No identifiers found." msgstr "식별자를 찾을 수 없음." msgid "SecurityReports|No longer detected" -msgstr "" +msgstr "더 이상 탐지되지 않음" msgid "SecurityReports|No vulnerabilities to report" -msgstr "" +msgstr "보고할 취약점이 없습니다" msgid "SecurityReports|Oops, something doesn't seem right." msgstr "" @@ -53707,16 +53758,16 @@ msgid "SecurityReports|Report has expired" msgstr "" msgid "SecurityReports|Report type" -msgstr "" +msgstr "리포트 유형" msgid "SecurityReports|Results show vulnerability findings from the latest successful %{helpPageLinkStart}pipeline%{helpPageLinkEnd}." msgstr "결과에서는 최신 성공한 %{helpPageLinkStart}파이프라인%{helpPageLinkEnd}의 취약점 검출 내용을 보여줍니다." msgid "SecurityReports|Scan details" -msgstr "" +msgstr "스캔 세부 정보" msgid "SecurityReports|Scanner" -msgstr "" +msgstr "스캐너" msgid "SecurityReports|Security dashboard" msgstr "보안 대시보드" @@ -53822,13 +53873,13 @@ msgid "SecurityReports|This selection is required." msgstr "" msgid "SecurityReports|To automatically resolve vulnerabilities when they are no longer detected by automated scanning, use the new auto-resolve option in your vulnerability management policies. From the %{boldStart}Policies%{boldEnd} page, configure a policy by applying the %{boldStart}Auto-resolve%{boldEnd} option and make sure the policy is linked to the appropriate projects. You can also configure the policy to auto-resolve only the vulnerabilities of a specific severity or from specific security scanners. See the %{linkStart}release post%{linkEnd} for details." -msgstr "" +msgstr "자동 스캐닝에서 더 이상 감지되지 않는 취약성을 자동으로 해결하려면 취약성 관리 정책에서 새로운 자동 해결 옵션을 사용하세요. %{boldStart}정책%{boldEnd} 페이지에서 %{boldStart}자동 해결%{boldEnd} 옵션을 적용하여 정책을 구성하고 정책이 적절한 프로젝트에 링크되어 있는지 확인하세요. 특정 심각도의 취약성이나 특정 보안 스캐너의 취약성만 자동으로 해결하도록 정책을 구성할 수도 있습니다. 자세한 내용은 %{linkStart}릴리스 게시%{linkEnd}를 참조하세요." msgid "SecurityReports|To widen your search, change or remove filters above" msgstr "" msgid "SecurityReports|Tool" -msgstr "" +msgstr "도구" msgid "SecurityReports|Unable to add %{invalidProjectsMessage}: %{errorMessage}" msgstr "" @@ -53879,31 +53930,31 @@ msgid "SecurityTxt|When present, this will be publicly available at %{codeOpen}h msgstr "" msgid "See example DevOps Score page in our documentation." -msgstr "" +msgstr "문서에서 DevOps Score 페이지의 예제를 참조하십시오." msgid "See examples." -msgstr "" +msgstr "예제 보기." msgid "See how it works" -msgstr "" +msgstr "작동 방식 살펴보기" msgid "See our website for help" -msgstr "" +msgstr "도움이 필요하면 웹 사이트 참조하세요." msgid "See the Geo troubleshooting documentation to learn more: %{docs_url}" -msgstr "" +msgstr "자세한 내용은 Geo 문제 해결 문서를 참조하세요. %{docs_url}" msgid "See the affected projects in the GitLab admin panel" -msgstr "" +msgstr "GitLab 관리 패널에서 영향을 받는 프로젝트 보기" msgid "See usage statistics" -msgstr "" +msgstr "사용 통계 보기" msgid "See vulnerability %{vulnerability_link} for any Remediation details." msgstr "모든 조치에 대한 세부 정보는 취약성 %{vulnerability_link} 참조" msgid "See vulnerability %{vulnerability_link} for any Solution details." -msgstr "" +msgstr "취약성 솔루션 세부 정보는 %{vulnerability_link} 참조" msgid "Select" msgstr "선택" @@ -53915,13 +53966,13 @@ msgid "Select Iteration" msgstr "이터레이션 선택" msgid "Select Profile" -msgstr "" +msgstr "프로필 선택" msgid "Select a LDAP group" -msgstr "" +msgstr "LDAP 그룹 선택" msgid "Select a branch" -msgstr "" +msgstr "브랜치 선택" msgid "Select a branch to compare" msgstr "비교할 브랜치 선택" @@ -53933,25 +53984,25 @@ msgid "Select a color" msgstr "색상 선택" msgid "Select a color from the color picker or from the presets below." -msgstr "" +msgstr "색상 선택기 또는 아래 사전 설정에서 색상을 선택합니다." msgid "Select a comment template" -msgstr "" +msgstr "댓글 템플릿 선택" msgid "Select a country or region" -msgstr "" +msgstr "국가 또는 지역을 선택" msgid "Select a file from the left sidebar to begin editing. Afterwards, you'll be able to commit your changes." -msgstr "" +msgstr "편집을 시작하려면 왼쪽 사이드바에서 파일을 선택합니다. 그런 다음 변경 사항을 커밋할 수 있습니다." msgid "Select a group" -msgstr "" +msgstr "그룹 선택" msgid "Select a label" msgstr "라벨 선택" msgid "Select a merge moment" -msgstr "" +msgstr "머지 모멘트 선택" msgid "Select a milestone" msgstr "마일스톤 선택" @@ -53966,19 +54017,19 @@ msgid "Select a repository containing templates for common files." msgstr "공통 파일에 대한 템플릿이 들어 있는 리포지토리를 선택하십시오." msgid "Select a role" -msgstr "" +msgstr "역할 선택" msgid "Select a template repository" msgstr "리포지토리 템플릿 선택" msgid "Select action" -msgstr "" +msgstr "동작 선택" msgid "Select all" msgstr "모두 선택" msgid "Select all vulnerabilities on current page" -msgstr "" +msgstr "현재 페이지의 모든 취약점을 선택하세요" msgid "Select an assignee" msgstr "담당자 선택" @@ -53987,10 +54038,10 @@ msgid "Select an iteration" msgstr "이터레이션 선택" msgid "Select an option" -msgstr "" +msgstr "옵션 선택" msgid "Select artifacts" -msgstr "" +msgstr "아티팩트 선택" msgid "Select assignee" msgstr "담당자 선택" @@ -53999,16 +54050,16 @@ msgid "Select assignees" msgstr "담당자 선택" msgid "Select branch" -msgstr "" +msgstr "브랜치 선택" msgid "Select branch or create wildcard" -msgstr "" +msgstr "브랜치 선택 또는 와일드카드 생성" msgid "Select branches" -msgstr "" +msgstr "브랜치 선택" msgid "Select color" -msgstr "" +msgstr "색 선택" msgid "Select confidentiality" msgstr "공개 수준 선택" @@ -54017,25 +54068,25 @@ msgid "Select default branch" msgstr "기본 브랜치 선택" msgid "Select due date" -msgstr "" +msgstr "기한 선택" msgid "Select environment or create wildcard" -msgstr "" +msgstr "환경 선택 또는 와일드카드 생성" msgid "Select epic" -msgstr "" +msgstr "에픽 선택" msgid "Select group" -msgstr "" +msgstr "그룹 선택" msgid "Select group or project" -msgstr "" +msgstr "그룹 또는 프로젝트 선택" msgid "Select groups" -msgstr "" +msgstr "그룹 선택" msgid "Select health status" -msgstr "" +msgstr "건강 상태 선택" msgid "Select iteration" msgstr "이터레이션 선택" @@ -54050,13 +54101,13 @@ msgid "Select labels (optional)" msgstr "라벨 선택 (옵션)" msgid "Select merge moment" -msgstr "" +msgstr "머지 모멘트 선택" msgid "Select milestone" msgstr "마일스톤 선택" msgid "Select private project" -msgstr "" +msgstr "개인 프로젝트 선택" msgid "Select project" msgstr "프로젝트 선택" @@ -54068,10 +54119,10 @@ msgid "Select projects" msgstr "프로젝트 선택" msgid "Select protected branch" -msgstr "" +msgstr "보호된 브랜치 선택" msgid "Select protected branches" -msgstr "" +msgstr "보호된 브랜치 선택" msgid "Select report" msgstr "보고서 선택" @@ -54083,10 +54134,10 @@ msgid "Select reviewers" msgstr "리뷰어 선택하기" msgid "Select severity (optional)" -msgstr "" +msgstr "심각도 선택 (옵션)" msgid "Select source" -msgstr "" +msgstr "소스 선택" msgid "Select source branch" msgstr "소스 브랜치 선택" @@ -54095,49 +54146,49 @@ msgid "Select source project" msgstr "소스 프로젝트 선택" msgid "Select start date" -msgstr "" +msgstr "시작 날짜 선택" msgid "Select status" -msgstr "" +msgstr "상태 선택" msgid "Select strategy activation method" msgstr "전략 활성화 방법 선택" msgid "Select subgroup" -msgstr "" +msgstr "하위그룹 선택" msgid "Select subscription" -msgstr "" +msgstr "구독 선택" msgid "Select tags" -msgstr "" +msgstr "태그 선택" msgid "Select target branch" msgstr "대상 브랜치 선택" msgid "Select target branch or tag" -msgstr "" +msgstr "대상 브랜치 또는 태그 선택" msgid "Select target project" msgstr "대상 프로젝트 선택" msgid "Select timezone" -msgstr "" +msgstr "시간대 선택" msgid "Select type" -msgstr "" +msgstr "유형 선택" msgid "Select vulnerability" msgstr "취약점 선택" msgid "Selected" -msgstr "" +msgstr "선택됨" msgid "Selected commits" -msgstr "" +msgstr "선택한 커밋" msgid "Selected database" -msgstr "" +msgstr "선택된 데이터베이스" msgid "Selected for all items." msgstr "" @@ -54149,7 +54200,7 @@ msgid "Selected tag is already in use. Choose another option." msgstr "" msgid "Selecting a GitLab user will add a link to the GitLab user in the descriptions of issues and comments (e.g. \"By %{link_open}@johnsmith%{link_close}\"). It will also associate and/or assign these issues and comments with the selected user." -msgstr "" +msgstr "GitLab 사용자를 선택하면 이슈 및 댓글에 GitLab 사용자에 대한 링크가 추가됩니다(예: \"By %{link_open}@johnsmith%{link_close}\"). 동시에 선택된 사용자와 이슈와 댓글을 연결하거나 할당합니다." msgid "Self hosted AI Gateway URL is not set. It can be changed in the Gitlab Duo configuration." msgstr "자체 호스팅 AI 게이트웨이 URL이 설정되지 않았습니다. Gitlab Duo 구성에서 변경할 수 있습니다." @@ -54617,10 +54668,10 @@ msgid "Set due date" msgstr "" msgid "Set health status" -msgstr "" +msgstr "건강 상태 설정" msgid "Set health status to %{health_status}." -msgstr "" +msgstr "건강 상태를 %{health_status}으로 설정합니다." msgid "Set iteration" msgstr "이터레이션 설정" @@ -54821,7 +54872,7 @@ msgid "Sets checkin reminder frequency to %{frequency}." msgstr "" msgid "Sets health status to %{health_status}." -msgstr "" +msgstr "건강 상태를 %{health_status}으로 설정합니다." msgid "Sets target branch to %{branch_name}." msgstr "" @@ -55105,7 +55156,7 @@ msgid "Sidebar|%{name}: %{value}" msgstr "" msgid "Sidebar|Health status" -msgstr "" +msgstr "건강 상태" msgid "Sidebar|No status" msgstr "" @@ -55114,7 +55165,7 @@ msgid "Sidebar|None" msgstr "없음" msgid "Sidebar|Select health status" -msgstr "" +msgstr "건강 상태 선택" msgid "Sidekiq job compression threshold (bytes)" msgstr "" @@ -55300,7 +55351,7 @@ msgid "SlackIntegration|Access request canceled" msgstr "액세스 요청이 취소되었습니다" msgid "SlackIntegration|Are you sure you want to unlink this Slack Workspace from this integration?" -msgstr "Slack Workspace를 이 통합에서 연결 해제하시겠습니까?" +msgstr "Slack Workspace를 이 통합에서 링크 해제하시겠습니까?" msgid "SlackIntegration|Client ID" msgstr "" @@ -55366,7 +55417,7 @@ msgid "SlackIntegration|See the list of available commands in Slack after settin msgstr "" msgid "SlackIntegration|Select a GitLab project to link with your Slack workspace." -msgstr "" +msgstr "Slack 작업 공간과 링크할 GitLab 프로젝트를 선택합니다." msgid "SlackIntegration|Sends notifications about project events to Slack channels." msgstr "" @@ -55786,7 +55837,7 @@ msgid "Something went wrong while setting %{issuableType} confidentiality." msgstr "%{issuableType} 공개수준을 설정하는 동안 문제가 발생했습니다." msgid "Something went wrong while setting %{issuableType} health status." -msgstr "" +msgstr "건강 상태를 %{issuableType} 으로 설정하는 동안 문제가 발생했습니다." msgid "Something went wrong while setting %{issuableType} notifications." msgstr "" @@ -56348,7 +56399,7 @@ msgid "Started escalation for this incident." msgstr "인시던트 에스컬레이션을 시작했습니다." msgid "Starting with GitLab 17.7, OpenSSL 3 will be used. All TLS connections require TLS 1.2 or higher. Weaker ciphers are no longer supported. Encryption must have at least of 112 bits of security. %{link_start}Learn more%{link_end}." -msgstr "" +msgstr "GitLab 17.7부터 OpenSSL 3이 사용됩니다. 모든 TLS 연결에는 TLS 1.2 이상이 필요합니다. 더 약한 암호는 더 이상 지원되지 않습니다. 암호화에는 최소 112비트의 보안이 있어야 합니다. %{link_start}자세히 알아보기%{link_end}." msgid "Starting..." msgstr "시작하는 중…" @@ -56555,7 +56606,7 @@ msgid "StatusPage|Bucket %{docsLink}" msgstr "" msgid "StatusPage|Configure file storage settings to link issues in this project to an external status page." -msgstr "이 프로젝트의 이슈를 외부 상태 페이지에 연결하도록 파일 스토리지 설정을 구성합니다." +msgstr "이 프로젝트의 이슈를 외부 상태 페이지에 링크하도록 파일 스토리지 설정을 구성합니다." msgid "StatusPage|S3 Bucket name" msgstr "" @@ -56984,7 +57035,7 @@ msgid "Successfully deleted WebAuthn device." msgstr "성공적으로 WebAuthn 장치를 제거했습니다." msgid "Successfully linked ID(s): %{item_ids}." -msgstr "" +msgstr "성공적으로 링크된 ID: %{item_ids}." msgid "Successfully regenerated unique domain" msgstr "" @@ -57230,7 +57281,7 @@ msgid "SuperSonics|Subscription details" msgstr "" msgid "SuperSonics|Subscription details did not synchronize due to a possible connectivity issue with GitLab servers. %{connectivityHelpLinkStart}How do I check connectivity%{connectivityHelpLinkEnd}?" -msgstr "" +msgstr "GitLab 서버와의 가능한 연결 문제로 인해 구독 세부 정보가 동기화되지 않았습니다. %{connectivityHelpLinkStart}연결 확인 방법 %{connectivityHelpLinkEnd}" msgid "SuperSonics|Subscription unavailable" msgstr "" @@ -57251,7 +57302,7 @@ msgid "SuperSonics|There is a connectivity issue" msgstr "" msgid "SuperSonics|To activate your subscription, your instance needs to connect to GitLab. %{learnMoreLinkStart}Learn more%{learnMoreLinkEnd}." -msgstr "" +msgstr "구독을 활성화하려면 인스턴스가 GitLab에 연결되어야 합니다. %{learnMoreLinkStart}자세히 알아보기%{learnMoreLinkEnd}." msgid "SuperSonics|You can %{purchaseSubscriptionLinkStart}purchase a new subscription%{purchaseSubscriptionLinkEnd} and try again. If you need further assistance, please %{supportLinkStart}contact GitLab Support%{supportLinkEnd}." msgstr "" @@ -58159,6 +58210,9 @@ msgid "The authentication token." msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." +msgstr "GitLab 프로젝트에 연결된 Harbor 인스턴스의 기본 URL입니다. 예를 들면 `https://demo.goharbor.io`입니다." + +msgid "The blob is too large to render" msgstr "" msgid "The branch for this project has no active pipeline configuration." @@ -59136,7 +59190,7 @@ msgid "This %{issuable} is locked. Only %{strong_open}project members%{strong_cl msgstr "" msgid "This %{issuable} would exceed the maximum number of linked %{issuables} (%{limit})." -msgstr "" +msgstr "이 %{issuable} 링크된 %{issuables}의 최대 값(%{limit})을 초과합니다." msgid "This %{noteableTypeText} is %{confidentialLinkStart}confidential%{confidentialLinkEnd} and its %{lockedLinkStart}discussion is locked%{lockedLinkEnd}." msgstr "이 %{noteableTypeText} 은 %{confidentialLinkStart}비공개 %{confidentialLinkEnd} 이며 %{lockedLinkStart}는 토론이 잠겨 있습니다%{lockedLinkEnd}." @@ -59370,13 +59424,13 @@ msgid "This group can be restored until %{date}. %{linkStart}Learn more%{linkEnd msgstr "" msgid "This group can't be deleted because it is linked to a subscription. To delete this group, %{linkStart}link the subscription%{linkEnd} with a different group." -msgstr "이 그룹은 구독에 연결되어 있기 때문에 삭제할 수 없습니다. 이 그룹을 삭제하려면, 다른 그룹과 %{linkStart}구독을 연결하세요.%{linkEnd}" +msgstr "이 그룹은 구독에 링크되어 있기 때문에 삭제할 수 없습니다. 이 그룹을 삭제하려면, 다른 그룹과 %{linkStart}구독을 링크하세요.%{linkEnd}" msgid "This group can't be removed because it is linked to a subscription. To remove this group, %{linkStart}link the subscription%{linkEnd} with a different group." -msgstr "" +msgstr "이 그룹은 구독에 링크되어 있으므로 제거할 수 없습니다. 이 그룹을 제거하려면 다른 그룹과 %{linkStart}구독을 링크%{linkEnd}하십시오." msgid "This group can't be transferred because it is linked to a subscription. To transfer this group, %{linkStart}link the subscription%{linkEnd} with a different group." -msgstr "" +msgstr "이 그룹은 구독에 링크되어 있으므로 이전할 수 없습니다. 이 그룹을 이전하려면 다른 그룹과 %{linkStart}구독을 링크%{linkEnd}하십시오." msgid "This group cannot be invited to a project inside a group with enforced SSO" msgstr "" @@ -59397,7 +59451,7 @@ msgid "This group has no projects yet" msgstr "이 그룹에는 아직 프로젝트가 없습니다." msgid "This group is linked to a subscription" -msgstr "" +msgstr "이 그룹은 구독에 링크되어 있습니다." msgid "This group is not permitted to create compliance violations" msgstr "" @@ -60379,7 +60433,7 @@ msgid "To learn more about this project, read %{link_to_wiki}" msgstr "" msgid "To manage seats for all members associated with this group and its subgroups and projects, visit the %{link_start}usage quotas page%{link_end}." -msgstr "이 그룹 및 해당 하위 그룹 및 프로젝트와 연결된 모든 구성원의 좌석을 관리하려면 %{link_start}사용 할당량 페이지%{link_end}를 방문하십시오." +msgstr "이 그룹 및 해당 하위 그룹 및 프로젝트와 연관된 모든 구성원의 좌석을 관리하려면 %{link_start}사용 할당량 페이지%{link_end}를 방문하십시오." msgid "To merge, either the title or description must reference a Jira issue." msgstr "" @@ -60794,6 +60848,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "위키 페이지" + msgid "Todos|Work item" msgstr "작업 항목" @@ -61657,7 +61714,7 @@ msgid "URL of the Confluence Workspace hosted on `atlassian.net`." msgstr "" msgid "URL of the Grafana instance to link to from the Metrics Dashboard menu item." -msgstr "측정항목 대시보드 메뉴 항목에서 연결할 Grafana 인스턴스의 URL" +msgstr "측정항목 대시보드 메뉴 항목에서 링크할 Grafana 인스턴스의 URL" msgid "URL of the Jenkins server." msgstr "" @@ -61939,7 +61996,7 @@ msgid "Units|ms" msgstr "ms" msgid "Units|s" -msgstr "" +msgstr "s" msgid "Units|sec" msgstr "초" @@ -64418,7 +64475,7 @@ msgid "VulnerabilityManagement|Something went wrong while trying to save the com msgstr "댓글을 저장하는 동안 오류가 발생했습니다. 나중에 다시 시도하십시오." msgid "VulnerabilityManagement|Something went wrong while trying to unlink the issue. Please try again later." -msgstr "이슈의 연결을 해제하는 동안 오류가 발생했습니다. 나중에 다시 시도하십시오." +msgstr "이슈의 링크를 해제하는 동안 오류가 발생했습니다. 나중에 다시 시도하십시오." msgid "VulnerabilityManagement|Something went wrong, could not get user." msgstr "문제가 발생했습니다. 사용자를 가져올 수 없습니다." @@ -64702,6 +64759,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "교육 보기" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" @@ -65542,7 +65602,7 @@ msgid "WikiPage|Title" msgstr "제목" msgid "WikiPage|To link to a (new) page, simply type %{linkExample}. More examples are in the %{linkStart}documentation%{linkEnd}." -msgstr "" +msgstr "(새) 페이지에 링크하려면 %{linkExample}을 입력하기만 하면 됩니다. 더 많은 예는 %{linkStart}문서%{linkEnd}에 있습니다." msgid "WikiPage|Update %{pageTitle}" msgstr "%{pageTitle} 업데이트" @@ -65766,7 +65826,7 @@ msgstr "%{workItemType} 은 하위 유형으로 %{childItemType}를 허용하지 msgid "WorkItem|%{workItemType} has 1 linked item" msgid_plural "WorkItem|%{workItemType} has %{itemCount} linked items" -msgstr[0] "%{workItemType} 에 %{itemCount} 개의 연결된 항목이 있습니다." +msgstr[0] "%{workItemType} 에 %{itemCount} 개의 링크된 항목이 있습니다." msgid "WorkItem|%{workItemType} is blocked by 1 item" msgid_plural "WorkItem|%{workItemType} is blocked by %{itemCount} items" @@ -66047,7 +66107,7 @@ msgid "WorkItem|Forest green" msgstr "" msgid "WorkItem|Health status" -msgstr "" +msgstr "건강 상태" msgid "WorkItem|History only" msgstr "" @@ -66089,13 +66149,13 @@ msgid "WorkItem|Light blue" msgstr "" msgid "WorkItem|Link items together to show that they're related or that one is blocking others." -msgstr "" +msgstr "작업 항목을 함께 링크하여 서로 관련되어 있거나 다른 항목을 차단하고 있음을 표시합니다." msgid "WorkItem|Linked item removed" -msgstr "" +msgstr "링크된 항목이 제거되었습니다." msgid "WorkItem|Linked items" -msgstr "" +msgstr "링크된 항목" msgid "WorkItem|Load more" msgstr "" @@ -66167,7 +66227,7 @@ msgid "WorkItem|No iteration" msgstr "이터레이션 없음" msgid "WorkItem|No linked items are currently open." -msgstr "" +msgstr "현재 열려 있는 링크된 항목이 없습니다." msgid "WorkItem|No matches found" msgstr "" @@ -66996,7 +67056,7 @@ msgid "You are not allowed to reject a user" msgstr "" msgid "You are not allowed to unlink your primary login account" -msgstr "" +msgstr "기본 로그인 계정의 링크를 해제할 수 없습니다." msgid "You are not authorized to delete this site profile" msgstr "" @@ -67362,7 +67422,7 @@ msgid "You don't have write access to the source branch." msgstr "이 소스 브랜치에 쓰기 권한이 없습니다." msgid "You don't need to link the security policy projects from the group. All policies in the security policy projects are inherited already." -msgstr "그룹의 보안 정책 프로젝트를 연결할 필요가 없습니다. 보안 정책 프로젝트의 모든 정책은 이미 상속되었습니다." +msgstr "그룹의 보안 정책 프로젝트를 링크할 필요가 없습니다. 보안 정책 프로젝트의 모든 정책은 이미 상속되었습니다." msgid "You don’t have access to Productivity Analytics in this group" msgstr "이 그룹의 생산성 분석에 액세스할 수 없습니다." @@ -67614,7 +67674,7 @@ msgid "You will receive notifications only for comments in which you were @menti msgstr "당신이 @멘션 된 댓글에 대해서만 알림를 받게됩니다." msgid "You'll be charged for %{trueUpLinkStart}users over license%{trueUpLinkEnd} on a quarterly or annual basis, depending on the terms of your agreement." -msgstr "라이선스%{trueUpLinkEnd} 를 초과하는 %{trueUpLinkStart}사용자에 대해서는 약관 조건에 따라 분기별 또는 연간 기준으로 요금이 청구됩니다." +msgstr "%{trueUpLinkStart}라이선스를 초과%{trueUpLinkEnd}하는 사용자에 대해서는 약관 조건에 따라 분기별 또는 연간 기준으로 요금이 청구됩니다." msgid "You're about to leave GitLab" msgstr "GitLab을 떠나려고 합니다." @@ -68449,7 +68509,7 @@ msgid "cannot be enabled until identity verification is completed" msgstr "신원 확인이 완료될 때까지 활성화할 수 없습니다." msgid "cannot be linked to the epic. This epic already has maximum number of child issues & epics." -msgstr "에픽에 연결할 수 없습니다. 이 에픽에는 이미 최대 하위 문제 및 에픽 수가 있습니다." +msgstr "에픽에 링크할 수 없습니다. 이 에픽에는 이미 최대 하위 문제 및 에픽 수가 있습니다." msgid "cannot be set to user cap" msgstr "" @@ -69197,7 +69257,7 @@ msgid "is already associated to a GitLab Issue. New issue will not be associated msgstr "" msgid "is already linked to this vulnerability" -msgstr "" +msgstr "이 취약점에 이미 링크되어 있습니다" msgid "is an invalid IP address range" msgstr "" @@ -69221,7 +69281,7 @@ msgid "is invalid." msgstr "" msgid "is linked to an account pending deletion." -msgstr "" +msgstr "삭제 대기 중인 계정에 링크되어 있습니다." msgid "is not" msgstr "" @@ -69254,7 +69314,7 @@ msgid "is not in the group enforcing Group Managed Account" msgstr "" msgid "is not linked to a SAML account or has an inactive SCIM identity. For information on how to resolve this error, see the %{troubleshoot_link_start}troubleshooting SCIM documentation%{troubleshoot_link_end}." -msgstr "SAML 계정에 연결되어 있지 않거나 비활성 SCIM ID가 있습니다. 이 오류를 해결하는 방법에 대한 자세한 내용은 %{troubleshoot_link_start}SCIM 문제 해결 설명서%{troubleshoot_link_end}를 참조하세요." +msgstr "SAML 계정에 링크되어 있지 않거나 비활성 SCIM ID가 있습니다. 이 오류를 해결하는 방법에 대한 자세한 내용은 %{troubleshoot_link_start}SCIM 문제 해결 설명서%{troubleshoot_link_end}를 참조하세요." msgid "is not one of" msgstr "" diff --git a/locale/nb_NO/gitlab.po b/locale/nb_NO/gitlab.po index a1e604509ea..aed6cadb7b4 100644 --- a/locale/nb_NO/gitlab.po +++ b/locale/nb_NO/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: nb\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:34\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr " %{start} til %{end}" @@ -1552,15 +1552,6 @@ msgstr "%{total} saksvekt gjenstår" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total} advarsler funnet: viser første %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "%{type} må være en %{help_link}" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "Kopier filinnhold" msgid "Copy file path" msgstr "Kopier filbanen" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Klarte ikke å laste inn tilordnede. Vennligst prøv igjen." @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "Gruppe-Git-LFS-status:" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Vennligst skriv inn et nummer som ikke er negativt" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/nl_NL/gitlab.po b/locale/nl_NL/gitlab.po index 50a1929e186..ec3a97a6e7f 100644 --- a/locale/nl_NL/gitlab.po +++ b/locale/nl_NL/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: nl\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:33\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr "" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/pl_PL/gitlab.po b/locale/pl_PL/gitlab.po index 8ba84231c49..7400e62b45c 100644 --- a/locale/pl_PL/gitlab.po +++ b/locale/pl_PL/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: pl\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:34\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr " %{start} do %{end}" @@ -1852,15 +1852,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total} ostrzeżeń znaleziono: pokazano pierwsze %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -4159,7 +4150,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4540,6 +4534,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -11302,6 +11299,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15743,6 +15743,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -17321,6 +17324,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -25303,6 +25309,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -26404,6 +26413,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28663,6 +28678,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -29221,6 +29239,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -29254,6 +29275,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -44465,6 +44489,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -53274,6 +53301,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -53609,6 +53654,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53988,7 +54036,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -54348,6 +54396,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -59265,6 +59316,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -62003,6 +62057,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65953,6 +66010,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/pt_BR/gitlab.po b/locale/pt_BR/gitlab.po index e1dfe168aa0..acd291ff266 100644 --- a/locale/pt_BR/gitlab.po +++ b/locale/pt_BR/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: pt-BR\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:43\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr " %{start} até %{end}" @@ -1552,15 +1552,6 @@ msgstr "%{total} peso do tíquete restante" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total} avisos descobertos: mostrando primeiro %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "%{type} '%{name}' foi restaurado com sucesso." - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type} \"%{name}\" está sendo excluído." - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{type} \"%{name}\" será excluído em %{date}." - msgid "%{type} must be a %{help_link}" msgstr "%{type} deve ser um %{help_link}" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "O identificador do modelo deve iniciar por \"%{bedrockIdentifierPrefix}\ msgid "AdminSelfHostedModels|Model uses an API token" msgstr "Modelo utiliza um token de API" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "Mais modelos estão disponíveis no beta. Você pode %{linkStart}ativar os recursos beta do modelo auto-hospedado%{linkEnd}." @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (requer v%{version})" @@ -15309,6 +15309,9 @@ msgstr "Você está vendo a central de conformidade de %{project}. Para ver info msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "Exportação de aderência aos padrões" @@ -16881,6 +16884,9 @@ msgstr "Copiar conteúdo do arquivo" msgid "Copy file path" msgstr "Copiar caminho do arquivo" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "Copiar URL da imagem" @@ -24793,6 +24799,9 @@ msgstr "Falha ao carregar" msgid "Failed to load Roadmap" msgstr "Falha ao carregar Roadmap" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Falha ao carregar os responsáveis. Tente novamente." @@ -25888,6 +25897,12 @@ msgstr "Os `labels` de função podem receber no máximo 10 parâmetros." msgid "GCP region configured" msgstr "Região GCP configurada" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "O grupo '%{group_name}' está sendo excluído." msgid "Group '%{group_name}' was successfully updated." msgstr "O grupo '%{group_name}' foi atualizado com sucesso." +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "Status Git LFS do grupo:" @@ -28693,6 +28711,9 @@ msgstr "Ative a agregação de visão geral em segundo plano para o Painel de co msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "Ativar o envio de notificações por e-mail para este grupo e todos os seus subgrupos e projetos" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "Impor Certificados SSH" @@ -28726,6 +28747,9 @@ msgstr "O caminho do grupo não pode ter mais de %{length} caracteres." msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "Como gerencio certificados SSH de grupo?" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "Insira um nome para o modelo de comentário." msgid "Please enter a name for the custom emoji." msgstr "Insira um nome para o emoji personalizado." +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Insira um número não negativo" @@ -52562,6 +52589,24 @@ msgstr "Por exemplo: glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "Por exemplo: spec/**/*.rb" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "Editar projeto de política" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "Editar política de execução de análise" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "Nome de política vazio" @@ -53270,7 +53318,7 @@ msgstr "A análise escolherá automaticamente um runner para executar porque nã msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "são falsos positivos" msgid "SecurityOrchestration|are not false positives" msgstr "não são falsos positivos" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "ramificação" @@ -58529,6 +58580,9 @@ msgstr "O token de autenticação." msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "A URL base para a instância Harbor vinculada ao projeto GitLab. Por exemplo, `https://demo.goharbor.io`." +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "O branch para este projeto não tem configuração de pipeline ativa." @@ -61197,6 +61251,9 @@ msgstr "Quando forem concluídos, os itens de tarefas aparecerão aqui." msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "Quando estiverem no modo soneca, os itens de tarefas aparecerão aqui." +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "Item de trabalho" @@ -65119,6 +65176,9 @@ msgstr "Ver caminhos de dependência" msgid "Vulnerability|View training" msgstr "Veja o treinamento" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "Classe vulnerável:" diff --git a/locale/ro_RO/gitlab.po b/locale/ro_RO/gitlab.po index cc1cd55c79b..d341f6dc0ec 100644 --- a/locale/ro_RO/gitlab.po +++ b/locale/ro_RO/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:34\n" +"PO-Revision-Date: 2025-03-13 12:57\n" msgid " %{start} to %{end}" msgstr " de la %{start} până la %{end}" @@ -1702,15 +1702,6 @@ msgstr "%{total} greutate de problemă rămasă" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total} (de) avertismente găsite: se afișează primul %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "%{type} trebuie să fie un/o %{help_link}" @@ -3982,7 +3973,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4363,6 +4357,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -11092,6 +11089,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (necesită v%{version})" @@ -15526,6 +15526,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -17101,6 +17104,9 @@ msgstr "Copiați conținutul fișierului" msgid "Copy file path" msgstr "Copiați calea fișierului" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "Copiați URL-ul imaginii" @@ -25048,6 +25054,9 @@ msgstr "Nu s-a reușit încărcarea" msgid "Failed to load Roadmap" msgstr "Nu s-a reușit încărcarea foii de parcurs" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Nu s-a reușit încărcarea responsabililor. Vă rugăm să încercați din nou." @@ -26146,6 +26155,12 @@ msgstr "" msgid "GCP region configured" msgstr "Regiunea GCP configurată" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28399,6 +28414,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "Starea grupului Git LFS:" @@ -28957,6 +28975,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28990,6 +29011,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -44152,6 +44176,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Vă rugăm să introduceți un număr non-negativ" @@ -52918,6 +52945,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -53251,6 +53296,9 @@ msgstr "Editați proiectul de politică" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "Editați politica de execuție a scanării" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "Numele politicii goale" @@ -53629,7 +53677,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53989,6 +54037,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "ramură" @@ -58897,6 +58948,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "Ramura acestui proiect nu are o configurație de pipeline activă." @@ -61600,6 +61654,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65536,6 +65593,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "Vizualizați formarea" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/ru/gitlab.po b/locale/ru/gitlab.po index 895893332a8..5985e00d666 100644 --- a/locale/ru/gitlab.po +++ b/locale/ru/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: ru\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:34\n" +"PO-Revision-Date: 2025-03-13 12:58\n" msgid " %{start} to %{end}" msgstr " %{start} по %{end}" @@ -1018,7 +1018,7 @@ msgid "%{count} of %{total}" msgstr "%{count} из %{total}" msgid "%{count} open" -msgstr "%{count} открыто" +msgstr "Открыто: %{count}" msgid "%{count} project" msgid_plural "%{count} projects" @@ -1852,15 +1852,6 @@ msgstr "Оставшийся вес обсуждений %{total}" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "Найдено %{total} предупреждений, показаны первые %{warningsDisplayed}." -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -4159,8 +4150,11 @@ msgstr "Есть вопросы или идеи по новым улучшени msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "Подробнее об изменениях в нашей %{linkStart}документации%{linkEnd}." -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." -msgstr "Мы обновили отчёт об обеспечении соблюдения норм, добавив новые функции для улучшения вашего рабочего процесса." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." +msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." msgstr "Настройте частоту опроса обновлений в интерфейсе GitLab." @@ -4540,6 +4534,9 @@ msgstr "Идентификатор модели должен начинатьс msgid "AdminSelfHostedModels|Model uses an API token" msgstr "Модель использует токен API" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "Больше моделей доступно в бета-версии. Вы можете %{linkStart}включить бета-функции для самостоятельно размещённых моделей%{linkEnd}." @@ -5030,7 +5027,7 @@ msgid "AdminSettings|The URL of your Cube instance." msgstr "" msgid "AdminSettings|The default domain to use for Auto Review Apps and Auto Deploy stages in all projects." -msgstr "Домен по умолчанию для использования в приложениях Auto Review и этапах Auto Deploy во всех проектах" +msgstr "Домен по умолчанию для автоматических приложений для рецензии и этапов автоматического развёртывания во всех проектах." msgid "AdminSettings|The host of your data collector instance." msgstr "" @@ -11302,6 +11299,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -14080,10 +14080,10 @@ msgid "ClusterIntegration|Add Kubernetes cluster" msgstr "Добавить кластер Kubernetes" msgid "ClusterIntegration|Adding a Kubernetes cluster to your group will automatically share the cluster across all your projects. Use review apps, deploy your applications, and easily run your pipelines for all projects using the same cluster." -msgstr "Добавление кластера Kubernetes в вашу группу автоматически разделит кластер во всех ваших проектах. Используйте приложения для просмотра, развертывайте приложения и легко запускайте свои сборочные линии для всех проектов с использованием одного и того же кластера." +msgstr "Добавление кластера Kubernetes в вашу группу автоматически сделает его доступным для всех ваших проектов. Используйте приложения для рецензии, развёртывайте приложения и легко запускайте конвейеры для всех проектов с использованием одного кластера." msgid "ClusterIntegration|Adding a Kubernetes cluster will automatically share the cluster across all projects. Use review apps, deploy your applications, and easily run your pipelines for all projects using the same cluster." -msgstr "Добавление кластера Kubernetes автоматически разделит кластер между всеми проектами. Используйте приложения для рецензирования, развертывайте приложения и легко запускайте сборочные линии для всех проектов, использующих один и тот же кластер." +msgstr "Добавление кластера Kubernetes автоматически сделает его доступным для всех проектов. Используйте приложения для рецензии, развёртывайте приложения и легко запускайте конвейеры для всех проектов с использованием одного кластера." msgid "ClusterIntegration|Adding an integration to your group will share the cluster across all your projects." msgstr "Добавление интеграции в вашу группу позволит использовать кластер во всех ваших проектах." @@ -14371,7 +14371,7 @@ msgid "ClusterIntegration|Something went wrong while creating your Kubernetes cl msgstr "Произошла ошибка при создании вашего кластера Kubernetes." msgid "ClusterIntegration|Specifying a domain will allow you to use Auto Review Apps and Auto Deploy stages for %{linkStart}Auto DevOps.%{linkEnd} The domain should have a wildcard DNS configured matching the domain. " -msgstr "Указание домена позволит вам использовать Автоматические приложения для рецензирования и этапы Автоматического развёртывания для %{linkStart}Auto DevOps.%{linkEnd} Домен должен иметь настроенную DNS-запись с шаблоном, соответствующим этому домену. " +msgstr "Указание домена позволит вам использовать автоматические приложения для рецензии и автоматические этапы развёртывания для %{linkStart}Auto DevOps.%{linkEnd} Домен должен иметь настроенную DNS-запись с шаблоном, соответствующим этому домену. " msgid "ClusterIntegration|Step 1. Connect the agent" msgstr "Шаг 1. Подключите агента" @@ -14443,10 +14443,10 @@ msgid "ClusterIntegration|Unknown Error" msgstr "Неизвестная ошибка" msgid "ClusterIntegration|Use GitLab to deploy to your cluster, run jobs, use review apps, and more." -msgstr "Используйте GitLab для развертывания в ваш кластер, выполнения заданий, использования приложений для рецензирования и многого другого." +msgstr "Используйте GitLab для развёртывания в кластер, запуска заданий, использования автоматических приложений для рецензии и других задач." msgid "ClusterIntegration|Use the %{linkStart}GitLab agent%{linkEnd} to safely connect your Kubernetes clusters to GitLab. You can deploy your applications, run your pipelines, use Review Apps, and much more." -msgstr "Используйте %{linkStart}GitLab Agent%{linkEnd} для безопасного подключения кластеров Kubernetes к GitLab. Вы можете разворачивать приложения, запускать сборочные линии, использовать Приложения для ревизий и многое другое." +msgstr "Используйте %{linkStart}агент GitLab%{linkEnd} для безопасного подключения кластеров Kubernetes к GitLab. Вы можете разворачивать приложения, запускать конвейеры, использовать автоматические приложения для рецензии и многое другое." msgid "ClusterIntegration|Using AutoDevOps with multiple clusters? %{help_link_start}Read this first.%{help_link_end}" msgstr "" @@ -14786,7 +14786,7 @@ msgid "Collapse issues" msgstr "" msgid "Collapse jobs" -msgstr "" +msgstr "Свернуть задания" msgid "Collapse merge checks" msgstr "Свернуть проверки перед слиянием" @@ -15743,6 +15743,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -17321,6 +17324,9 @@ msgstr "Скопировать содержимое файла" msgid "Copy file path" msgstr "Скопировать путь к файлу" +msgid "Copy file permalink" +msgstr "Скопировать постоянную ссылку на файл" + msgid "Copy image URL" msgstr "Скопировать URL изображения" @@ -21031,10 +21037,10 @@ msgstr "Развертывания" msgid "Deployments|%{deployments} environment impacted." msgid_plural "Deployments|%{deployments} environments impacted." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Затронуто %{deployments} окружение." +msgstr[1] "Затронуто %{deployments} окружения." +msgstr[2] "Затронуто %{deployments} окружений." +msgstr[3] "Затронуто %{deployments} окружений." msgid "Deployments|Add an %{codeStart}environment:name%{codeEnd} to your CI/CD jobs to register a deployment action. %{linkStart}Learn more about environments.%{linkEnd}" msgstr "Добавьте %{codeStart}environment:name%{codeEnd} в ваши задания CI/CD, чтобы зарегистрировать действие развертывания. %{linkStart}Подробнее об окружениях%{linkEnd}." @@ -22451,7 +22457,7 @@ msgid "DuoEnterpriseDiscover|AI-powered vulnerability explanation and resolution msgstr "" msgid "DuoEnterpriseDiscover|Advanced troubleshooting" -msgstr "" +msgstr "Расширенное устранение неполадок" msgid "DuoEnterpriseDiscover|Boost productivity with smart code assistance" msgstr "" @@ -23355,40 +23361,40 @@ msgid "Enable wiki tab in global search results" msgstr "Включить вкладку вики в результатах глобального поиска" msgid "EnableReviewApp|Add a job in your CI/CD configuration that:" -msgstr "" +msgstr "Добавьте задание в вашу конфигурацию CI/CD, которое:" msgid "EnableReviewApp|Copy snippet" -msgstr "" +msgstr "Скопировать сниппет" msgid "EnableReviewApp|Have access to infrastructure that can host and deploy the review apps." -msgstr "" +msgstr "Иметь доступ к инфраструктуре, которая может размещать и развёртывать приложения для рецензии." msgid "EnableReviewApp|Install and configure a runner to do the deployment." -msgstr "" +msgstr "Установить и настроить средство выполнения для развёртывания." msgid "EnableReviewApp|Make sure your project has an environment configured with the target URL set to your website URL. If not, create a new one before continuing." -msgstr "" +msgstr "Убедитесь, что в вашем проекте настроено окружение с целевым URL, равным URL вашего сайта. Если такого окружения нет, создайте новое окружение прежде чем продолжить." msgid "EnableReviewApp|Only runs for feature branches or merge requests." msgstr "Работает только для функциональных веток или запросов на слияние." msgid "EnableReviewApp|Recommended: Set up a job that manually stops the Review Apps." -msgstr "" +msgstr "Рекомендуется настроить задание, которое вручную останавливает приложения для рецензии." msgid "EnableReviewApp|Review apps are dynamic environments that you can use to provide a live preview of changes made in a feature branch." -msgstr "Приложения для рецензирования — это динамичные среды, которые можно использовать для предоставления живого предпросмотра изменений, внесенных в функциональную ветку." +msgstr "Приложения для рецензии — это динамичные окружения, которые можно использовать для предоставления живого предварительного просмотра изменений, сделанных в ветке с новой функцией." msgid "EnableReviewApp|To configure a dynamic review app, you must:" -msgstr "" +msgstr "Для настройки динамического приложения для рецензии необходимо:" msgid "EnableReviewApp|Uses a predefined CI/CD variable like %{codeStart}$(CI_COMMIT_REF_SLUG)%{codeEnd} to dynamically create the review app environments. For example, for a configuration using merge request pipelines:" -msgstr "" +msgstr "Использует предопределённую переменную CI/CD, такую как %{codeStart}$(CI_COMMIT_REF_SLUG)%{codeEnd}, для динамического создания окружений приложения для рецензии. Например, для конфигурации с конвейерами для запросов на слияние:" msgid "EnableReviewApp|Using a static site?" -msgstr "" +msgstr "Используете статичный сайт?" msgid "EnableReviewApp|View more example projects" -msgstr "" +msgstr "Посмотреть другие примеры проектов" msgid "Enabled" msgstr "Включено" @@ -23727,10 +23733,10 @@ msgid "Environments|Edit environment" msgstr "" msgid "Environments|Enable Review Apps" -msgstr "" +msgstr "Включение приложений для рецензии" msgid "Environments|Enable review apps" -msgstr "" +msgstr "Включить приложения для рецензии" msgid "Environments|Environment" msgstr "Окружение" @@ -23739,7 +23745,7 @@ msgid "Environments|Environments" msgstr "Окружения" msgid "Environments|Environments are places where code gets deployed, such as staging or production. You can create an environment in the UI or in your .gitlab-ci.yml file. You can also enable review apps, which assist with providing an environment to showcase product changes. %{linkStart}Learn more%{linkEnd} about environments." -msgstr "Окружения — это места, куда развертывается код, такие как staging или production. Вы можете создать окружение в интерфейсе или в вашем файле .gitlab-ci.yml. Также можно включить приложения для рецензирования, которые помогают предоставить окружение для демонстрации изменений в продукте. %{linkStart}Подробнее об окружениях%{linkEnd}." +msgstr "Окружения — это места, куда развёртывается код, такие как staging или production. Вы можете создать окружение через интерфейс или в вашем файле .gitlab-ci.yml. Также можно включить приложения для рецензии, которые помогают предоставить окружение для демонстрации изменений в продукте. %{linkStart}Подробнее%{linkEnd} об окружениях." msgid "Environments|Get started with environments" msgstr "" @@ -24015,7 +24021,7 @@ msgid "Environment|View details." msgstr "" msgid "Environment|You don't have permission to view all the namespaces in the cluster. If a namespace is not shown, you can still enter its name to select it." -msgstr "" +msgstr "У вас нет прав для просмотра всех пространств имён в кластере. Если пространство имён не отображается, вы всё равно можете ввести его название, чтобы выбрать его." msgid "Epic" msgstr "Цель" @@ -24837,7 +24843,7 @@ msgid "Expand issues" msgstr "" msgid "Expand jobs" -msgstr "" +msgstr "Развернуть задания" msgid "Expand merge checks" msgstr "Развернуть проверки перед слиянием" @@ -25303,6 +25309,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "Не удалось загрузить план развития" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "Не удалось загрузить исполнителей. Повторите попытку." @@ -26404,6 +26413,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "Время ожидания представления данных GLQL истекло. Добавьте больше фильтров, чтобы уменьшить количество результатов." @@ -28663,6 +28678,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -29221,6 +29239,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "Включить отправку уведомлений по электронной почте для этой группы, а также для всех её подгрупп и проектов" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "Принудительное использование сертификатов SSH" @@ -29254,6 +29275,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -32974,7 +32998,7 @@ msgid "Iterations|Error loading iteration cadences." msgstr "" msgid "Iterations|Incomplete issues will be added to the next iteration at %{strongStart}midnight, %{timezone}%{strongEnd}." -msgstr "" +msgstr "Незавершённые обсуждения будут добавлены в следующую итерацию в %{strongStart}полночь, %{timezone}%{strongEnd}." msgid "Iterations|Iteration cadence" msgstr "" @@ -33784,13 +33808,13 @@ msgid "Jobs older than the configured time are considered expired and are archiv msgstr "Задания старше настроенного времени считаются просроченными и архивируются. Заархивированные задания больше нельзя повторить. Оставьте пустым, чтобы никогда не архивировать задания автоматически. Единицей измерения по умолчанию являются дни, но вы можете использовать и другие единицы измерения, например %{code_open}15 days%{code_close}, %{code_open}1 month%{code_close}, %{code_open}2 years%{code_close}. Минимальное значение 1 день." msgid "Jobs|All" -msgstr "" +msgstr "Все" msgid "Jobs|Are you sure you want to proceed?" -msgstr "" +msgstr "Вы уверены, что хотите продолжить?" msgid "Jobs|Are you sure you want to retry this job?" -msgstr "" +msgstr "Вы уверены, что хотите повторить это задание?" msgid "Jobs|Create CI/CD configuration file" msgstr "" @@ -33823,7 +33847,7 @@ msgid "Jobs|There was a problem fetching the failed jobs." msgstr "" msgid "Jobs|Troubleshoot" -msgstr "" +msgstr "Устранение неполадок" msgid "Jobs|Use jobs to automate your tasks" msgstr "Используйте задания для автоматизации ваших задач" @@ -39058,7 +39082,7 @@ msgid "New public deploy key" msgstr "Новый открытый ключ развертывания" msgid "New related %{issueType}" -msgstr "" +msgstr "Создать и связать %{issueType}" msgid "New release" msgstr "Новый релиз" @@ -44465,6 +44489,9 @@ msgstr "Пожалуйста, введите название для шабло msgid "Please enter a name for the custom emoji." msgstr "Пожалуйста, введите название для пользовательского эмодзи." +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Пожалуйста, введите неотрицательное число" @@ -44577,7 +44604,7 @@ msgid "Please use an email address or domain you control." msgstr "" msgid "Please use this form to report to the administrator users who create spam issues, comments or behave inappropriately. A member of the abuse team will review your report as soon as possible." -msgstr "" +msgstr "Используйте эту форму для сообщения администратору о пользователях, которые создают спам-обсуждения, комментарии или ведут себя неподобающим образом. Участник команды по борьбе с нарушениями рассмотрит ваш отчёт как можно скорее." msgid "Please wait a few moments while we load the file history for this line." msgstr "" @@ -50225,7 +50252,7 @@ msgid "Review" msgstr "Рецензия" msgid "Review App|View app" -msgstr "" +msgstr "Просмотр приложения" msgid "Review App|View latest app" msgstr "Просмотр последнего приложения" @@ -53274,6 +53301,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "Инвентаризация безопасности" @@ -53609,6 +53654,9 @@ msgstr "Редактировать проект политики" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "Редактирование политики управления уязвимостями" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53988,8 +54036,8 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "Запланировать новый" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" -msgstr "Запланировать конвейер с периодичностью %{cadenceSelector} для веток" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" +msgstr "" msgid "SecurityOrchestration|Scope" msgstr "" @@ -54348,6 +54396,9 @@ msgstr "являются ложными срабатываниями" msgid "SecurityOrchestration|are not false positives" msgstr "не являются ложными срабатываниями" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -59091,7 +59142,7 @@ msgid "TestReports|Job artifacts are expired" msgstr "Срок действия артефактов задания истек" msgid "TestReports|Jobs" -msgstr "" +msgstr "Задания" msgid "TestReports|Learn how to upload pipeline test reports" msgstr "" @@ -59265,6 +59316,9 @@ msgstr "Токен аутентификации." msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "Ветка для этого проекта не имеет активной конфигурации сборочной линии." @@ -60675,7 +60729,7 @@ msgid "This job is an out-of-date deployment to %{environmentLink}. View the %{d msgstr "Это задание является устаревшим развёртыванием в %{environmentLink}. Смотрите %{deploymentLink}." msgid "This job is archived. Only the complete pipeline can be retried." -msgstr "" +msgstr "Это задание архивировано. Можно повторно запустить только весь конвейер." msgid "This job is creating a deployment to %{environmentLink} using cluster %{clusterNameOrLink} and namespace %{kubernetesNamespace}." msgstr "" @@ -62003,6 +62057,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "Когда задачи будут отложены, они отобразятся здесь." +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -64453,7 +64510,7 @@ msgid "UserMapping|Reassignments in %{group} rejected" msgstr "" msgid "UserMapping|Reassignments in %{group} waiting for review" -msgstr "" +msgstr "Переназначения в группе %{group} ожидают рассмотрения" msgid "UserMapping|Reject" msgstr "" @@ -64462,10 +64519,10 @@ msgid "UserMapping|Rejected" msgstr "" msgid "UserMapping|Review and complete the CSV file." -msgstr "" +msgstr "Рассмотрите и завершите работу с файлом CSV." msgid "UserMapping|Review reassignment details" -msgstr "" +msgstr "Рассмотрите детали переназначения" msgid "UserMapping|Search placeholder users" msgstr "" @@ -65109,10 +65166,10 @@ msgid "VersionCheck|Additionally, there is an available stable patch for your cu msgstr "Кроме того, доступен стабильный патч в вашей текущей минорной версии GitLab: %{latestStableVersionOfMinor}" msgid "VersionCheck|Important notice - Critical patch release" -msgstr "Важное уведомление – Выпуск критического патча" +msgstr "Важное уведомление — патч с исправлением критичных проблем" msgid "VersionCheck|Learn more about this critical patch release." -msgstr "Подробнее об этом выпуске критического патча." +msgstr "Подробнее об этом патче с исправлением критичных проблем." msgid "VersionCheck|Remind me again in 3 days" msgstr "Напомнить через 3 дня" @@ -65163,7 +65220,7 @@ msgid "View all activity" msgstr "Просмотреть всю активность" msgid "View all environments." -msgstr "" +msgstr "Просмотреть все окружения." msgid "View all issues" msgstr "" @@ -65953,6 +66010,9 @@ msgstr "Просмотреть пути зависимостей" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "Идентификаторы уязвимостей" + msgid "Vulnerability|Vulnerable class:" msgstr "" @@ -67415,7 +67475,7 @@ msgid "WorkItem|New related %{workItemType}" msgstr "Создать и связать %{workItemType}" msgid "WorkItem|New related item" -msgstr "" +msgstr "Новый связанный элемент" msgid "WorkItem|New task" msgstr "Новую задачу" @@ -71391,7 +71451,7 @@ msgid "organizations can only be added to root groups and groups configured as C msgstr "" msgid "overdue" -msgstr "" +msgstr "просрочено" msgid "packages" msgstr "" diff --git a/locale/si_LK/gitlab.po b/locale/si_LK/gitlab.po index 206d803c868..423ad077f88 100644 --- a/locale/si_LK/gitlab.po +++ b/locale/si_LK/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: si-LK\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:34\n" +"PO-Revision-Date: 2025-03-13 12:58\n" msgid " %{start} to %{end}" msgstr " %{start} සිට %{end}" @@ -1552,15 +1552,6 @@ msgstr "වැදගත් %{total} ක් ඉතිරියි" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "අවවාද %{total} ක් හමු විය: පළමු %{warningsDisplayed} පෙන්වයි" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "%{type} '%{name}' සාර්ථකව ප්‍රත්‍යර්පණය කර ඇත." - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type} '%{name}' මැකෙමින් පවතී." - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{date} දී %{type} '%{name}' මැකෙනු ඇත." - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "සමූහයේ ගිට් LFS තත්‍වය:" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/tr_TR/gitlab.po b/locale/tr_TR/gitlab.po index c2a4fa74dfd..6a083357b85 100644 --- a/locale/tr_TR/gitlab.po +++ b/locale/tr_TR/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:34\n" +"PO-Revision-Date: 2025-03-13 12:58\n" msgid " %{start} to %{end}" msgstr "" @@ -1552,15 +1552,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3805,7 +3796,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4186,6 +4180,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10882,6 +10879,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15309,6 +15309,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16881,6 +16884,9 @@ msgstr "Dosya içeriğini kopyala" msgid "Copy file path" msgstr "Dosya yolunu kopyala" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24793,6 +24799,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25888,6 +25897,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28135,6 +28150,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "Grup Git LFS durumu:" @@ -28693,6 +28711,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28726,6 +28747,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43839,6 +43863,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52562,6 +52589,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52893,6 +52938,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53270,7 +53318,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53630,6 +53678,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58529,6 +58580,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -61197,6 +61251,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65119,6 +65176,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/uk/gitlab.po b/locale/uk/gitlab.po index 3aa9cfe65cd..80267782ec3 100644 --- a/locale/uk/gitlab.po +++ b/locale/uk/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: uk\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:35\n" +"PO-Revision-Date: 2025-03-13 12:58\n" msgid " %{start} to %{end}" msgstr " %{start} до %{end}" @@ -1852,15 +1852,6 @@ msgstr "%{total} загальна вага відкритих задач" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "%{total}знайдено попередження : показано перше%{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "%{type} має бути %{help_link}" @@ -4159,7 +4150,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4540,6 +4534,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -11302,6 +11299,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature} (потрібна v%{version})" @@ -15743,6 +15743,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -17321,6 +17324,9 @@ msgstr "Скопіювати вміст файлу" msgid "Copy file path" msgstr "Скопіювати шлях до файлу" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -25303,6 +25309,9 @@ msgstr "Неможливо завантажити" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -26404,6 +26413,12 @@ msgstr "" msgid "GCP region configured" msgstr "GCP регіон налаштовано" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -28663,6 +28678,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "Групу '%{group_name}' успішно оновлено." +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "Статус групи Git LFS:" @@ -29221,6 +29239,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -29254,6 +29275,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -44465,6 +44489,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "Будь ласка, введіть невід'ємне число" @@ -53274,6 +53301,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -53609,6 +53654,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -53988,7 +54036,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -54348,6 +54396,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "гілка" @@ -59265,6 +59316,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "Ця гілка для цього проєкту не має активної конфігурації конвеєра." @@ -62003,6 +62057,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -65953,6 +66010,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/zh_CN/gitlab.po b/locale/zh_CN/gitlab.po index a438b0cc228..aea1145136b 100644 --- a/locale/zh_CN/gitlab.po +++ b/locale/zh_CN/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:32\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr "从%{start}到%{end}" @@ -1402,15 +1402,6 @@ msgstr "%{total}剩余议题权重" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "找到%{total}个警告: 显示前 %{warningsDisplayed}" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "正在删除的 %{type} '%{name}'。" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "将于 %{date} 删除的 %{type} '%{name}'。" - msgid "%{type} must be a %{help_link}" msgstr "%{type} 必须是一个%{help_link}" @@ -3628,7 +3619,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4009,6 +4003,9 @@ msgstr "模型标识符必须以 "%{bedrockIdentifierPrefix}" 开头" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "模型使用 API 令牌" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "更多模型可在 Beta 中使用。您可以 %{linkStart}启用自托管模型 Beta 功能%{linkEnd}。" @@ -10672,6 +10669,9 @@ msgstr "%{count} 个占位用户匹配到用户。" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count} 个占位用户未匹配到用户。" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature}(需要 v%{version})" @@ -15092,6 +15092,9 @@ msgstr "您可以查看 %{project} 的合规中心。要查看所有项目的相 msgid "ComplianceReport|and %{count} more" msgstr "和 %{count} 更多" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "遵守标准导出" @@ -16661,6 +16664,9 @@ msgstr "复制文件内容" msgid "Copy file path" msgstr "复制文件路径" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "复制图像 URL" @@ -24538,6 +24544,9 @@ msgstr "加载失败" msgid "Failed to load Roadmap" msgstr "加载路线图失败" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "加载指派人失败。请重试。" @@ -25630,6 +25639,12 @@ msgstr "函数 `labels` 只能接受最多 10 个参数。" msgid "GCP region configured" msgstr "已配置 GCP 区域" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -27871,6 +27886,9 @@ msgstr "群组 '%{group_name}' 正在删除。" msgid "Group '%{group_name}' was successfully updated." msgstr "群组 %{group_name} 已成功更新。" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "群组Git LFS状态:" @@ -28429,6 +28447,9 @@ msgstr "启用价值流仪表盘的后台聚合" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "为这个群组以及其下所有项目和子群组启用电子邮件通知。" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "启用 SSH 证书" @@ -28462,6 +28483,9 @@ msgstr "群组路径不能超过%{length}个字符。" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "如何管理群组SSH证书?" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43526,6 +43550,9 @@ msgstr "请输入评论模板的名称。" msgid "Please enter a name for the custom emoji." msgstr "请输入自定义表情符号的名称。" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "请输入一个非负数" @@ -52206,6 +52233,24 @@ msgstr "示例:glpat-1234567890" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "示例:spec/**/*.rb" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52535,6 +52580,9 @@ msgstr "编辑策略项目" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "编辑扫描执行策略" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "空策略名称" @@ -52911,7 +52959,7 @@ msgstr "扫描将自动选择要运行的 runner,因为 runner 上不存在任 msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53271,6 +53319,9 @@ msgstr "误报" msgid "SecurityOrchestration|are not false positives" msgstr "不是误报" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "分支" @@ -58161,6 +58212,9 @@ msgstr "身份验证令牌。" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "链接到极狐GitLab 项目的 Harbor 实例的基本 URL。例如,“https://demo.goharbor.io”。" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "此项目的分支没有活跃的流水线配置。" @@ -60794,6 +60848,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "当待办事项被 snoozed 时,它们将出现在这里。" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "工作项" @@ -64702,6 +64759,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "查看培训" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "漏洞类别:" diff --git a/locale/zh_HK/gitlab.po b/locale/zh_HK/gitlab.po index 39740aca532..4d7b490e276 100644 --- a/locale/zh_HK/gitlab.po +++ b/locale/zh_HK/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: zh-HK\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:32\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr "" @@ -1402,15 +1402,6 @@ msgstr "" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "" - msgid "%{type} must be a %{help_link}" msgstr "" @@ -3628,7 +3619,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4009,6 +4003,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10672,6 +10669,9 @@ msgstr "" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "" @@ -15092,6 +15092,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "" @@ -16661,6 +16664,9 @@ msgstr "" msgid "Copy file path" msgstr "" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "" @@ -24538,6 +24544,9 @@ msgstr "" msgid "Failed to load Roadmap" msgstr "" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "" @@ -25630,6 +25639,12 @@ msgstr "" msgid "GCP region configured" msgstr "" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -27871,6 +27886,9 @@ msgstr "" msgid "Group '%{group_name}' was successfully updated." msgstr "" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "" @@ -28429,6 +28447,9 @@ msgstr "" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "" @@ -28462,6 +28483,9 @@ msgstr "" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43526,6 +43550,9 @@ msgstr "" msgid "Please enter a name for the custom emoji." msgstr "" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "" @@ -52206,6 +52233,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52535,6 +52580,9 @@ msgstr "" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "" @@ -52911,7 +52959,7 @@ msgstr "" msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53271,6 +53319,9 @@ msgstr "" msgid "SecurityOrchestration|are not false positives" msgstr "" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "" @@ -58161,6 +58212,9 @@ msgstr "" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "" @@ -60794,6 +60848,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -64702,6 +64759,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "" diff --git a/locale/zh_TW/gitlab.po b/locale/zh_TW/gitlab.po index b2c4a5e15f5..ec2ca72d264 100644 --- a/locale/zh_TW/gitlab.po +++ b/locale/zh_TW/gitlab.po @@ -14,7 +14,7 @@ msgstr "" "X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: /master/locale/gitlab.pot\n" "X-Crowdin-File-ID: 16\n" -"PO-Revision-Date: 2025-03-12 12:32\n" +"PO-Revision-Date: 2025-03-13 12:56\n" msgid " %{start} to %{end}" msgstr " %{start} 到 %{end}" @@ -1402,15 +1402,6 @@ msgstr "%{total} 剩餘議題權重" msgid "%{total} warnings found: showing first %{warningsDisplayed}" msgstr "發現 %{total} 個警告訊息:正在顯示開頭的 %{warningsDisplayed} 個警告訊息" -msgid "%{type} '%{name}' has been successfully restored." -msgstr "" - -msgid "%{type} '%{name}' is being deleted." -msgstr "%{type} '%{name}' 已刪除。" - -msgid "%{type} '%{name}' will be deleted on %{date}." -msgstr "%{type} '%{name}' 將在 %{date} 被刪除。" - msgid "%{type} must be a %{help_link}" msgstr "%{type} 必須為 %{help_link}" @@ -3628,7 +3619,10 @@ msgstr "" msgid "AdherenceReport|Learn more about the changes in our %{linkStart}documentation%{linkEnd}." msgstr "" -msgid "AdherenceReport|We've updated the Adherence Report with new features to enhance your compliance workflow." +msgid "AdherenceReport|Show old report" +msgstr "" + +msgid "AdherenceReport|We've updated the adherence report with new features to enhance your compliance workflow." msgstr "" msgid "Adjust how frequently the GitLab UI polls for updates." @@ -4009,6 +4003,9 @@ msgstr "" msgid "AdminSelfHostedModels|Model uses an API token" msgstr "" +msgid "AdminSelfHostedModels|More features are available in beta. You can %{linkStart}turn on AI-powered beta features%{linkEnd}." +msgstr "" + msgid "AdminSelfHostedModels|More models are available in beta. You can %{linkStart}turn on self-hosted model beta features%{linkEnd}." msgstr "" @@ -10672,6 +10669,9 @@ msgstr "%{count} 個與使用者相符的佔位使用者。" msgid "BulkImport|%{count} placeholder users not matched to users." msgstr "%{count} 個與使用者不相符的佔位使用者。" +msgid "BulkImport|%{count} placeholder users skipped." +msgstr "" + msgid "BulkImport|%{feature} (require v%{version})" msgstr "%{feature}(需要 v%{version})" @@ -15092,6 +15092,9 @@ msgstr "" msgid "ComplianceReport|and %{count} more" msgstr "" +msgid "ComplianceStandardsAdherenceV2|New Report Placeholder" +msgstr "" + msgid "ComplianceStandardsAdherence| Standards adherence export" msgstr "標準遵守匯出" @@ -16661,6 +16664,9 @@ msgstr "複製文件內容" msgid "Copy file path" msgstr "複製文件路徑" +msgid "Copy file permalink" +msgstr "" + msgid "Copy image URL" msgstr "複製映像檔URL" @@ -24538,6 +24544,9 @@ msgstr "載入失敗" msgid "Failed to load Roadmap" msgstr "無法載入路線圖" +msgid "Failed to load additional diffs information. Try reloading the page." +msgstr "" + msgid "Failed to load assignees. Please try again." msgstr "載入指派人失敗。請重試。" @@ -25630,6 +25639,12 @@ msgstr "" msgid "GCP region configured" msgstr "已配置 GCP 區域" +msgid "GLQL list" +msgstr "" + +msgid "GLQL table" +msgstr "" + msgid "GLQL view timed out. Add more filters to reduce the number of results." msgstr "" @@ -27871,6 +27886,9 @@ msgstr "「%{group_name}」群組正在刪除。" msgid "Group '%{group_name}' was successfully updated." msgstr "已成功更新「%{group_name}」群組。" +msgid "Group '%{group_name}' will be deleted on %{date}." +msgstr "" + msgid "Group Git LFS status:" msgstr "群組Git LFS狀態:" @@ -28429,6 +28447,9 @@ msgstr "為價值流儀表板啟用概觀背景聚合" msgid "GroupSettings|Enable sending email notifications for this group and all its subgroups and projects" msgstr "啟用為該群組及其所有子群組和專案發送電子郵件通知" +msgid "GroupSettings|Enforce DPoP authentication for manage API endpoints for group" +msgstr "" + msgid "GroupSettings|Enforce SSH Certificates" msgstr "強制執行 SSH 憑證" @@ -28462,6 +28483,9 @@ msgstr "群組路徑不能超過 %{length} 個字元。" msgid "GroupSettings|How do I manage group SSH certificates?" msgstr "如何管理群組 SSH 憑證?" +msgid "GroupSettings|If enabled, DPoP authentication will be enforced for manage API endpoints for this group." +msgstr "" + msgid "GroupSettings|If enabled, enterprise user accounts will not be able to use personal access tokens. %{learn_more_link}." msgstr "" @@ -43526,6 +43550,9 @@ msgstr "請輸入評論範本的名稱。" msgid "Please enter a name for the custom emoji." msgstr "請輸入自定義表情符號的名稱。" +msgid "Please enter a name with less than %{number} characters." +msgstr "" + msgid "Please enter a non-negative number" msgstr "請輸入一個非負數" @@ -52206,6 +52233,24 @@ msgstr "" msgid "SecurityExclusions|ex: spec/**/*.rb" msgstr "" +msgid "SecurityInventory|CS" +msgstr "" + +msgid "SecurityInventory|DAST" +msgstr "" + +msgid "SecurityInventory|DS" +msgstr "" + +msgid "SecurityInventory|IaC" +msgstr "" + +msgid "SecurityInventory|SAST" +msgstr "" + +msgid "SecurityInventory|SD" +msgstr "" + msgid "SecurityInventory|Security inventory" msgstr "" @@ -52535,6 +52580,9 @@ msgstr "編輯政策專案" msgid "SecurityOrchestration|Edit scan execution policy" msgstr "編輯掃描執行政策" +msgid "SecurityOrchestration|Edit vulnerability management policy" +msgstr "" + msgid "SecurityOrchestration|Empty policy name" msgstr "空政策名稱" @@ -52911,7 +52959,7 @@ msgstr "掃描將自動選擇一個執行器 (Runner) 執行,因為 Runner 上 msgid "SecurityOrchestration|Schedule a new" msgstr "" -msgid "SecurityOrchestration|Schedule a pipeline on a %{cadenceSelector} cadence for branches" +msgid "SecurityOrchestration|Schedule to run for %{branchSelector}" msgstr "" msgid "SecurityOrchestration|Scope" @@ -53271,6 +53319,9 @@ msgstr "誤報" msgid "SecurityOrchestration|are not false positives" msgstr "非誤報" +msgid "SecurityOrchestration|at the following times: %{cadenceSelector}, start at %{start}, run for: %{duration}, and timezone is %{timezoneSelector}" +msgstr "" + msgid "SecurityOrchestration|branch" msgstr "分支" @@ -58161,6 +58212,9 @@ msgstr "身份驗證令牌。" msgid "The base URL to the Harbor instance linked to the GitLab project. For example, `https://demo.goharbor.io`." msgstr "連結到 GitLab 專案的 Harbor 執行個體基本 URL,例如,「https://demo.goharbor.io」。" +msgid "The blob is too large to render" +msgstr "" + msgid "The branch for this project has no active pipeline configuration." msgstr "此專案的分支沒有啟用的流水線設定。" @@ -60794,6 +60848,9 @@ msgstr "" msgid "Todos|When to-do items are snoozed, they will appear here." msgstr "" +msgid "Todos|Wiki page" +msgstr "" + msgid "Todos|Work item" msgstr "" @@ -64702,6 +64759,9 @@ msgstr "" msgid "Vulnerability|View training" msgstr "查看培訓" +msgid "Vulnerability|Vulnerability identifiers" +msgstr "" + msgid "Vulnerability|Vulnerable class:" msgstr "漏洞類別:" diff --git a/spec/factories/packages/conan/package_references.rb b/spec/factories/packages/conan/package_references.rb index 792cd43b097..dc9553b2b04 100644 --- a/spec/factories/packages/conan/package_references.rb +++ b/spec/factories/packages/conan/package_references.rb @@ -9,7 +9,7 @@ FactoryBot.define do { settings: { os: 'Linux', arch: 'x86_64' }, requires: ['libA/1.0@user/testing'], - options: { fPIC: true }, + options: { fPIC: 'True' }, otherProperties: 'some_value' } end diff --git a/spec/factories/packages/package_files.rb b/spec/factories/packages/package_files.rb index 7c178322681..efbc8afb55a 100644 --- a/spec/factories/packages/package_files.rb +++ b/spec/factories/packages/package_files.rb @@ -84,11 +84,16 @@ FactoryBot.define do end end - file_fixture { 'spec/fixtures/packages/conan/package_files/conaninfo.txt' } + transient do + conaninfo_fixture { 'conaninfo.txt' } + fixture_path { "spec/fixtures/packages/conan/package_files/#{conaninfo_fixture}" } + end + + file_fixture { fixture_path } file_name { 'conaninfo.txt' } file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' } file_md5 { '12345abcde' } - size { 400.kilobytes } + size { File.size(fixture_path) } end trait(:conan_package) do diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb index 23659beb821..989072ba1fb 100644 --- a/spec/features/snippets/user_creates_snippet_spec.rb +++ b/spec/features/snippets/user_creates_snippet_spec.rb @@ -16,6 +16,8 @@ RSpec.describe 'User creates snippet', :js, feature_category: :source_code_manag let(:snippet_title_field) { 'snippet-title' } before do + create(:organization, :default) + sign_in(user) visit new_snippet_path diff --git a/spec/fixtures/packages/conan/package_files/conaninfo.txt b/spec/fixtures/packages/conan/package_files/conaninfo.txt index 2a02515a19b..2da2c19cf94 100644 --- a/spec/fixtures/packages/conan/package_files/conaninfo.txt +++ b/spec/fixtures/packages/conan/package_files/conaninfo.txt @@ -7,7 +7,9 @@ os=Macos [requires] - + cli11/1.Y.Z + fmt/7.Y.Z + prometheus-cpp/1.Y.Z [options] shared=False @@ -21,7 +23,13 @@ os=Macos [full_requires] - + civetweb/1.15:77e8df9f2be98ef80d2a9f31ea49eb14597b20b0 + cli11/1.9.1:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 + fmt/7.1.3:80138d4a58def120da0b8c9199f2b7a4e464a85b + libcurl/7.86.0:a097455223234e250d01a2687cf7c15446fbd5d5 + openssl/1.1.1s:6841fe8f0f22f6fa260da36a43a94ab525c7ed8d + prometheus-cpp/1.1.0:b39e1754fc610f750a6d595455854696692ec5bc + zlib/1.2.13:6841fe8f0f22f6fa260da36a43a94ab525c7ed8d [full_options] shared=False @@ -30,4 +38,5 @@ b4b91125b36b40a7076a98310588f820 [env] - + CC=clang-10 + CXX=clang++-10 diff --git a/spec/fixtures/packages/conan/package_files/conaninfo_invalid_line.txt b/spec/fixtures/packages/conan/package_files/conaninfo_invalid_line.txt new file mode 100644 index 00000000000..156f3a59143 --- /dev/null +++ b/spec/fixtures/packages/conan/package_files/conaninfo_invalid_line.txt @@ -0,0 +1,7 @@ +[settings] + arch=x86_64 + test= + another_test=123 + +[recipe_hash] + abc123def456 diff --git a/spec/fixtures/packages/conan/package_files/conaninfo_invalid_recipe_hash.txt b/spec/fixtures/packages/conan/package_files/conaninfo_invalid_recipe_hash.txt new file mode 100644 index 00000000000..1d6b9d901bc --- /dev/null +++ b/spec/fixtures/packages/conan/package_files/conaninfo_invalid_recipe_hash.txt @@ -0,0 +1,9 @@ +[settings] + arch=x86_64 + +[recipe_hash] + abc123def456 + another_hash_line_not_allowed + +[env] + CC=clang-10 diff --git a/spec/fixtures/packages/conan/package_files/conaninfo_invalid_section.txt b/spec/fixtures/packages/conan/package_files/conaninfo_invalid_section.txt new file mode 100644 index 00000000000..9252abf88aa --- /dev/null +++ b/spec/fixtures/packages/conan/package_files/conaninfo_invalid_section.txt @@ -0,0 +1,24 @@ +[requires] +some_package/1.0.0 + +[options] +shared=False + +[full_settings] + arch=x86_64 + build_type=Release + +[full_requires] +some_package/1.0.0 + +[full_options] + shared=False + +[recipe_hash] + a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 + +[missing_bracket + this_section_is_not_properly_closed + +[env] + SOME_ENV_VAR=value diff --git a/spec/fixtures/packages/conan/package_files/conaninfo_minimal.txt b/spec/fixtures/packages/conan/package_files/conaninfo_minimal.txt new file mode 100644 index 00000000000..a034f9243fe --- /dev/null +++ b/spec/fixtures/packages/conan/package_files/conaninfo_minimal.txt @@ -0,0 +1,21 @@ +[settings] + arch=x86_64 + build_type=Release + compiler=apple-clang + compiler.libcxx=libc++ + compiler.version=10.0 + os=Macos + +[requires] + +[options] + +[full_settings] + +[full_requires] + +[full_options] + +[recipe_hash] + +[env] diff --git a/spec/fixtures/packages/conan/parsed_conaninfo/conaninfo.json b/spec/fixtures/packages/conan/parsed_conaninfo/conaninfo.json new file mode 100644 index 00000000000..e090f09a98a --- /dev/null +++ b/spec/fixtures/packages/conan/parsed_conaninfo/conaninfo.json @@ -0,0 +1,19 @@ +{ + "settings": { + "arch": "x86_64", + "build_type": "Release", + "compiler": "apple-clang", + "compiler.libcxx": "libc++", + "compiler.version": "10.0", + "os": "Macos" + }, + "requires": [ + "cli11/1.Y.Z", + "fmt/7.Y.Z", + "prometheus-cpp/1.Y.Z" + ], + "options": { + "shared": "False" + }, + "recipe_hash": "b4b91125b36b40a7076a98310588f820" +} diff --git a/spec/fixtures/packages/conan/parsed_conaninfo/conaninfo_minimal.json b/spec/fixtures/packages/conan/parsed_conaninfo/conaninfo_minimal.json new file mode 100644 index 00000000000..f13ad503c28 --- /dev/null +++ b/spec/fixtures/packages/conan/parsed_conaninfo/conaninfo_minimal.json @@ -0,0 +1,10 @@ +{ + "settings": { + "arch": "x86_64", + "build_type": "Release", + "compiler": "apple-clang", + "compiler.libcxx": "libc++", + "compiler.version": "10.0", + "os": "Macos" + } +} diff --git a/spec/frontend/notes/components/note_body_spec.js b/spec/frontend/notes/components/note_body_spec.js index 6cb8474537a..54c57678e39 100644 --- a/spec/frontend/notes/components/note_body_spec.js +++ b/spec/frontend/notes/components/note_body_spec.js @@ -167,3 +167,129 @@ describe('issue_note_body component', () => { ); }); }); + +describe('duo code review feedback text', () => { + const createMockStoreWithDiscussion = (discussionId, discussionNotes) => { + return new Vuex.Store({ + getters: { + getDiscussion: () => (id) => { + if (id === discussionId) { + return { notes: discussionNotes }; + } + return {}; + }, + suggestionsCount: () => 0, + getSuggestionsFilePaths: () => [], + }, + modules: { + diffs: { + namespaced: true, + getters: { + suggestionCommitMessage: () => () => '', + }, + }, + notes: { + state: { batchSuggestionsInfo: [] }, + }, + page: { + state: { failedToLoadMetadata: false }, + }, + }, + }); + }; + + const createDuoNote = (props = {}) => ({ + ...note, + id: '1', + type: 'DiffNote', + discussion_id: 'discussion1', + author: { + ...note.author, + user_type: 'duo_code_review_bot', + }, + ...props, + }); + + it('renders feedback text for the first DiffNote from GitLabDuo', () => { + const duoNote = createDuoNote(); + const mockStore = createMockStoreWithDiscussion('discussion1', [duoNote]); + + const wrapper = createComponent({ + props: { note: duoNote }, + store: mockStore, + }); + + const feedbackDiv = wrapper.find('.gl-text-md.gl-mt-4.gl-text-gray-500'); + expect(feedbackDiv.exists()).toBe(true); + }); + + it('does not render feedback text for non-DiffNote from GitLabDuo', () => { + const duoNote = createDuoNote({ type: 'DiscussionNote' }); + + const wrapper = createComponent({ + props: { note: duoNote }, + }); + + const feedbackDiv = wrapper.find('.gl-text-md.gl-mt-4.gl-text-gray-500'); + expect(feedbackDiv.exists()).toBe(false); + }); + + it('does not render feedback text for follow-up DiffNote from GitLabDuo', () => { + const duoNote = createDuoNote({ id: '2' }); + const mockStore = createMockStoreWithDiscussion('discussion1', [ + { id: '1' }, // First note has different ID + duoNote, + ]); + + const wrapper = createComponent({ + props: { note: duoNote }, + store: mockStore, + }); + + const feedbackDiv = wrapper.find('.gl-text-md.gl-mt-4.gl-text-gray-500'); + expect(feedbackDiv.exists()).toBe(false); + }); + + it('shows default awards list with thumbsup and thumbsdown for first DiffNote from GitLabDuo', () => { + const duoNote = createDuoNote(); + const mockStore = createMockStoreWithDiscussion('discussion1', [duoNote]); + + const wrapper = createComponent({ + props: { note: duoNote }, + store: mockStore, + }); + + const awardsList = wrapper.findComponent(NoteAwardsList); + expect(awardsList.exists()).toBe(true); + expect(awardsList.props('defaultAwards')).toEqual(['thumbsup', 'thumbsdown']); + }); + + it('uses empty default awards list for non-Duo comments', () => { + const regularNote = { + ...note, + id: '1', + author: { + ...note.author, + user_type: 'human', + }, + }; + + const wrapper = createComponent({ + props: { note: regularNote }, + }); + + const awardsList = wrapper.findComponent(NoteAwardsList); + expect(awardsList.props('defaultAwards')).toEqual([]); + }); + + describe('duoFeedbackText computed property', () => { + it('returns the expected feedback text', () => { + const wrapper = createComponent(); + + const result = wrapper.vm.duoFeedbackText; + expect(result).toContain('Rate this response'); + expect(result).toContain('@GitLabDuo'); + expect(result).toContain('in reply for more questions'); + }); + }); +}); diff --git a/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js b/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js index 37f97aa0420..30ff4d6e473 100644 --- a/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js +++ b/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js @@ -221,7 +221,7 @@ describe('tags list row', () => { expect(popoverText).toContain('This tag is protected'); expect(popoverText).toContain('Minimum role to push:'); expect(popoverText).toContain('Minimum role to delete:'); - expect(popoverText).toContain('MAINTAINER'); + expect(popoverText).toContain('Maintainer'); }); }); diff --git a/spec/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_organization_id_spec.rb b/spec/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_organization_id_spec.rb new file mode 100644 index 00000000000..7c14ed1c0a9 --- /dev/null +++ b/spec/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_organization_id_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::BackgroundMigration::BackfillSnippetRepositoriesSnippetOrganizationId, + feature_category: :source_code_management, + schema: 20241211134711 do + include_examples 'desired sharding key backfill job' do + let(:batch_table) { :snippet_repositories } + let(:backfill_column) { :snippet_organization_id } + let(:batch_column) { :snippet_id } + let(:backfill_via_table) { :snippets } + let(:backfill_via_column) { :organization_id } + let(:backfill_via_foreign_key) { :snippet_id } + end +end diff --git a/spec/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_project_id_spec.rb b/spec/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_project_id_spec.rb new file mode 100644 index 00000000000..f592656e039 --- /dev/null +++ b/spec/lib/gitlab/background_migration/backfill_snippet_repositories_snippet_project_id_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::BackgroundMigration::BackfillSnippetRepositoriesSnippetProjectId, + feature_category: :source_code_management, + schema: 20241211134706 do + include_examples 'desired sharding key backfill job' do + let(:batch_table) { :snippet_repositories } + let(:backfill_column) { :snippet_project_id } + let(:batch_column) { :snippet_id } + let(:backfill_via_table) { :snippets } + let(:backfill_via_column) { :project_id } + let(:backfill_via_foreign_key) { :snippet_id } + end +end diff --git a/spec/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_organization_id_spec.rb b/spec/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_organization_id_spec.rb new file mode 100644 index 00000000000..2c7b28345e5 --- /dev/null +++ b/spec/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_organization_id_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::BackgroundMigration::BackfillSnippetUserMentionsSnippetOrganizationId, + feature_category: :source_code_management, + schema: 20250209004154 do + include_examples 'desired sharding key backfill job' do + let(:batch_table) { :snippet_user_mentions } + let(:backfill_column) { :snippet_organization_id } + let(:backfill_via_table) { :snippets } + let(:backfill_via_column) { :organization_id } + let(:backfill_via_foreign_key) { :snippet_id } + end +end diff --git a/spec/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_project_id_spec.rb b/spec/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_project_id_spec.rb new file mode 100644 index 00000000000..afbbc175459 --- /dev/null +++ b/spec/lib/gitlab/background_migration/backfill_snippet_user_mentions_snippet_project_id_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::BackgroundMigration::BackfillSnippetUserMentionsSnippetProjectId, + feature_category: :source_code_management, + schema: 20250209004149 do + include_examples 'desired sharding key backfill job' do + let(:batch_table) { :snippet_user_mentions } + let(:backfill_column) { :snippet_project_id } + let(:backfill_via_table) { :snippets } + let(:backfill_via_column) { :project_id } + let(:backfill_via_foreign_key) { :snippet_id } + end +end diff --git a/spec/lib/gitlab/background_migration/remove_orphaned_vulnerability_notes_batched_migration_spec.rb b/spec/lib/gitlab/background_migration/remove_orphaned_vulnerability_notes_batched_migration_spec.rb new file mode 100644 index 00000000000..db203c7dcab --- /dev/null +++ b/spec/lib/gitlab/background_migration/remove_orphaned_vulnerability_notes_batched_migration_spec.rb @@ -0,0 +1,107 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::BackgroundMigration::RemoveOrphanedVulnerabilityNotesBatchedMigration, feature_category: :vulnerability_management do + let(:migration) do + described_class.new( + batch_table: 'notes', + batch_column: 'id', + sub_batch_size: 100, + pause_ms: 100, + connection: ActiveRecord::Base.connection + ) + end + + let(:user_id) do + table(:users).create!(email: 'author@example.com', notification_email: 'author@example.com', name: 'Author', + username: 'author', projects_limit: 1000).id + end + + let(:organization_id) do + table(:organizations).create!( + name: 'Organization', + path: 'organization').id + end + + let(:namespace_id) do + table(:namespaces).create!( + name: 'Namespace', + path: 'namespace', + organization_id: organization_id).id + end + + let(:project_namespace_id) do + table(:namespaces).create!( + name: 'Project Namespace', + path: 'project-namespace', + organization_id: organization_id).id + end + + let(:project_id) do + table(:projects).create!( + name: 'Project', + path: 'project', + namespace_id: namespace_id, + organization_id: organization_id, + project_namespace_id: project_namespace_id + ).id + end + + let(:note_attributes) do + { + author_id: user_id, + project_id: project_id, + namespace_id: namespace_id, + created_at: Time.current, + updated_at: Time.current + } + end + + before do + allow(Vulnerability).to receive_message_chain(:where, :pluck).and_return([1, 2, 3]) + end + + def create_note(noteable_id:, noteable_type:) + table(:notes).create!( + note: 'Note Content', + noteable_type: noteable_type, + noteable_id: noteable_id, + **note_attributes + ) + end + + describe 'orphaned notes removal' do + # These notes are created before the test runs + let!(:invalid_note_1) { create_note(noteable_id: 4, noteable_type: 'Vulnerability') } + + let!(:invalid_note_2) { create_note(noteable_id: 28, noteable_type: 'Vulnerability') } + + it 'removes orphaned Vulnerability notes' do + expect { migration.perform }.to change { table(:notes).count }.by(-2) + expect(table(:notes).find_by(id: invalid_note_1.id)).to be_blank + expect(table(:notes).find_by(id: invalid_note_2.id)).to be_blank + end + end + + describe 'valid notes retention' do + let!(:valid_note) { create_note(noteable_id: 1, noteable_type: 'Vulnerability') } + + it 'retains valid Vulnerability notes' do + expect { migration.perform }.not_to change { table(:notes).count } + expect(table(:notes).find_by(id: valid_note.id)).to be_present + end + end + + describe 'non-vulnerability notes' do + let!(:issue_note_nil_id) { create_note(noteable_id: nil, noteable_type: 'Issue') } + + let!(:issue_note_with_id) { create_note(noteable_id: 2, noteable_type: 'Issue') } + + it 'does not remove non-Vulnerability notes' do + expect { migration.perform }.not_to change { table(:notes).count } + expect(table(:notes).find_by(id: issue_note_nil_id.id)).to be_present + expect(table(:notes).find_by(id: issue_note_with_id.id)).to be_present + end + end +end diff --git a/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb index be432859afb..3bbc675c248 100644 --- a/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb +++ b/spec/lib/gitlab/ci/pipeline/chain/config/content_spec.rb @@ -177,7 +177,7 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: : subject.perform! expect(pipeline.config_source).to eq 'repository_source' - expect(pipeline.pipeline_config.content).to eq(config_content_result) + expect(pipeline.pipeline_config).to be_nil expect(command.config_content).to eq(config_content_result) expect(command.pipeline_config.internal_include_prepended?).to eq(true) expect(command.pipeline_config.inputs_for_pipeline_creation).to eq({}) @@ -244,7 +244,7 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Config::Content, feature_category: : subject.perform! expect(pipeline.config_source).to eq 'parameter_source' - expect(pipeline.pipeline_config.content).to eq(content) + expect(pipeline.pipeline_config).to be_nil expect(command.config_content).to eq(content) expect(command.pipeline_config.internal_include_prepended?).to eq(false) expect(command.pipeline_config.inputs_for_pipeline_creation).to eq(inputs) diff --git a/spec/lib/gitlab/database/sharding_key_spec.rb b/spec/lib/gitlab/database/sharding_key_spec.rb index aaad4a76fa4..65026b133f0 100644 --- a/spec/lib/gitlab/database/sharding_key_spec.rb +++ b/spec/lib/gitlab/database/sharding_key_spec.rb @@ -211,6 +211,7 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do # To add a table to this list, create an issue under https://gitlab.com/groups/gitlab-org/-/epics/11670. # Use https://gitlab.com/gitlab-org/gitlab/-/issues/476206 as an example. work_in_progress = { + "snippet_user_mentions" => "https://gitlab.com/gitlab-org/gitlab/-/issues/517825", "bulk_import_failures" => "https://gitlab.com/gitlab-org/gitlab/-/issues/517824", "organization_users" => 'https://gitlab.com/gitlab-org/gitlab/-/issues/476210', "push_rules" => 'https://gitlab.com/gitlab-org/gitlab/-/issues/476212', diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 524010d1a8e..e39003d2de3 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -551,6 +551,7 @@ protected_branches: - external_status_checks - required_code_owners_sections - squash_option +- merge_request_approval_setting protected_tags: - project - create_access_levels diff --git a/spec/lib/gitlab/redis/cluster_sessions_spec.rb b/spec/lib/gitlab/redis/cluster_sessions_spec.rb new file mode 100644 index 00000000000..e4cfce05663 --- /dev/null +++ b/spec/lib/gitlab/redis/cluster_sessions_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Redis::ClusterSessions, feature_category: :scalability do + include_examples "redis_new_instance_shared_examples", 'cluster_sessions', Gitlab::Redis::SharedState +end diff --git a/spec/lib/gitlab/redis/sessions_spec.rb b/spec/lib/gitlab/redis/sessions_spec.rb index 6ff261bb475..0cfba8ed9a0 100644 --- a/spec/lib/gitlab/redis/sessions_spec.rb +++ b/spec/lib/gitlab/redis/sessions_spec.rb @@ -3,6 +3,7 @@ require 'spec_helper' RSpec.describe Gitlab::Redis::Sessions, feature_category: :shared do + include_examples "multi_store_wrapper_shared_examples" include_examples "redis_new_instance_shared_examples", 'sessions', Gitlab::Redis::SharedState describe '#store' do @@ -13,4 +14,9 @@ RSpec.describe Gitlab::Redis::Sessions, feature_category: :shared do expect([::Redis::Store, ::Gitlab::Redis::ClusterStore].include?(store.class)).to eq(true) end end + + it 'migrates from self to ClusterSessions' do + expect(described_class.multistore.secondary_pool).to eq(described_class.pool) + expect(described_class.multistore.primary_pool).to eq(Gitlab::Redis::ClusterSessions.pool) + end end diff --git a/spec/migrations/20241211134710_queue_backfill_snippet_repositories_snippet_project_id_spec.rb b/spec/migrations/20241211134710_queue_backfill_snippet_repositories_snippet_project_id_spec.rb new file mode 100644 index 00000000000..42dcb11edae --- /dev/null +++ b/spec/migrations/20241211134710_queue_backfill_snippet_repositories_snippet_project_id_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe QueueBackfillSnippetRepositoriesSnippetProjectId, feature_category: :source_code_management do + let!(:batched_migration) { described_class::MIGRATION } + + it 'schedules a new batched migration' do + reversible_migration do |migration| + migration.before -> { + expect(batched_migration).not_to have_scheduled_batched_migration + } + + migration.after -> { + expect(batched_migration).to have_scheduled_batched_migration( + table_name: :snippet_repositories, + column_name: :snippet_id, + interval: described_class::DELAY_INTERVAL, + batch_size: described_class::BATCH_SIZE, + sub_batch_size: described_class::SUB_BATCH_SIZE, + gitlab_schema: :gitlab_main_cell, + job_arguments: [ + :snippet_project_id, + :snippets, + :project_id, + :snippet_id + ] + ) + } + end + end +end diff --git a/spec/migrations/20241211134715_queue_backfill_snippet_repositories_snippet_organization_id_spec.rb b/spec/migrations/20241211134715_queue_backfill_snippet_repositories_snippet_organization_id_spec.rb new file mode 100644 index 00000000000..0f49a34a42f --- /dev/null +++ b/spec/migrations/20241211134715_queue_backfill_snippet_repositories_snippet_organization_id_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe QueueBackfillSnippetRepositoriesSnippetOrganizationId, feature_category: :source_code_management do + let!(:batched_migration) { described_class::MIGRATION } + + it 'schedules a new batched migration' do + reversible_migration do |migration| + migration.before -> { + expect(batched_migration).not_to have_scheduled_batched_migration + } + + migration.after -> { + expect(batched_migration).to have_scheduled_batched_migration( + table_name: :snippet_repositories, + column_name: :snippet_id, + interval: described_class::DELAY_INTERVAL, + batch_size: described_class::BATCH_SIZE, + sub_batch_size: described_class::SUB_BATCH_SIZE, + gitlab_schema: :gitlab_main_cell, + job_arguments: [ + :snippet_organization_id, + :snippets, + :organization_id, + :snippet_id + ] + ) + } + end + end +end diff --git a/spec/migrations/20250209004153_queue_backfill_snippet_user_mentions_snippet_project_id_spec.rb b/spec/migrations/20250209004153_queue_backfill_snippet_user_mentions_snippet_project_id_spec.rb new file mode 100644 index 00000000000..a3e22e5725e --- /dev/null +++ b/spec/migrations/20250209004153_queue_backfill_snippet_user_mentions_snippet_project_id_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe QueueBackfillSnippetUserMentionsSnippetProjectId, feature_category: :source_code_management do + let!(:batched_migration) { described_class::MIGRATION } + + it 'schedules a new batched migration' do + reversible_migration do |migration| + migration.before -> { + expect(batched_migration).not_to have_scheduled_batched_migration + } + + migration.after -> { + expect(batched_migration).to have_scheduled_batched_migration( + table_name: :snippet_user_mentions, + column_name: :id, + interval: described_class::DELAY_INTERVAL, + batch_size: described_class::BATCH_SIZE, + sub_batch_size: described_class::SUB_BATCH_SIZE, + gitlab_schema: :gitlab_main_cell, + job_arguments: [ + :snippet_project_id, + :snippets, + :project_id, + :snippet_id + ] + ) + } + end + end +end diff --git a/spec/migrations/20250209004158_queue_backfill_snippet_user_mentions_snippet_organization_id_spec.rb b/spec/migrations/20250209004158_queue_backfill_snippet_user_mentions_snippet_organization_id_spec.rb new file mode 100644 index 00000000000..5e9a5b82ff3 --- /dev/null +++ b/spec/migrations/20250209004158_queue_backfill_snippet_user_mentions_snippet_organization_id_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe QueueBackfillSnippetUserMentionsSnippetOrganizationId, feature_category: :source_code_management do + let!(:batched_migration) { described_class::MIGRATION } + + it 'schedules a new batched migration' do + reversible_migration do |migration| + migration.before -> { + expect(batched_migration).not_to have_scheduled_batched_migration + } + + migration.after -> { + expect(batched_migration).to have_scheduled_batched_migration( + table_name: :snippet_user_mentions, + column_name: :id, + interval: described_class::DELAY_INTERVAL, + batch_size: described_class::BATCH_SIZE, + sub_batch_size: described_class::SUB_BATCH_SIZE, + gitlab_schema: :gitlab_main_cell, + job_arguments: [ + :snippet_organization_id, + :snippets, + :organization_id, + :snippet_id + ] + ) + } + end + end +end diff --git a/spec/migrations/20250304184254_queue_remove_orphaned_vulnerability_notes_batched_migration_spec.rb b/spec/migrations/20250304184254_queue_remove_orphaned_vulnerability_notes_batched_migration_spec.rb new file mode 100644 index 00000000000..607bd3179bd --- /dev/null +++ b/spec/migrations/20250304184254_queue_remove_orphaned_vulnerability_notes_batched_migration_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe QueueRemoveOrphanedVulnerabilityNotesBatchedMigration, migration: :gitlab_main, feature_category: :vulnerability_management do + let(:migration) { described_class.new } + let(:batched_migration) { described_class::MIGRATION } + + it 'schedules a new batched migration' do + reversible_migration do |migration| + migration.before -> { + expect(batched_migration).not_to have_scheduled_batched_migration + } + + migration.after -> { + expect(batched_migration).to have_scheduled_batched_migration( + gitlab_schema: :gitlab_main, + table_name: :notes, + column_name: :id, + interval: described_class::DELAY_INTERVAL, + batch_size: described_class::BATCH_SIZE, + sub_batch_size: described_class::SUB_BATCH_SIZE + ) + } + end + end + + it 'uses the correct migration class' do + expect(described_class::MIGRATION).to eq('RemoveOrphanedVulnerabilityNotesBatchedMigration') + end + + it 'sets the correct delay interval' do + expect(described_class::DELAY_INTERVAL).to eq(2.minutes) + end + + it 'sets the correct batch size' do + expect(described_class::BATCH_SIZE).to eq(1000) + end + + it 'sets the correct sub-batch size' do + expect(described_class::SUB_BATCH_SIZE).to eq(100) + end +end diff --git a/spec/models/packages/conan/package_reference_spec.rb b/spec/models/packages/conan/package_reference_spec.rb index 6ad31a00f49..a116879327c 100644 --- a/spec/models/packages/conan/package_reference_spec.rb +++ b/spec/models/packages/conan/package_reference_spec.rb @@ -118,12 +118,12 @@ RSpec.describe Packages::Conan::PackageReference, type: :model, feature_category end context 'with invalid conan info' do - let(:info) { { invalid_field: 'some_value' } } + let(:info) { { settings: 'incorrect_value' } } it 'is invalid', :aggregate_failures do expect(package_reference).not_to be_valid expect(package_reference.errors[:info]).to include( - 'object at root is missing required properties: settings, requires, options') + 'value at `/settings` is not an object') end end diff --git a/spec/requests/api/graphql/mutations/snippets/create_spec.rb b/spec/requests/api/graphql/mutations/snippets/create_spec.rb index 9f9b312f12e..a4b65e658a1 100644 --- a/spec/requests/api/graphql/mutations/snippets/create_spec.rb +++ b/spec/requests/api/graphql/mutations/snippets/create_spec.rb @@ -37,6 +37,10 @@ RSpec.describe 'Creating a Snippet', feature_category: :source_code_management d graphql_mutation_response(:create_snippet) end + before do + create(:organization, :default) + end + subject { post_graphql_mutation(mutation, current_user: current_user) } context 'when the user does not have permission' do diff --git a/spec/services/packages/conan/create_package_file_service_spec.rb b/spec/services/packages/conan/create_package_file_service_spec.rb index fc19aaabe8a..063ed6be211 100644 --- a/spec/services/packages/conan/create_package_file_service_spec.rb +++ b/spec/services/packages/conan/create_package_file_service_spec.rb @@ -213,5 +213,68 @@ RSpec.describe Packages::Conan::CreatePackageFileService, feature_category: :pac expect { response }.not_to change { Packages::Conan::PackageReference.count } end end + + context 'queueing the conan package file processing worker' do + before do + allow(::Packages::Conan::ProcessPackageFileWorker).to receive(:perform_async) + end + + let(:params) do + { + file_name: file_name, + 'file.md5': '12345', + 'file.sha1': '54321', + 'file.size': '128', + 'file.type': 'txt', + recipe_revision: '0', + package_revision: '0', + conan_package_reference: '123456789', + conan_file_type: :package_file + }.with_indifferent_access + end + + context 'when the filename is conaninfo.txt' do + let(:file_name) { 'conaninfo.txt' } + + let(:file) do + fixture_file_upload('spec/fixtures/packages/conan/package_files/conaninfo.txt', 'text/plain') + end + + context 'when the feature flag is enabled' do + before do + stub_feature_flags(parse_conan_metadata_on_upload: true) + end + + it 'queues the Conan package file processing worker' do + expect(response).to be_success + expect(::Packages::Conan::ProcessPackageFileWorker).to have_received(:perform_async) + .with(response[:package_file].id) + end + end + + context 'when the feature flag is disabled' do + before do + stub_feature_flags(parse_conan_metadata_on_upload: false) + end + + it 'does not queue the Conan package file processing worker' do + expect(response).to be_success + expect(::Packages::Conan::ProcessPackageFileWorker).not_to have_received(:perform_async) + end + end + end + + context 'when the filename is not conaninfo.txt' do + include_context 'with temp file setup' + + let(:file_name) { 'not_conaninfo.txt' } + + it 'does not queue the Conan package file processing worker' do + expect(::Packages::Conan::ProcessPackageFileWorker).not_to receive(:perform_async) + + response + end + end + end end end diff --git a/spec/services/packages/conan/metadata_extraction_service_spec.rb b/spec/services/packages/conan/metadata_extraction_service_spec.rb new file mode 100644 index 00000000000..d85785af2d7 --- /dev/null +++ b/spec/services/packages/conan/metadata_extraction_service_spec.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Packages::Conan::MetadataExtractionService, feature_category: :package_registry do + using RSpec::Parameterized::TableSyntax + + let_it_be(:package_reference) { create(:conan_package_reference, info: {}) } + let_it_be(:package_file) do + create(:conan_package_file, :conan_package_info, conan_package_reference: package_reference) + end + + describe '#execute' do + subject(:service) { described_class.new(package_file).execute } + + describe 'parsing conaninfo files' do + let(:expected_metadata) do + Gitlab::Json.parse(fixture_file_upload("spec/fixtures/packages/conan/parsed_conaninfo/#{expected_json}").read) + end + + where(:conaninfo_fixture, :expected_json) do + 'conaninfo.txt' | 'conaninfo.json' + 'conaninfo_minimal.txt' | 'conaninfo_minimal.json' + end + + with_them do + before do + package_file.file = fixture_file_upload("spec/fixtures/packages/conan/package_files/#{conaninfo_fixture}") + end + + it 'updates the package reference info', :aggregate_failures do + expect { service } + .to change { package_file.conan_file_metadatum.package_reference.reload.info } + .from({}) + .to(expected_metadata) + end + end + end + + context 'with database error' do + # rubocop:disable Layout/LineLength -- Required for formatting of table + where(:database_error_message, :expected_error_message) do + 'Info conaninfo is too large. Maximum size is 20000 characters' | 'conaninfo.txt file too large' + 'Test error' | 'conaninfo.txt metadata failedto be saved: Test error' + end + # rubocop:enable Layout/LineLength + + with_them do + before do + allow(package_reference).to receive(:update!).and_raise(ActiveRecord::RecordInvalid.new(package_reference)) + allow(package_reference).to receive_message_chain(:errors, + :full_messages).and_return([database_error_message]) + end + + it 'raises ExtractionError and does not update package reference info' do + expect { service } + .to raise_error(described_class::ExtractionError, expected_error_message) + .and not_change { package_reference.reload.info } + end + end + end + + context 'with invalid conaninfo.txt' do + # rubocop:disable Layout/LineLength -- Required for formatting of table + where(:conaninfo_fixture, :expected_error) do + 'conaninfo_invalid_line.txt' | 'Error while parsing conaninfo.txt: Invalid key-value line: test=' + 'conaninfo_invalid_recipe_hash.txt' | 'Error while parsing conaninfo.txt: The recipe_hash section cannot have multiple lines' + 'conaninfo_invalid_section.txt' | 'Error while parsing conaninfo.txt: Invalid section header: [missing_bracket' + end + # rubocop:enable Layout/LineLength + + with_them do + before do + package_file.file = fixture_file_upload("spec/fixtures/packages/conan/package_files/#{conaninfo_fixture}") + end + + it 'raises ExtractionError and does not update package reference info' do + expect { service } + .to raise_error(described_class::ExtractionError, expected_error) + .and not_change { package_file.conan_file_metadatum.package_reference.reload.info } + end + end + end + end +end diff --git a/spec/services/projects/readme_renderer_service_spec.rb b/spec/services/projects/readme_renderer_service_spec.rb index b9788832db6..b54890262ec 100644 --- a/spec/services/projects/readme_renderer_service_spec.rb +++ b/spec/services/projects/readme_renderer_service_spec.rb @@ -26,7 +26,7 @@ RSpec.describe Projects::ReadmeRendererService, '#execute', feature_category: :g ## Add your files - [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files - - [ ] [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + - [ ] [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command: ``` cd existing_repo diff --git a/spec/services/snippets/create_service_spec.rb b/spec/services/snippets/create_service_spec.rb index d8fe2ac31c0..beb07e37946 100644 --- a/spec/services/snippets/create_service_spec.rb +++ b/spec/services/snippets/create_service_spec.rb @@ -25,6 +25,10 @@ RSpec.describe Snippets::CreateService, feature_category: :source_code_managemen let(:snippet) { subject.payload[:snippet] } + before do + create(:organization, :default) + end + shared_examples 'a service that creates a snippet' do it 'creates a snippet with the provided attributes' do expect(snippet.title).to eq(opts[:title]) diff --git a/spec/support/shared_examples/models/concerns/web_hooks/web_hook_shared_examples.rb b/spec/support/shared_examples/models/concerns/web_hooks/web_hook_shared_examples.rb index 4a31a208ad0..7ec0564eafb 100644 --- a/spec/support/shared_examples/models/concerns/web_hooks/web_hook_shared_examples.rb +++ b/spec/support/shared_examples/models/concerns/web_hooks/web_hook_shared_examples.rb @@ -18,6 +18,8 @@ RSpec.shared_examples 'a webhook' do |factory:, auto_disabling: true| describe 'validations' do it { is_expected.to validate_presence_of(:url) } it { is_expected.to validate_length_of(:custom_webhook_template).is_at_most(4096) } + it { is_expected.to validate_length_of(:name).is_at_most(255) } + it { is_expected.to validate_length_of(:description).is_at_most(2048) } describe 'url_variables' do it { is_expected.to allow_value({}).for(:url_variables) } diff --git a/spec/views/shared/snippets/_snippet.html.haml_spec.rb b/spec/views/shared/snippets/_snippet.html.haml_spec.rb index ae33821c79a..ec0116e4bbf 100644 --- a/spec/views/shared/snippets/_snippet.html.haml_spec.rb +++ b/spec/views/shared/snippets/_snippet.html.haml_spec.rb @@ -20,8 +20,8 @@ RSpec.describe 'shared/snippets/_snippet.html.haml' do render 'shared/snippets/snippet', snippet: snippet - expect(rendered).to have_selector("span.file_count", text: '3') - expect(rendered).to have_selector("span.file_count[title=\"3 files\"]") + expect(rendered).to have_selector(".file_count", text: '3') + expect(rendered).to have_selector(".file_count[title=\"3 files\"]") end it 'renders correct file count and tooltip when file_count is 1' do @@ -29,8 +29,8 @@ RSpec.describe 'shared/snippets/_snippet.html.haml' do render 'shared/snippets/snippet', snippet: snippet - expect(rendered).to have_selector("span.file_count", text: '1') - expect(rendered).to have_selector("span.file_count[title=\"1 file\"]") + expect(rendered).to have_selector(".file_count", text: '1') + expect(rendered).to have_selector(".file_count[title=\"1 file\"]") end it 'does not render file count when file count is 0' do @@ -38,7 +38,7 @@ RSpec.describe 'shared/snippets/_snippet.html.haml' do render 'shared/snippets/snippet', snippet: snippet - expect(rendered).not_to have_selector('span.file_count') + expect(rendered).not_to have_selector('.file_count') end end @@ -48,7 +48,7 @@ RSpec.describe 'shared/snippets/_snippet.html.haml' do render 'shared/snippets/snippet', snippet: snippet - expect(rendered).not_to have_selector('span.file_count') + expect(rendered).not_to have_selector('.file_count') end end @@ -63,7 +63,7 @@ RSpec.describe 'shared/snippets/_snippet.html.haml' do end it 'does not render tooltip' do - expect(rendered).not_to have_selector("span.has-tooltip[title='This snippet is hidden because its author has been banned']") + expect(rendered).not_to have_selector(".has-tooltip[title='This snippet is hidden because its author has been banned']") end end @@ -80,7 +80,7 @@ RSpec.describe 'shared/snippets/_snippet.html.haml' do end it 'renders tooltip' do - expect(rendered).to have_selector("span.has-tooltip[title='This snippet is hidden because its author has been banned']") + expect(rendered).to have_selector(".has-tooltip[title='This snippet is hidden because its author has been banned']") end end end diff --git a/spec/workers/packages/conan/process_package_file_worker_spec.rb b/spec/workers/packages/conan/process_package_file_worker_spec.rb new file mode 100644 index 00000000000..95b248bee9f --- /dev/null +++ b/spec/workers/packages/conan/process_package_file_worker_spec.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Packages::Conan::ProcessPackageFileWorker, type: :worker, feature_category: :package_registry do + let_it_be(:package_file) { create(:conan_package_file, :conan_package_info) } + + let(:worker) { described_class.new } + let(:package_file_id) { package_file.id } + + describe "#perform" do + subject(:perform) { worker.perform(package_file_id) } + + it_behaves_like 'an idempotent worker' do + let(:job_args) { package_file_id } + end + + it_behaves_like 'worker with data consistency', described_class, data_consistency: :sticky + + it 'has :until_executed deduplicate strategy' do + expect(described_class.get_deduplicate_strategy).to eq(:until_executed) + end + + context 'with existing package file' do + it 'calls the MetadataExtractionService' do + expect_next_instance_of(::Packages::Conan::MetadataExtractionService, package_file) do |service| + expect(service).to receive(:execute) + end + + perform + end + + context 'when service raises an error' do + let(:exception) { ::Packages::Conan::MetadataExtractionService::ExtractionError.new('test error') } + let(:logger) { instance_double(::Logger) } + + before do + allow_next_instance_of(::Packages::Conan::MetadataExtractionService) do |service| + allow(service).to receive(:execute).and_raise(exception) + end + allow(logger).to receive(:warn) + allow(worker).to receive(:logger).and_return(logger) + end + + it 'processes the error through error handling concern' do + expect(logger).to receive(:warn).with( + message: "Error processing conaninfo.txt file", + error: exception.message, + package_file: package_file.id, + project_id: package_file.project_id, + package_name: package_file.package.name, + package_version: package_file.package.version + ) + + perform + end + end + end + + context 'with a non-existing package file' do + let(:package_file_id) { non_existing_record_id } + + it 'does not call the service' do + expect(::Packages::Conan::MetadataExtractionService).not_to receive(:new) + + perform + end + end + end +end